微信公衆號(高質量文章推送):走向全棧工程師前端
做者:陳博易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