Memandangkan perpustakaan yang diprakompil sudah dibina, anda perlu menggunakan bendera IMPORTED untuk memberitahu CMake bahawa anda hanya perlu mengimportnya ke dalam projek anda:
add_library( imported-lib
SHARED
IMPORTED )
Kemudian anda perlu menggunakan perintah set_target_properties() untuk menentukan laluan ke pustaka, seperti kod di bawah.
set_target_properties( # Specifies the target library.
imported-lib
# Specifies the parameter you want to define.
PROPERTIES IMPORTED_LOCATION
# Provides the path to the library you want to import.
imported-lib/src/${ANDROID_ABI}/libimported-lib.so )
Untuk membolehkan CMake mencari fail pengepala anda semasa penyusunan, anda perlu menggunakan perintah include_directories() dan menghantar alamat fail pengepala anda dalam:
include_directories( imported-lib/include/ )
Gunakan perintah target_link_libraries() dalam skrip binaan CMake untuk mengaitkan perpustakaan prabina dengan pustaka tempatan anda:
Apabila anda membina APP anda, Gradle akan membungkus perpustakaan yang diimport secara automatik ke dalam APK anda. Anda boleh menggunakan Penganalisis APK untuk menyemak.
Tetapi jika anda boleh mendapatkan kod sumber, saya tidak mengesyorkan anda memautkan .so, kerana ia mungkin tidak serasi dengan platform tertentu. Contohnya, pustaka .so dynamic yang disusun pada platform Linux tidak boleh dijalankan pada platform lengan (seperti Android).
Rujukan:
Bergembiralah menggunakan C/C++ dalam Android Studio 2.2
Penempatan semula dalam ELF generik (EM: 62) Penyelesaian salah
Ambil CMake sebagai contoh:
Memandangkan perpustakaan yang diprakompil sudah dibina, anda perlu menggunakan bendera IMPORTED untuk memberitahu CMake bahawa anda hanya perlu mengimportnya ke dalam projek anda:
Kemudian anda perlu menggunakan perintah
set_target_properties()
untuk menentukan laluan ke pustaka, seperti kod di bawah.Untuk membolehkan CMake mencari fail pengepala anda semasa penyusunan, anda perlu menggunakan perintah include_directories() dan menghantar alamat fail pengepala anda dalam:
Gunakan perintah
target_link_libraries()
dalam skrip binaan CMake untuk mengaitkan perpustakaan prabina dengan pustaka tempatan anda:Apabila anda membina APP anda, Gradle akan membungkus perpustakaan yang diimport secara automatik ke dalam APK anda. Anda boleh menggunakan Penganalisis APK untuk menyemak.
Tetapi jika anda boleh mendapatkan kod sumber, saya tidak mengesyorkan anda memautkan .so, kerana ia mungkin tidak serasi dengan platform tertentu. Contohnya, pustaka .so dynamic yang disusun pada platform Linux tidak boleh dijalankan pada platform lengan (seperti Android).
Rujukan:
Bergembiralah menggunakan C/C++ dalam Android Studio 2.2
Penempatan semula dalam ELF generik (EM: 62) Penyelesaian salah