Android打包与混淆相关的一些小知识

  • 打包
  • 混淆

打包

打包项目的话相信大家都会知道,eclipse的话就是右键export,选择Android目录下的Export Android Application,然后。。。你知道的。我就不仔细说了,如果是Android Studio的话就是Build下面的Generate signed APK(生成签名apk)。上面就是打包的过程,而打包完之后我们的软件并不是很安全,网上有很多的软件可以反编译出apk中的代码,所以这个打包有什么作用呢,就我自己理解主要就是保证apk的完整性,下面是网上关于打包的作用的介绍吧,大家随便看看。
一:打包签名的好处

1)没有签名的应用不允许安装到模拟器或者真机上。

2)没有签名的或仅仅debug签名的应用不能在Android Market上架销售。

3)签名是开发者的身份标识,可以防止交易抵赖的发生。

4)防止开发商或个人混淆替换已经安装的程序,以保证签名不同的包不被替换。

5)保证应用的无缝持续升级,签名不同的应用不能覆盖升级。

6)利于应用的模块化开发部署和程序间数据共享。

讲了打包,再来说说这个混淆,上面我们介绍了打包之后的apk很容易就能反编译出源码,对于我们这些开发者的劳动成果没有保护怎么可以,所以就需要使用混淆的技术,混淆说简单点就是把代码中的名称改一改,比如源码中的一个包名是com.sqq.view,没有混淆的情况下,你反编译出来还是com.sqq.view,混淆之后,你会看到的可能就是a.b.c其他的方法之类的就类似这种,总之一句话,混淆之后的代码基本没什么人能看懂,也就保护了开发者的知识产权,这还是很重要的。

混淆

混淆怎么做呢?在eclipse中的操作如下:
第一步:找到项目中的project.properties,将其中
“#proguard.config=${sdk.dir}/tools/proguard/proguard-Android.txt:proguard-project.txt”的“#”去掉。其中的#号是注释的意思
第二步:配置proguard-project.txt,具体如何配置呢,最简单粗暴的方法就是先把你所引用的所有第三方jar包还有so文件(so文件得放在armeabi文件夹下)什么的都申明进来,例如:
-libraryjars libs/apns_1.0.6.jar
-libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so
-libraryjars libs/armeabi/liblocSDK4.so
-libraryjars libs/baidumapapi_v2_3_1.jar
对于不需要混淆的(比如so混淆了之后会有问题的)使用-keep和-dontwarn结合,例如:
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper

-dontwarn org.apache.commons.net.**
-dontwarn com.tencent.**

上面的例如只是例子,不要介意其中的具体内容,需要注意的是他的写法,-keep的意思就是不混淆,-dontwarn 就是不要警告,对于相应的包中的warning都不提示。
假如你想做的细致一些也可以,第一步做完之后就打包,如果有错它会提示那些没有找到啊,你就去做相应的操作就行。就是那些报错的都先声明然后做不混淆的操作。

参考

http://blog.csdn.net/lovexjyong/article/details/24652085
http://blog.csdn.net/zz_mm/article/details/24379353
http://blog.csdn.net/brokge/article/details/8989312

你可能感兴趣的:(android)