android studio 怎样加载 第三方jar 包,arr包,so包

在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.
}


猜你喜欢

转载自blog.csdn.net/chengf223/article/details/53168061