在Android studio中,有三种方式的第三方包:一种是jar包,一种是带资源文件的aar包,另一种是jni 的so;
jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
aar: 包含jar包和资源文件,如图片等所有res中的文件;
so:第三方jni的C或C++包;
怎样给android 项目加载 这些包呢?jar 包和arr包步骤方法如下
第一,把这些包放置于项目的libs目录下;
第二,在项目APP目录下的build.gradl加入目录配置:
repositories {
jcenter()
flatDir {dirs 'libs'}
}
第三,在项目APP目录下的build.gradl加入编译依赖包:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
// compile 'com.google.android.exoplayer:exoplayer:r2.X.X'
compile 'com.android.support:appcompat-v7:25.0.0'
compile files('libs/library.jar')
compile(name:'library-debug', ext:'aar')
}
如果是arr包,编译后在项目app/build/intermediates目录下和exploder-aar目录下可以找java的类和相关资源;
而so包的导入方法有三种,第一种是SO转jar包,项目APP目录下的build.gradl文件实现如下:
android {
........
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
第二种方法,比较简单的方法,项目APP目录下的build.gradl文件实现如下:
android {
sourceSets.main.jniLibs.srcDirs = ['libs']
}
第三种,在项目APP目录下res平级目录下通过android studio file->new -->directory建“jinLibs”目录,然后把SO文件拖进这个目录中;
另外加入jni文件的方法如下:
android {
sourceSets.main.jni.srcDirs = ['jni'] // Prevent gradle from building native code with ndk; we have our own Makefile for it.
sourceSets.main.jniLibs.srcDirs = [ 'jni/libs', 'private_libs/libs' ] // Where generated .so files are placed.
}