2012-02-06 41 views
5

Tôi có 2 dự án:

1 - Dự án Native Android
2 - C/C++ Dự án

Tôi đang xây dựng tập tin thư viện chia sẻ của tôi (.so) trong một dự án C/C++ và muốn sử dụng các tệp .so đó trong dự án Android Native. Tôi không muốn sao chép và dán các tệp thư viện này từ dự án này sang dự án khác.dự án có nguồn gốc Android tham khảo chia sẻ thư viện từ C++ Dự án thư viện

Trước hết, có thể sử dụng các tệp .so từ dự án Android gốc của tôi bằng cách sử dụng một số tham chiếu, v.v. tới dự án thư viện C++?

Sẽ dễ dàng hơn khi tìm cách tự động sao chép các tệp .so từ dự án thư viện C++ vào dự án gốc của Android không?

Trả lời

1

Bạn sẽ cần phải biên dịch lại libs của mình cho ARM trước tiên. Bạn có thể sử dụng chức năng "chuỗi công cụ độc lập" của ndk cho điều đó. Có một tài liệu giải thích thêm về nó trong thư mục ndk (docs/STANDALONE-TOOLCHAIN.html). Tôi cần phải dùng libexpat trong một dự án vì vậy tôi whipped lên một file bash để biên dịch người nước ngoài bằng cách sử dụng toolchain độc lập như sau:

NDK_PATH=/android-ndk-r7 
NDK_GCC=${NDK_PATH}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc 

export CC="${NDK_GCC} --sysroot=${NDK_PATH}/platforms/android-8/arch-arm" 
export CFLAGS='-mthumb' 
export LDFLAGS='-Wl,--fix-cortex-a8' 
./configure --host=arm-eabi 
make 

Sau đó, bạn có thể sao chép cái bất cứ nơi nào bạn muốn và tham khảo nó từ Android.mk:

LOCAL_LDLIBS := \ 
-Lvendor/expat/sdk/lib/android \ 
-lexpat 

Lưu ý rằng tôi đã xây dựng người nước ngoài và liên kết nó tĩnh nên tôi không phải lo lắng về việc sao chép kết quả như vậy

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