2013-01-10 14 views
10

Ho cercato un sacco di argomenti sul collegamento di libpng al mio progetto Android ndk ma ho trovato la risposta giusta per il mio problema e spero che qualcuno mi aiuti.Aggiunta di libpng nel progetto android ndk

Questa è la gerarchia del mio progetto:

jni

different_cpp_files 
different_hpp_files 
Android.mk 
libpng 
    different_cpp_files 
    different_hpp_files 
    Android.mk 

Android.mk nella cartella 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) 

Suppongo che tutto è proprio qui ..

Android.mk nella cartella 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) 

L'ultima riga mostra che mi sono libpng come lib native_app_glue (nella directory di fonti Android NDK) Ora voglio compilare libpng dal mio progetto. Cosa devo cambiare nel file Android.mk?

risposta

15

Ho un altro modo per voi:

  1. scaricare tutti i file da qui e incollarlo in una nuova cartella in qualsiasi parte del sistema:
    https://github.com/julienr/libpng-android

  2. andare nella cartella e gestiscono:
    ./build.sh

  3. Si otterrà un file in libpng.a [YOUR_FOLDER]/obj/local/armeabi/libpng.a
    Copiare questo file in:
    [YOUR_ANDROID_NDK_FOLDER]/platforms/[ALL_FOLDERS_IN_HERE]/arch-arm/usr/lib/

  4. ora è possibile utilizzare libpng in tutti i vostri progetti con la semplice riga:
    LOCAL_LDLIBS += -lpng

  5. si hanno solo a includere questo nella vostra cpp di:
    #include <png.h>

Buon divertimento!

+2

Grazie mille per la risposta, ma non è quello che voglio. Devo inviare il mio progetto alla compagnia. Non penso che sarà educato dire loro cosa devono fare per far funzionare il mio progetto - voglio dire copiare i file in android_ndk_folder e così via. Lo compileranno e quindi tutti i file necessari devono essere inclusi all'interno del progetto. –

+3

Funziona solo con dispositivi ARM e solo quelli vecchi. Mancano MIPS, ARM a 64 bit, x86, x86 a 64 bit, ARM con unità a virgola mobile, ... – dascandy

+0

Questo ha funzionato come un edificio di fascino su un dev Widnwos ... ha funzionato anche con le versioni precedenti di libpng. Testato con 1.4.19. Basta scaricare dal sito ufficiale e copiare/incollare i file Android e Application.mk nella cartella scaricata ed eseguire ndk-build – velval