微信公众号(高质量文章推送):走向全栈工程师前端
做者:陈博易java
声明:本文是我的原创,未经容许请勿转载android
商业合做请在微信公众号回复:联系方式c++
将上篇文章的这几个文件复制到library项目相对应目录中,别说你不知道在哪里,那就看个人前面几篇文章,去找找git
jnilibrary/build.gradle代码展现github
apply plugin: 'com.android.library'
android {
compileSdkVersion 26
defaultConfig {
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//Gradle 文件配置对CMake的配置
externalNativeBuild {
cmake {
cppFlags ""
}
}
//Gradle 构建并打包某个特定abi体系架构下的.so库
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a',
'arm64-v8a','mips','mips64'
}
}
//Gradle 文件配置对CMake的配置
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
def JAR_NAME = "JniUtils";//定义jar name
def JAR_VERSION = "_V1.0";//定义jar version
def JARDestinationPath = "build";//定义输出路径
def zipJarFile = file('build/intermediates/bundles/release/classes.jar')//jar包来源
task deleteBuild(type: Delete) {
//删除以前生成的jar包
delete JARDestinationPath + JAR_NAME + JAR_VERSION + ".jar"
}
task makeJar(type: Jar) {
from zipTree(zipJarFile)//jar包来源
from fileTree(dir: 'src/main',includes: ['assets/**'])//assets文件的内容打包到jar包里
baseName = JAR_NAME + JAR_VERSION//jar包输出名称
destinationDir = file(JARDestinationPath)//jar包输出路径
}
makeJar.dependsOn(deleteBuild, build)
复制代码
jnilibrary/build.gradle的task不能忽视了,重要的事情说三遍。。。编程
生成JAR方式一:双击makeJar后端
生成JAR方式二:在terminal 终端下输入gradlew makeJar命令bash
编译完成后会提示微信
最终生成JAR 包和 so类库
将类库中的JAR包和so复制代主项目的libs目录下
app/build.gradle展现
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
}
buildTypes {
}
sourceSets {
main {
//加载对应类库:若是是将so放在app/libs则
//须要jniLibs.srcDirs = ['libs'],若是是将so放在
// app/src/main/jniLibs,则须要jniLibs.srcDirs = ['jniLibs']
// 也能够删除,由于AndroidStudio中新建项目时,系统默认为咱们配置好了
// gradle,因此系统默认就会到这个目录下找so包
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
}
复制代码
使用就是这么简单
Android NDK JNI 开发之旅 so类库 简单使用篇
postman使用 Android java后端 接口调试工具
源码地址———关注微信公众号,回复:ndk类库使用02