Android工程打成jar包,并进行混淆


目前我打包的这个android工程是一个纯java工程,也就是没有使用到任何资源文件及组件类。所以打包的话还是相对简单的。

刚开始,我把这个工程当做一个library引用到主工程中,编译过后,在该工程的bin目录下面,就自动生成了一个jar包。正常情况下可以直接使用这个jar包。

但是目前,我们的library工程中还引用了assets/目录下的文件,而自动生成了这个jar包并没有包含这个assets目录下的文件,导致在使用这个jar包的过程中出错了,提示找不到资源文件。


于是只能按照从eclipse中导出jar包的方法来进行了。

导出方法参照:

http://blog.csdn.net/liranke/article/details/16112471

http://blog.csdn.net/liranke/article/details/16980449

需要注意的,我们使用了什么资源或src类,就勾选,其他的就不用勾选了。由于我这里只使用了src目录下的类和assets目录下的文件,所以只勾选这两个目录就行。

接下来就是一直next了。


最终导出的jar包,在jd-gui工具查看是这样的:


说明资源文件已经加入到jar包中了,在主工程中引用也是没问题的。


最后一步,需要把该jar包混淆一下。

关于混淆,主要是使用proguardgui这个工具,然后就是配置混淆的文件的内容了。

http://blog.csdn.net/vurtne_ye/article/details/35599491

一般,我的混淆配置文件都是手动修改,然后导入到proguardgui中,一路next,然后就能编译出混淆后的jar包。

目前混淆后的jar包,在jd-gui中查看不了。

混淆配置文件和一般在android工程中的混淆文件没多大区别,主要是声明一些不用被混淆的类。

由于我的jar包要提供给主工程用,所以对外的调用接口或类就不能被混淆了。否则,主工程如何知道用什么类来调用呢!

#---------------------导入需要打包的jar------------
-injars 'D:\proguard5.2.1\work\pinyin2.jar'

#---------------------指定混淆之后生成的jar------------
-outjars 'D:\proguard5.2.1\work\pinyin2-out.jar'

#---------------------引入依赖的jar------------
#-libraryjars 目前没有
#----------这里可以添加开发者项目中用到的其他依赖包--------------

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special 'createUI' method.

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

#------------------Android基本混淆设置---------------

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
#-keeppackagenames
-dontshrink
-verbose
-dontwarn
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

#---------------------自定义混淆设置------------
-keep class com.android.hanyupinyin.PinyinHelper{*;}
最后声明的这个不被混淆的类是我在主工程中将要使用的类(也就是入口类)。其他类都被混淆编译了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值