Android Studio 编译release的aarjar包

Posted Steadyoung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio 编译release的aarjar包相关的知识,希望对你有一定的参考价值。

  • 使用命令编译release包

你Library的build.gradle中添加配置:

    buildTypes 
        debug 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
        release 
            //混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
//            shrinkResources true//Error:Resource shrinker cannot be used for libraries.
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

打开terminal使用gradlew assembleRelease指令顺利生成了release.aar和classes.jar


生成aar包和jar包的地址分别为:

YourLibrary\\build\\outputs\\aar\\YourLibrary-release.aar

YourLibrary\\build\\intermediates\\bundles\\release\\classes.jar

YourLibrary是你的Library名称!


  • Gradle侧边栏Tasks任务编译

你Library的build.gradle中最后添加配置:

//task to delete the old jar
task deleteOldJar(type: Delete) 
    delete 'release/AndroidPlugin.jar'


//task to export contents as jar
task exportJar(type: Copy) 
    from('build/intermediates/bundles/release/')
    into('release/')
    include('classes.jar')
    ///Rename the jar
    rename('classes.jar', 'AndroidPlugin.jar')


exportJar.dependsOn(deleteOldJar, build)  

其中AndroidPlugin.jar就是生成的jar包名

实现上面操作之后 点击右边的Gradle侧边栏:

运行完毕后 你就可以在library项目文件下面的release文件夹里面找到生成的jar文件了



aar文件的生成

其实aar文件每次项目运行都会直接自己生成

文件路径如下


没有生成clean下项目或者rebuild的即可

步骤生成是:

1.点击右边的Gradle侧边栏

2.选择library目录下的 Tasks->build->assembleRelease方法


3.等待运行完毕后去 buile->outputs->aar的文件夹下拷贝出来即可

总结:gradlew assembleRelease指令是编译整个项目,耗时比较久!

自定义任务和assembleRelease任务命令针对性的生成jar包和aar包相对快很多,经常要打包建议使用这两个!


以上是关于Android Studio 编译release的aarjar包的主要内容,如果未能解决你的问题,请参考以下文章

android studio release和debug的区别

Android Studio 签名app-release-unsigned.apk is not signed

android studio工程使用命令直接编译

Android Studio 超级简单的打包生成apk

Cordova打包android release正式包流程

Android Studio 中有没有类似C#的#if DEBUG功能