2016-08-29 16 views
6

Android Studio 2.2 giới thiệu hệ thống xây dựng bên ngoài cmake. Vấn đề là tài liệu thực sự thiếu và tôi không biết làm thế nào tôi nên liên kết các thư viện của bên thứ ba? Tôi đã thử target_link_libraries chỉ cmake:Làm cách nào để bạn liên kết thư viện của bên thứ ba trong hệ thống xây dựng bên ngoài Android cmake?

target_link_libraries(native-lib libs/libSomething.so)

Và nó là "tác phẩm" trong đó biên dịch ứng dụng nhưng sau đó tôi nhận được lỗi dlopen khi chạy vì libSomething.so chưa được đóng gói với ứng dụng. Các thư mục libs đang được "ứng dụng" nếu thay đổi bất cứ điều gì và tôi đã bắt đầu với dự án JNI mặc định được tạo ra bởi Android Studio 2.2 ...

[Cập nhật]

Tôi đã thử đặt libSomething.so dưới ứng dụng/src/main/jniLibs/armeabi-v7a nhưng bây giờ thư viện "chính" (native-lib) không được đóng gói.

[Update2]

Tôi đã thêm nguồn thiết lập cấu hình bao gồm sản lượng cmake dir và các công trình này nhưng là xấu xí như địa ngục và không phải là thực sự là một giải pháp lâu dài ...

sourceSet 
{ 
    main 
    { 
     jniLibs.srcDirs = [ "libs", ".externalNativeBuild/cmake/debug/obj"] 
    } 
} 

Trả lời

9

Còn bây giờ Tôi đã kết thúc sao chép libSomething.so để thư mục đầu ra thư viện cmake trong bước xây dựng bài đăng. Điều này hoạt động bởi vì nó chỉ ra rằng Android Studio sao chép vào apk tất cả mọi thứ đó là trong thư mục đó.

Command trong cmake như sau:

add_custom_command(TARGET native-lib POST_BUILD 
     COMMAND ${CMAKE_COMMAND} -E copy 
     ${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libSomething.so 
     ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libSomething.so 
    ) 
1

Còn bây giờ, bạn cũng có thể đặt libs chia sẻ của bạn vào thư mục, và cấu hình jniLibs để trỏ đến thư mục đó, mà sẽ gói nó. Một mẫu ở đây: https://github.com/googlesamples/android-ndk/tree/master/hello-libs, hãy theo dõi gperf xem liệu có giúp ích gì không. Cách ứng dụng này không phụ thuộc vào thư mục xây dựng được tạo. Khi android studio thêm libs đóng gói, giải pháp jniLibs không cần thiết nữa

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