Androidstudio生成aar 和 jar (生产jar包含第三方的jar ,比如tsp.jar包含okhttp.jar) 以及 Module build.gradle引入aar资源

Androidstudio生成aar

代码能编过情况下, AS菜单栏Build---Rebuild Project  (或者make project )  就可以生产AAR

aar目录在  库 /build/outputs/aar/libraryname.aar


Androidstudio生成aar 和 jar (生产jar包含第三方的jar ,比如tsp.jar包含okhttp.jar) 以及 Module build.gradle引入aar资源_第1张图片

Module build.gradle引入aar资源

①.将aar包复制到lib目录下 

②.配置build.gradle文件:

加入

  repositories {
        flatDir {
        dirs 'libs'
    }

compile(name:'camerascan-1.0', ext:'aar')


Androidstudio 生成jar

代码能编过情况下, AS菜单栏Build---Rebuild Project  (或者make project )  就可以生产jar

目录 manager/build/intermediates/bundles/debug/classes.jar

Androidstudio生成aar 和 jar (生产jar包含第三方的jar ,比如tsp.jar包含okhttp.jar) 以及 Module build.gradle引入aar资源_第2张图片

*.jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。

*.aar: 包含所有资源 ,class以及res资源文件全部包含

解压jar 会发现, module-libs 中的第三方的jar 不在classes.jar 中

如果提供别人使用,要求把第三方的jar 打入jar 包中.

生产jar包含第三方的jar

在module的build.gradle 中增加如下task


task makeJar(type: Jar) {
    archiveName = 'tsp.jar'        //生成的新jar名称
    from(project.zipTree('build/intermediates/intermediate-jars/debug/classes.jar'))    module生成的jar 目录
    from (project.zipTree('libs/converter-gson-2.1.0.jar'))  //要打入的各种第三方jar
    from (project.zipTree('libs/gson-2.6.2.jar'))
    from (project.zipTree('libs/okhttp-2.0.0.jar'))
    from (project.zipTree('libs/okio-1.9.0.jar'))
    from (project.zipTree('libs/okhttp-urlconnection-2.0.0.jar'))
    from (project.zipTree('libs/okhttp-3.4.1.jar'))
    from (project.zipTree('libs/retrofit-2.1.0.jar'))
    from (project.zipTree('libs/retrofit-1.8.0.jar'))
    destinationDir = file('build/libs')                             //生成jar 目录
}
一,首先生成classes.jar   make project

二. 点击Androidstudio 右上角  Gradle

展开module -- other---makeJar  双击makeJar  , 等待下,就会生产包含了第三方jar 的jar包

Androidstudio生成aar 和 jar (生产jar包含第三方的jar ,比如tsp.jar包含okhttp.jar) 以及 Module build.gradle引入aar资源_第3张图片

Androidstudio生成aar 和 jar (生产jar包含第三方的jar ,比如tsp.jar包含okhttp.jar) 以及 Module build.gradle引入aar资源_第4张图片

Android Studio 里面的引用第三方库

方式:1:它就会自动把这个包下载下来,并且引用它。节省git空间,而且修改版本也很方便。

compile 'com.android.support:support-v4:23.3.0'

方式2:引用libs下所有jar包

compile fileTree(dir: 'libs', include: ['*.jar'])

方式3:引用一个jar

compile files('libs/fastjson-1.1.53.android.jar')

方式4:引用一个aar文件,注意并不能像 方式2 那样自动引用全部的aar,而需要对每个aar分别进行引用。

compile(name: 'aar_file_name', ext: 'aar')

方式5:引用库类型的项目

compile project(':xxxsdk')

方式6:仅仅在编译时使用,但最终不会被编译到apk或aar里

provided files('libs/glide-3.7.0.jar')


例子:

repositories {
    flatDir {
        dirs 'libs/'                                          //指定目录: module中的libs
        dirs '../../../../OUT_APP/lib'                 //项目其他目录
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')                    //引用libs下所有jar包    
    provided fileTree(include: 'QGAPI.jar', dir: '../../../../sdk_release')                //动态引用jar , 此种方式不会把jar 打入APK
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'                       //引用在线jar
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile(name: 'recyclerview-v7-25.1.1', ext: 'aar')                           // 引用aar
    compile(name: 'GeelyWidget-release', ext: 'aar')
    compile(name: 'ThemeMgr-release', ext: 'aar')
    compile 'com.github.bumptech.glide:glide:4.0.0'
    compile fileTree(include: 'persistentcookieJar.jar', dir: '../../../../vendor/tsp_jar')             //引用指定目录中的jar
    compile fileTree(include: 'tspapi.jar', dir: '../../../../sdk_release')
    compile 'com.android.support:multidex:1.0.0'
}


你可能感兴趣的:(androidstudio,aar,jar,build.gradle)