博观而约取,厚积而薄发。这篇文章主要讲述Android NDK - 在没有Android Studio的情况下构建本机库相关的知识,希望能为你提供帮助。
我正在开发一个c / c ++跨平台项目,由2个主要库构成(带有一些外部依赖项:ssl,yajl,fribidi)。
android解决方案将包括java文件和JNI层,所有这些都捆绑在AAR文件中(包括资产和本机库)。
我设法建立整个项目,但是以一种非常尴尬的方式:
我在Android Studio中创建了一个“hello world”Android应用程序,具有本机支持,并将所有本机依赖项添加到CMAkeList.txt。我添加了我的Java代码+ JNI并设法创建了AAR(目前仅适用于ARM)。
现在我需要将不同库的构建分别分别到它们各自的项目:libA,libB和C.aar。
没有IDE(通过命令行)怎么做?
有独立的NDK,make_standalone_toolchain.py脚本,android.toolchain.cmake和其他选项,但没有记录或最新。大多数文档仍然谈论过时的Android.mk方法。
我想在我的CMakeList.txt中包含android.toolchain.cmake,它将设置所有需要的环境......
我正在使用最新的Android Studio 3.0.1和NDK r16b(通过SDK Manager安装)
亚历克斯 - 谢谢,正是我在寻找的东西。只需要添加一些标志和一个调用来制作:
>
cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%uildcmakeandroid.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=android-19 -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK%prebuiltwindows-x86_64inmake.exe -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" ..
>
cmake --build .
答案Android Studio(标准的Android gradle插件)不支持仅限纯模块,但您可以拆分CMake脚本并单独使用libA和libB。您可以从命令行运行cmake(但最好使用Android SDK附带的版本)。
sdk/cmake/3.6.4111459/bin/cmake -DCMAKE_TOOLCHAIN_FILE=sdk/ndk-bundle/build/cmake/android.toolchain.cmake ...
【Android NDK - 在没有Android Studio的情况下构建本机库】构建包含已编译的Java包装器和两个本机库的AAR文件的最简单方法是使用Android Studio,但您可以从命令行运行gradle任务。这是我们通常在构建服务器上执行的操作。
推荐阅读
- Baresip与android
- Android Studio上的Cocos2d-x - 未列出新的CPP文件
- Android Studio外部本机构建预编译头
- 如何向android shell用户授予android.permission.RECORD_AUDIO权限()
- 是否有可能改变Android中蓝牙传输的频率(也许通过NDK?)
- 在本地PHP项目中使用xampp启用SSL(https协议)
- 如何在Symfony 3中使用doctrine orm使用多个数据库
- 如何在Windows中使Visual Studio代码窗口透明
- 如何在WinForms C#中使用NAudio将MP3文件转换为WAV