在Android Studio 2.3.2中生成一個支持NDK的新項目時,您不會再在jni/
目錄中獲得自動生成的Android.mk
文件。Android NDK在Android Studio中的Android.mk位置2.3.2
您現在在cpp/
dir中獲得CMakeLists.txt
。
沒有jni/
dir。
如果您仍然希望使用而不是CMake
Android.mk
文件在哪裏去的文件?
是否應該在cpp/
dir中創建?
或者它是否在app/
與CMakeLists.txt
相同?
你有,如果你,如果你打算爲Android Studio來自動建立本地共享庫,而不是運行ndk-build
明確創建Android.mk
文件刪除CMakeLists.txt
文件?
更新 - 鏈接到第三方庫:
我產生了一堆的libusb .so文件,即MIPS64的
~/projects/third-party/libusb-1.0.21/android/libs:
total used in directory 36 available 265852464
drwxrwxr-x 9 bph bph 4096 Jun 2 22:20 .
drwxr-xr-x 5 bph bph 4096 Jun 2 22:20 ..
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 arm64-v8a
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 armeabi
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 armeabi-v7a
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 mips
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 mips64
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 x86
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 x86_64
內容/例如樣子:
~/projects/third-party/libusb-1.0.21/android/libs/mips64:
total used in directory 276 available 265852464
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 .
drwxrwxr-x 9 bph bph 4096 Jun 2 22:20 ..
-rwxr-xr-x 1 bph bph 14872 Jun 5 14:05 dpfp
-rwxr-xr-x 1 bph bph 14944 Jun 5 14:05 dpfp_threaded
-rwxr-xr-x 1 bph bph 27432 Jun 5 14:05 fxload
-rwxr-xr-x 1 bph bph 10680 Jun 5 14:05 hotplugtest
-rwxr-xr-x 1 bph bph 127544 Jun 5 14:05 libusb1.0.so
-rwxr-xr-x 1 bph bph 10624 Jun 5 14:05 listdevs
-rwxr-xr-x 1 bph bph 10712 Jun 5 14:05 sam3u_bphchmark
-rwxr-xr-x 1 bph bph 14912 Jun 5 14:05 stress
-rwxr-xr-x 1 bph bph 35640 Jun 5 14:05 xusb
即交叉構建.so文件在那裏..
在CMakeLists.txt my link_d irectories看起來是這樣的:
link_directories(~/projects/third-party/libusb-1.0.21/android/libs/${ANDROID_ABI}/
我target_link_libraries看起來是這樣的:
target_link_libraries(# Specifies the target library.
usb-1.0)
但我發現了鏈接錯誤:
~/Android/Sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/mips64el-linux-android/4.9.x/../../../../mips64el-linux-android/bin/ld: cannot find -lusb-1.0
它彷彿link_directories是沒有得到回升或$ {ANDROID_ABI}不工作?
對build.gradle文件的mod不會對鏈接器錯誤有任何影響嗎?
我已經走了下來CMake的路徑,但隨後就卡住試圖越過構建的libusb。 libusb tarball中的android幫助是基於.mk的。你能從CMakelists.txt調用一個.mk文件嗎? – bph
不,但我過去所做的是通過破解Android.mk文件來生成文件列表,以便將'LOCAL_SRC_FILES'和'LOCAL_C_INCLUDES'中的文件吐出。我將編輯我的答案進行快速演示。 –
記住我設法使用提供的.mk文件交叉構建libusb庫,是否可以在我的項目CMakeLists.txt中指定.so文件的位置並將它捆綁到apk文件?換句話說,也許我不必一次性構建它,我可以從我的項目中單獨構建libusb,然後確保我的項目知道它需要這個lib以及lib的位置? – bph