这是第一篇文章,我是个理科生,文笔稍差了点,如果有没看懂的地方,可以给我留言。
最近公司一位android同事离职了,apk打包那一块以前是他做的,现在他走了,以后这一块肯定需要有人来弄,所以最近我也来弄一次,其实这个完全没有技术含量,都是一些反复的操作,但我觉得对于一些像我一样的新人来说,真的非常有用,我也是在网上查了很多资料,自己才整理出来一篇,相信对于一些简单的打包来说完全足以。好了,废话不多说了,言归正传。
当我们打包的时候,应用中没有用到第三方的SDK包时,混淆后打包应该能正常完成,但是当我们应用中多加了一些第三方的SDK,例如百度地图、百度语音、友盟的统计和分享之类的时候,混淆后打包总会失败,截个图吧。下面是错误信息,在我们打包失败的时候,可以看到eclipse的Console栏中的错误信息(这里出错的原因是我添加了百度语音的第三方SDK包,所以代码混淆后一打包就出错了):,此时我们只需要将该工程下的libs包下面的所有第三方包(其实谷歌自带的那个android-support-v4.jar一起算进去也没问题)在文件在proguard-project.txt中注明即可,操作如下:
,第一步:找到libs下面的所有jar文件包;第二步:如图所示,将这些包都在proguard-project.txt中注明。此刻咱们不用急着做第三步,现在按正常顺序打包,如果出现以下情况(没出现的则说明打包成功,无需再继续看了),则咱们一起来做第三步
,出现这种情况我们做第三步,依葫芦画瓢,我们观察到Console中都出现了com.baidu.voicerecognition开头的包(其实我也注意到了,包后面的android也是一样的,大家以后也可以写完全部:com.baidu.voicerecognition.android,可以试试),那么我们就这样写
-dontwarn com.baidu.voicerecognition.**
-keep class com.baidu.voicerecognition.** { *;},把这两个加到proguard-project.txt中,此时再去打包试试,应该没问题了吧。
注意:在这里,第三步只出现了一种包名,万一以后大家遇到的是出现了两种包名,那么我们也要按这种方式都写入proguard-project.txt中,即
-dontwarn x.**
-keep class x.**{*;}
-dontwarn y.**
keep class y.**{*;}
(x和y各代表一种包名)
下一篇我会讲一下如何混淆代码的,博客的发表顺序可能有点不对,因为刚开始,条理还不是那么清楚,望大家多多理解,支持一下,谢谢!!!