android库工程jar打包和混淆
来源:互联网 发布:ubuntu鼠标指针主题 编辑:程序博客网 时间:2024/05/29 11:05
公司有个项目需要以库的形式提供给第三方使用,但是java代码又不想别人知道,还有资源文件也需要一起打包,很常见的需求,下面就是解决此事的过程。
1、直接将库工程提供给第三方,android库工程引用方式
被老板pass,代码客户都可以看到,不行。
2、将库工程TestLib的src导出成jar,把res目录直接发给第三方
失败。导出的jar依然是引用库工程的R文件(com.test.lib.R),但是资源提供给第三方后,生成的R为com.test.R,因此运行时找不到com.test.lib.R,引用资源报错。
3、新建一个库工程MyLib,包名和TestLib工程相同(com.test.lib),然后将MyLib的res删除,将TestLib的res全部复制到新工程,同时将TestLib中bin下生成的TestLib.jar复制到MyLib的libs文件夹下,然后第三方再引用MyLib,成功!
中间有个小插曲,我们没有使用bin下面生成的jar,二是类似第二部直接导入jar文件,其他和步骤三相同,但是运行时还是报错——知道的朋友希望告诉我为什么。
4、步骤三解决了java源码没有直接提供给第三方的问题,但是如果用jar查看器,还是可以看到源码,也就是步骤三生成的jar是没有混淆的,那么我们就要混淆jar了。
jar混淆相信步骤
4.1 找到sdk下面的混淆运行文件目录(*\android-sdk-windows\tools\proguard\bin),打开其中的proguardgui.bat;
4.2 出现如下画面,点击加载按钮,加载*\android-sdk-windows\tools\proguard\proguard-android-optimize.txt文件,点击next。
4.3 出现如下画面,点击红框所示三个按钮,分别选择要加密的jar,加密输出的jar,以及项目引用到的jar(android.jar)。点击下一步。
4.4 在下图中红框打勾,点击下一步;
4.5 一直点击下一步,直到出现如下画面,点击process:
4.6 ,就会出现如上日志,可以看到和R有关的都报错了,找不到R相关的内容,因为R在jar里面没有,那么我们之间忽略就可以了(dontwarn),因为我们要把mylib提供给第三方,可以获取到R相关内容,这也是第二种方法不能凑效的原因。如下图,我们打开proguard-android-optimize.txt,天津红框里面的2句话,忽略R相关的内容。
4.7 再次重复步骤2~6,出现下图:
4.8 找到我们设置的输出目录,我们就可以看到对应的*after文件了,我们用jar查看器打开看看,让老板放心,让码农恶心的混淆后的代码出来了,妈妈再也不用担心第三方知道我们的业务流程和接口了:
4.9 至此,任务完成。chenzhenlindx@gmail.com 欢迎交流。
参考资料:
1、Android代码jar打包Library项目整合
2、混淆Android JAR包的方法
- android库工程jar打包和混淆
- android 工程eclipse打包so和jar包混淆
- Android工程封装打包的jar包混淆,有图有真像!
- Android工程混淆打包:一个典型过程和示例文件
- android 第三方jar包 混淆打包
- Android打包出的jar包混淆
- android studio 打包jar 及混淆
- ant打包和jar包混淆
- ant打包和jar包混淆
- android studio 将引用第三方jar和.so的项目打包jar并混淆
- android studio 将引用第三方jar和.so的项目打包jar并混淆
- android lib工程打包并且混淆
- Android工程打包第三方jar包和so方法
- Android 混淆打包不混淆第三方jar包
- Android 混淆打包不混淆第三方jar包
- android 签名和混淆打包
- android工程混淆和反编译
- 混淆打包 工程
- 设计模式 观察者 NSNotificationCenter
- leetcode之路027 Remove Element
- openssl使用
- 【暑期基础】P HDU 2015 偶数求和
- linux shell截取字符串
- android库工程jar打包和混淆
- 读书笔记20:中介者模式
- POJ 2723 && HDU 1816 Get Luffy Out(2-SAT+二分)
- 【暑期基础】Q HDU 2016 数据的交换输出
- XYZ and Drops (hdu 5336 bfs)
- static_cast < type-id > ( expression )与reinterpret_cast<type-id> (expression)的区别
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- 【HDOJ 5317】RGCDQ
- 读书笔记21:解释器模式