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 包含以下信息:
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
本文地址:https://blog.csdn.net/qq_25065595/article/details/107179482
如对本文有疑问, 点击进行留言回复!!
IjkPlayer【1】 Demo Android的最简单实现
一起Talk Android吧(第二百六十回:Android中的BottomNavigationView概述)
网友评论