2013-01-10 27 views
10

Przeszukałem wiele tematów dotyczących łączenia libpng z moim projektem Android ndk, ale znalazłem właściwą odpowiedź na mój problem i mam nadzieję, że ktoś mi pomoże.Dodawanie libpng w androidowym projekcie ndk

Jest hierarchia mojego projektu:

JNI

different_cpp_files 
different_hpp_files 
Android.mk 
libpng 
    different_cpp_files 
    different_hpp_files 
    Android.mk 

Android.mk w folderze libpng:


LOCAL_PATH:= $(call my-dir) 

include $(CLEAR_VARS) 

LS_C=$(subst $(1)/,,$(wildcard $(1)/*.c)) 

LOCAL_MODULE := png 

LOCAL_SRC_FILES := \ 

$(filter-out example.c pngtest.c,$(call LS_C,$(LOCAL_PATH))) 

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) 

LOCAL_EXPORT_LDLIBS := -lz 

include $(BUILD_STATIC_LIBRARY) 

Przypuszczam, że wszystko jest w porządku tutaj ..

Android.mk w folderze JNI:


LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LS_CPP=$(subst $(1)/,,$(wildcard $(1)/*.cpp)) 

LOCAL_MODULE := pacman 

LOCAL_CFLAGS := -Wno-psabi 

LOCAL_SRC_FILES := $(call LS_CPP,$(LOCAL_PATH)) 

LOCAL_LDLIBS := -landroid -llog -lEGL -lGLESv1_CM -lOpenSLES 

LOCAL_STATIC_LIBRARIES := android_native_app_glue png 

include $(BUILD_SHARED_LIBRARY) 

$(call import-module,android/native_app_glue) 

$(call import-module,libpng) 

Ostatnia linia pokazuje, że mam libpng jak native_app_glue lib (w katalogu źródeł Android NDK) Teraz chcę skompilować libpng z mojego projektu. Co muszę zmienić w pliku Android.mk?

Odpowiedz

15

Mam inną drogę dla ciebie:

  1. pobrać wszystkie pliki stąd i wklej go do nowego folderu w dowolnym miejscu w systemie:
    https://github.com/julienr/libpng-android

  2. przejść do folderu i run:
    ./build.sh

  3. Dostaniesz plik libpng.a w [YOUR_FOLDER]/obj/local/armeabi/libpng.a
    skopiować ten plik do:
    [YOUR_ANDROID_NDK_FOLDER]/platforms/[ALL_FOLDERS_IN_HERE]/arch-arm/usr/lib/

  4. teraz można używać libpng we wszystkich swoich projektach z prostych linii:
    LOCAL_LDLIBS += -lpng

  5. trzeba tylko uwzględnienie tego w swoim CPP:
    #include <png.h>

Baw się dobrze!

+2

Wielkie dzięki za odpowiedź, ale nie jest to, czego chcę. Muszę wysłać mój projekt do firmy. Nie sądzę, że byłoby grzecznie powiedzieć im, co mają zrobić, aby mój projekt działał - mam na myśli kopiowanie plików w android_ndk_folder i tak dalej. Po prostu skompilują go, aby wszystkie potrzebne pliki zostały włączone do projektu. –

+3

To będzie działać tylko dla urządzeń ARM, a następnie tylko starych. Brakuje MIPS, 64-bitowego ARM, x86, 64-bitowego x86, ARM z jednostkami zmiennoprzecinkowymi ... – dascandy

+0

To działało jak czar budujący na devie Widnwos ... działało również ze starszymi wersjami libpng. Testowane z 1.4.19. Po prostu pobierz z oficjalnej strony i skopiuj/wklej pliki Android i Application.mk do pobranego folderu i uruchom ndk-build – velval