Android Studio 3.1中混淆后的Android Library Jar文件位置咨询
Android Studio 3.1+ 下ProGuard混淆后Library Jar文件的位置说明
嘿,这个问题我之前升级AS的时候也碰到过,Google在3.1版本调整了构建目录的结构,原来的build/intermediates/bundles/目录被替换掉啦,给你整理一下最新的位置和解决办法:
一、混淆后Jar文件的默认位置
升级到AS3.1及以上版本后,混淆后的classes.jar文件位置变更为:
- Debug版本(已启用ProGuard):
build/intermediates/aar_main_jar/debug/classes.jar - Release版本:
build/intermediates/aar_main_jar/release/classes.jar
这个目录下的classes.jar就是经过ProGuard混淆处理后的文件,同时你的Library构建生成的.aar包内部也包含了这个混淆后的class文件。
二、自定义Jar输出路径(可选)
如果觉得默认路径找起来麻烦,你可以在Module级的build.gradle中添加自定义脚本,把混淆后的Jar导出到指定位置,比如模块的libs目录:
android { // 保留你原本的其他配置... // 自定义导出Jar的任务 task exportProGuardJar(type: Copy) { // 选择要导出的构建变体,这里以release为例,需要debug的话改成debug from('build/intermediates/aar_main_jar/release/') // 输出目标目录,这里设为模块根目录下的libs文件夹 into('libs/') // 指定要复制的文件 include('classes.jar') // 重命名Jar文件,方便识别 rename('classes.jar', 'your-library-name-release-proguard.jar') } } // 让导出任务依赖assembleRelease,执行assembleRelease时自动完成导出 exportProGuardJar.dependsOn(assembleRelease)
添加完脚本后,你可以在Android Studio右侧的Gradle面板中,找到你的Module → Tasks → other → exportProGuardJar,点击运行就能自动导出Jar到指定目录了。
三、确认ProGuard是否正确启用
别忘了检查你的build.gradle中是否正确开启了混淆配置,确保minifyEnabled设为true:
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } // 如果需要在debug模式下也启用混淆,添加以下配置 debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
内容的提问来源于stack exchange,提问作者Muhamed Riyas M
相关产品推荐
相关产品推荐

