android studio 打jar包并混淆
2016-05-04 17:54
621 查看
打包并混淆步骤:
1、将项目改成library
在build.gradle中将apply plugin: ‘com.android.application’改为apply plugin: ‘com.android.library’,并注释掉applicationId。
2、生成classes.jar文件
打开studio右侧的Gradle菜单 点开项目下的Tasks下的build下的assembleRelease,然后在在项目的app/build/intermediates/bundles/release目录下就会生成classes.jar,这个就是项目没有混淆之前的jar包。
3、修改依赖
4、混淆
在build.gradle中,更改minifyEnabled为true
并且更改proguard-rules.pro文件的内容。
5、运行task
在build.gradle中添加代码
将鼠标放在makeJar方法上,点击右键,选择运行。
运行之后在app/build/libs下就会有这个没混淆的jar包了。
注意:
1、打包时步骤4中, provided为只打包自己项目中的内容,依赖的jar会提供给别人使用。compile为会将使用的第三方依赖也进行打包,如果使用这种方式的话,记得将第三方提供的混淆文件拷到自己的混淆文件中,否则全部混淆会出bug。
2、最好在android项目中建一个module,然后用module打jar包,这样可省去步骤1,并且可以将测试jar包的代码写在项目中,方便测试。
1、将项目改成library
在build.gradle中将apply plugin: ‘com.android.application’改为apply plugin: ‘com.android.library’,并注释掉applicationId。
2、生成classes.jar文件
打开studio右侧的Gradle菜单 点开项目下的Tasks下的build下的assembleRelease,然后在在项目的app/build/intermediates/bundles/release目录下就会生成classes.jar,这个就是项目没有混淆之前的jar包。
3、修改依赖
dependencies { def state = true //打包时设置为true 运行时设置为false if (state) { provided files('libs/umeng-analytics-v5.6.4.jar') } else { compile files('libs/umeng-analytics-v5.6.4.jar') } }
4、混淆
在build.gradle中,更改minifyEnabled为true
并且更改proguard-rules.pro文件的内容。
5、运行task
在build.gradle中添加代码
def vName = '1.0' //可以自定义的版本号 def vCode = 1 task makeJar(type: Copy, dependsOn: ['build']) { from('build/intermediates/bundles/release/') into('build/libs') include('classes.jar') rename('classes.jar', "momo-test${vName}.${vCode}.jar") }
将鼠标放在makeJar方法上,点击右键,选择运行。
运行之后在app/build/libs下就会有这个没混淆的jar包了。
注意:
1、打包时步骤4中, provided为只打包自己项目中的内容,依赖的jar会提供给别人使用。compile为会将使用的第三方依赖也进行打包,如果使用这种方式的话,记得将第三方提供的混淆文件拷到自己的混淆文件中,否则全部混淆会出bug。
2、最好在android项目中建一个module,然后用module打jar包,这样可省去步骤1,并且可以将测试jar包的代码写在项目中,方便测试。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories