1. 用第三方的so打包aar,指定jniLibs的目录,将so打包进aar

    sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }

2.  abiFilters设置过滤

ndk {    abiFilters 'armeabi-v7a'}

ABI 是 Application Binary Interface 的缩写;不同 Android 手机使用不同的 CPU,因此支持不同的指令集。CPU 与指令集的每种组合都有其自己的应用二进制界面(或 ABI)。 ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。 您必须为应用要使用的每个 CPU 架构指定 ABI;典型的 ABI 包含以下信息:

  • 机器代码应使用的 CPU 指令集。
  • 运行时内存存储和加载的字节顺序。
  • 可执行二进制文件(例如程序和共享库)的格式,以及它们支持的内容类型。
  • 用于解析内容与系统之间数据的各种约定。这些约定包括对齐限制,以及系统如何使用堆栈和在调用函数时注册。
  • 运行时可用于机器代码的函数符号列表 - 通常来自非常具体的库集。

3. 通过NDKBuild搭建NDK环境,指定jniLibs的目录,将so打包进apk

externalNativeBuild {    ndkBuild {        path "src/main/cpp/Android.mk"    }}    sourceSets {    main {        jniLibs.srcDirs = ['libs']    }}

4. 通过Gradle搭建NDK环境

tasks.withType(JavaCompile) {    compileTask -> compileTask.dependsOn ndkBuild}task ndkBuild(type: Exec, description: 'Compile JNI source with NDK') {    Properties properties = new Properties()    properties.load(project.rootProject.file('local.properties').newDataInputStream())    def ndkDir = properties.getProperty('ndk.dir')    commandLine "$ndkDir/ndk-build.cmd", '-j4','-C', file('jni').absolutePath}task ndkClean(type: Exec, description: 'Clean NDK Binaries') {    Properties properties = new Properties()    properties.load(project.rootProject.file('local.properties').newDataInputStream())    def ndkDir = properties.getProperty('ndk.dir')    commandLine "$ndkDir/ndk-build.cmd", 'clean','-j4', '-C', file('jni').absolutePath}clean.dependsOn 'ndkClean'

5. 通过CMake搭建NDK环境

    externalNativeBuild {        cmake {            path "CMakeLists.txt"        }    }

 

详细内容请参考:https://developer.android.google.cn/ndk/guides

更多相关文章

  1. android使用jenkins进行自动化打包并且上传到fir或者蒲公英
  2. Android(安卓)Audio代码分析6 - AudioEffect
  3. ionic emulate android(打包出现的问题总结)
  4. MAC NDK开发环境搭建
  5. ubuntu 10.04 Android(安卓)编译环境搭建
  6. Android(安卓)Gradle 更新到 3.4.1 问题记录
  7. ionic 打包报某些jar包重复
  8. 搭建NDK环境,运行samples
  9. Android开发环境搭建常见问题(不定时更新)

随机推荐

  1. 腾讯微博客户端开发视频--若水(第一集、第
  2. Android常用开发网站
  3. Android(安卓)Studio 编写jni 实例
  4. gradle之 (application 目录下 gradle 和
  5. Android(安卓)BroadcastReceiver详解
  6. 搭建android开发环境所需的工具,以及相应
  7. Android(安卓)ApiDemos示例解析(42):App->
  8. Android下自启动的实现
  9. unity开发android游戏(一)搭建Unity安卓开
  10. android 编程注意事项