Androd studio Gradle 打包 jar 和 混淆 配置
2016-01-13 14:16
218 查看
出处: http://chaosleong.github.io/blog/2015/08/02/android-studio-shi-yong-gradle-da-bao-jar/
最近在sdk发布有jar的打包需求,所以记录下Gradle 的配置,此文是按照出处修改的,在此也感谢作者的分享:
先上代码:
上面的代码需要配合自己的项目做相应的包名修改,如果需要不包含混淆的直接运行buildJar就ok了,需要混淆就执行buildProJar就可以了(在andorid studio中的terminal执行)
以下有一点需要注意,就是要打包前,先把所以的asset复制的一份copy发一份到asset目录下类似以下目录,打包的时候就能够自动把sesset一起打包了。
附上Git项目地址:https://github.com/popboyking/androidstudio-jar-
最近在sdk发布有jar的打包需求,所以记录下Gradle 的配置,此文是按照出处修改的,在此也感谢作者的分享:
先上代码:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } //dependsOn 可根据实际需要增加或更改 task buildJar(dependsOn: ['compileReleaseJava'], type: Jar) { appendix = "demo" baseName = "androidJar" version = "1.0.0" classifier = "release" //后缀名 extension = "jar" //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension] archiveName = "SDK1.0_release.jar" //需打包的资源所在的路径集 def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"] //初始化资源路径集 from srcClassDir //asset 目录路径 def assetsDir =[project.buildDir.absolutePath + "/intermediates/assets/release"] from assetsDir //去除路径集下部分的资源 // exclude "com/MainActivity.class" // exclude "com/MainActivity\$*.class" exclude "com/BuildConfig.class" exclude "com/BuildConfig\$*.class" exclude "**/R.class" exclude "**/R\$*.class" //只导入资源路径集下的部分资源 include "assets/**" include "com/**/*.class" } task proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) { configuration android.getDefaultProguardFile('proguard-android.txt') String inJar = project.buildDir.getAbsolutePath()+"/libs"; //输入 jar injars inJar //输出 jar outjars inJar+ "/proguard-${buildJar.archiveName}" //设置不删除未引用的资源(类,方法等) dontshrink AppPlugin appPlugin = getPlugins().findPlugin(AppPlugin) if (appPlugin != null) { List<String> runtimeJarList if (appPlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) { runtimeJarList = appPlugin.getRuntimeJarList() } else if (android.getMetaClass().getMetaMethod("getBootClasspath")) { runtimeJarList = android.getBootClasspath() } else { runtimeJarList = appPlugin.getBootClasspath() } for (String runtimeJar : runtimeJarList) { //给 proguard 添加 runtime libraryjars(runtimeJar) } } }
上面的代码需要配合自己的项目做相应的包名修改,如果需要不包含混淆的直接运行buildJar就ok了,需要混淆就执行buildProJar就可以了(在andorid studio中的terminal执行)
以下有一点需要注意,就是要打包前,先把所以的asset复制的一份copy发一份到asset目录下类似以下目录,打包的时候就能够自动把sesset一起打包了。
附上Git项目地址:https://github.com/popboyking/androidstudio-jar-
相关文章推荐
- CentOS6.5安装MySQL5.6 过程记录
- localStorage & JSON
- sizeclass
- 键、索引、约束及其区别
- 你是否经常忘记网站上的各种密码?分享个密码管理软件LastPass
- 1.有关802.11a/g物理头:Premble结构
- LeetCode67. Add Binary
- ORACLE 11G EM 配置命令及问题处理
- Oracle用户,权限,角色以及登录管理【不错小结】
- 计算机的潜意识
- encodeURI, encodeURIComponent, and escape的区别(ASCII characters (codes 1-127))
- git clone出现的error: The requested URL returned error: 401 Unauthorized
- http抓包工具
- Eclipse安装SVN插件
- iPhone题(2)
- [leetCode]Happy Number
- [转载]ProgressDialog集锦及各种效果
- 安卓APK签名使用keytool和jarsigner
- 从asp.net到jsp:3分钟看透Jsp&Servlet
- iOS MD5加密