ï¼1ï¼èçæ¬ï¼æ¹æ³å¦ä¸ï¼
task copyNativeLibs(type: Copy) {
from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }
into new File(buildDir, 'native-libs')
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
pkgTask.jniDir new File(buildDir, 'native-libs')
}
ï¼2ï¼æ°çæ¬ä¸ç§æ¹æ³ï¼
ï¼2.1ï¼æå
åå
çæ.Jaræ件åèªå¨è§£å
å°apkæ件
task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
destinationDir file("$buildDir/native-libs")
baseName 'native-libs'
extension 'jar'
from fileTree(dir: 'libs', include: '**/*.so')
into 'lib/'
}
tasks.withType(Compile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
ä¸é¢ä¸å¥è¯å°±æ¯æå
çæç®å½(build\native-libs)ä¸ç.jaræ件
compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
ï¼2.2ï¼æå¨çæ.Jaræ件åèªå¨è§£å
å°apkæ件
è¿ä¸ªæ¹å¼éè¦èªå·±æå¨è¿è¡.SOæ件å缩ï¼å
·ä½æ¥éª¤ä¸ºï¼å°ææéè¦ä½¿ç¨ç.soæ件å缩为.zipæ件ï¼zipä¸çæ件ç®å½ç»æä¸ºï¼ lib/armeabi/*.soï¼ç¶åæzipæ件åç¼æ¹ä¸º.Jarç¶åæ¾å°libsçæapkå°±ok
é»è®¤å°±æ¯èªå¨æå
ææ.Jaræ件ï¼
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
ï¼2.3ï¼è¿ä¹å°±æ¯ç°å¨æ£å¨ä½¿ç¨çæ¹å¼ï¼æ¨èï¼ ï¼å
¶å®æ éå°±æ¯æ.SOæ件æå
å°APKçlibæ件夹ä¸ï¼åå¦ä»ç»é
读äºGradleç使ç¨æ¹æ³ï¼èªç¶å°±ç¥éå
¶å®Gradleå®æ¹å¨æ°çå·²ç»èªå¨å®ç°äºæå
.SOæ件ç.å¾ç®å级就æ¯å¨é
ç½®çandroidèç¹ä¸å å
¥ä¸é¢çå
容就okï¼
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
å
¶ä»å°æ¹æ éä¿®æ¹ï¼æ´ä¸ªé¡¹ç®çé
ç½®æ件å¦ä¸ï¼
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
温馨提示:答案为网友推荐,仅供参考