Android(安卓)Studio 使用 Gradle 打包 Jar
16lz
2022-03-22
最近在搞个广告sdk,使用Android平台。使用Android studio开发。sdk最后要打成Jar包。
Eclipse下打jar包并且混淆的做法是参考这篇博客:Proguard使用最新,最全教程,亲自试验
在Android studio下,打包都是在gradle文件中配置的,所以在网上找了比较好的文章,解决了打包问题。
Android Studio 使用 Gradle 打包 Jar 感谢博主分享。
由于在window下开发,并且根据自己的需求,就简单改了下脚本,运行ok
import com.android.build.gradle.AppPluginimport com.android.build.gradle.LibraryPluginimport proguard.gradle.ProGuardTaskapply plugin: 'com.android.application'android { compileSdkVersion 22 buildToolsVersion "23.0.1" defaultConfig { applicationId "com.xxx.adsdk" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])}//dependsOn 可根据实际需要增加或更改task buildJar(dependsOn: ['compileReleaseJava'], type: Jar) { appendix = "_v" baseName = "xxx" version = "3.1.0" classifier = "release" //后缀名 extension = "jar" //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension] archiveName = "PingStartSDK.jar" //需打包的资源所在的路径集 def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"]; //初始化资源路径集 from srcClassDir //去除路径集下部分的资源 exclude "com/xxx/adsdk/BuildConfig.class" exclude "com/xxx/adsdk/BuildConfig\$*.class" exclude "com/xxx/adsdk/test/**/*.class" exclude "**/R.class" exclude "**/R\$*.class" //只导入资源路径集下的部分资源 include "com/xxx/adsdk/**/*.class" //注: exclude include 支持可变长参数}//use "gradlew.bat proguardJar" to gene jartask proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) { //Android 默认的 proguard 文件 configuration android.getDefaultProguardFile('proguard-android.txt') //manifest 注册的组件对应的 proguard 文件 configuration project.buildDir.absolutePath + "/intermediates/proguard-rules/release/aapt_rules.txt" configuration 'proguard-rules.pro' String inJar = buildJar.archivePath.getAbsolutePath() //输入 jar injars inJar //输出 jar outjars inJar.substring(0, inJar.lastIndexOf( "\\")) + "\\Proguard-${buildJar.archiveName}" //设置不删除未引用的资源(类,方法等) dontshrink Plugin plugin = getPlugins().hasPlugin(AppPlugin) ? getPlugins().findPlugin(AppPlugin) : getPlugins().findPlugin(LibraryPlugin) if (plugin != null) { List runtimeJarList if (plugin.getMetaClass().getMetaMethod("getRuntimeJarList")) { runtimeJarList = plugin.getRuntimeJarList() } else if (android.getMetaClass().getMetaMethod("getBootClasspath")) { runtimeJarList = android.getBootClasspath() } else { runtimeJarList = plugin.getBootClasspath() } for (String runtimeJar : runtimeJarList) { //给 proguard 添加 runtime libraryjars(runtimeJar) } }}
最后在Android studio的命令行里输入
gradlew.bat proguardJar
更多相关文章
- Android项目开发完成以后就要将android项目文件打包成apk文件
- windows修改Android(安卓)AVD路径
- 创建和使用Android(安卓)library工程
- Android(安卓)应用开发支持不同的语言国际化操作
- Android代码内存优化建议-Android资源篇
- Android环境变量配置
- android关于多dex打包的理解
- Android(安卓)adb不是内部或外部命令 问题解决
- Pycharm安装PyQt5的详细教程