在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