2013-01-10 42 views
10

Tôi đã tìm kiếm rất nhiều chủ đề về liên kết libpng với dự án ndk android của mình nhưng tôi đã tìm thấy câu trả lời đúng cho vấn đề của mình và tôi hy vọng ai đó sẽ giúp tôi.Thêm libpng vào dự án ndk android

Đây là hệ thống các dự án của tôi:

JNI

different_cpp_files 
different_hpp_files 
Android.mk 
libpng 
    different_cpp_files 
    different_hpp_files 
    Android.mk 

Android.mk trong thư mục 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) 

Tôi cho rằng mọi thứ đều ở đây ..

Android.mk trong thư mục 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) 

Dòng cuối cùng cho thấy rằng tôi đã libpng như lib native_app_glue (trong thư mục nguồn android-ndk) Bây giờ tôi muốn biên dịch libpng từ dự án của tôi. Tôi cần thay đổi gì trong tệp Android.mk?

Trả lời

15

tôi đã có một cách khác cho bạn:

  1. Tải về tất cả các file từ đây và dán nó vào một thư mục mới bất cứ nơi nào trên hệ thống của bạn:
    https://github.com/julienr/libpng-android

  2. đi vào thư mục và chạy:
    ./build.sh

  3. Bạn sẽ nhận được tệp libpng.a trong [YOUR_FOLDER]/obj/local/armeabi/libpng.a
    Sao chép tập tin này vào:
    [YOUR_ANDROID_NDK_FOLDER]/platforms/[ALL_FOLDERS_IN_HERE]/arch-arm/usr/lib/

  4. bây giờ bạn có thể sử dụng libpng trong tất cả các dự án của bạn với dòng đơn giản:
    LOCAL_LDLIBS += -lpng

  5. bạn chỉ phải bao gồm này trong cpp của bạn:
    #include <png.h>

Hãy vui vẻ!

+2

Cảm ơn rất nhiều vì câu trả lời của bạn nhưng đó không phải là điều tôi muốn. Tôi phải gửi dự án của mình cho công ty. Tôi không nghĩ rằng nó sẽ lịch sự để nói với họ những gì họ phải làm để làm cho dự án của tôi hoạt động - tôi có nghĩa là sao chép các tập tin trong android_ndk_folder và như vậy. Họ sẽ biên dịch nó để tất cả các tập tin cần thiết cần được đưa vào bên trong dự án. –

+3

Điều này sẽ chỉ hoạt động đối với các thiết bị ARM, và sau đó chỉ có các thiết bị cũ. Bạn đang thiếu MIPS, 64-bit ARM, x86, 64-bit x86, ARM với các đơn vị dấu chấm động, ... – dascandy

+0

Điều này làm việc giống như một tòa nhà quyến rũ trên một dev Widnwos ... nó cũng làm việc với các phiên bản cũ của libpng. Thử nghiệm với 1.4.19. Chỉ cần tải xuống từ trang web chính thức và sao chép/dán tệp Android và Application.mk vào thư mục đã tải xuống và chạy ndk-build – velval

Các vấn đề liên quan