Android 4.0以后代码混淆及签名
Android 4.0要用ProGuard比2.3更简单在Ecl ipse中打开工程目录下的project.properties文件该文件中有以下两行
To enable ProGuard to shrinkand obfuscate your code, uncomment this(avai lableproperties:sdk.dir, user.home):proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
根据这段说明只要将proguard.config前面的#去掉就可以利用ProGuard来混淆代码了当然默认的设置是不带优化功能的可以用以下设置来加上代码优化功能上图蓝色文字部分 proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
接下来就是生成Apk了。这里需要注意的是如果你用Ecl ipse里的Run或Bui ldProject/Bui ld Al l来生成Apk是不会混淆代码的在Ecl ipse的Package Explorer里选中工程的根结点在右键菜单里找到Android Tools如下图所示其下有两个子菜单项 “ExportSigned Appl ication Package. . .”和“Export Unsigned Appl ication Package. . .” 一个是带RSA
数字签名一个是不带数字签名根据需要选一个然后按照向导操作即可最终生成的Apk就是混淆过代码的了查看效果可以用7z等压缩程序Ubuntu中直接用归档管理器打开将其中的classes.dex解压用dex2jar转成jar格式后再用Java反编码工具打开就会看到代码的混淆效果。
自己在测试的时候是使用了没有签名的,选择的是Export Unsigned Appl ication Package。如果使用Export Signed Appl ication Package打包APK,关于签名的学习下面继续介绍. . . . . .
注意 同时在进行混淆的同时可以自己写一些规则在工程的p rog u a rd-p roject.txt文件中写例如
1 、
-l ibraryjars l ibs/android-support-v4.jar
-l ibraryjars l ibs
就是加载第三方Jar包
2、
-ignorewarnings
是去除代码中的警告
3、
-keep class com.al ibaba.fastjson.**
-keep保留不希望混淆的类
4、
-keep class com.msd.fol lowme.Render{publ ic*
}
此类的公共方法保留不混淆。
签名的学习
为什么要签名
开发And roid的人这么多完全有可能大家都把类名包名起成了一个同样的名字这时候如何区分签名这时候就是起区分作用的。
由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序签名可以保证相当名字但是签名不同的包不被替换。
APK如果使用一个key签名发布时另一个key签名的文件将无法安装或覆盖老的版本这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
这样签名其实也是开发者的身份标识。交易中抵赖等事情发生时签名可以防止抵赖的发生。签名的注意事项
所有的And roid应用都必须有数字签名没有不存在数字签名的应用包括模拟器上运行的。Android系统不会安装没有数字证书的应用。
签名的数字证书不需要权威机构来认证是开发者自己产生的数字证书 即所谓的自签名。模拟器开发环境开发时通过ADB接口上传的程序会先自动被签有Debug权限然后才传递到模拟器。如下图所示 Ecl ipse菜单的Window->Preferences->Android–>Bui ld下显示的是我们默认的调试用的签名数字证书。
正式发布一个And roid应用时必须使用一个合适的私钥生成的数字证书来给程序签名不能使用ADT插件或者ANT工具生成的调试证书来发布。
数字证书都是有有效期的Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中 即使证书过期也不会影响程序的正常功能。
签名后需使用zipal ign优化程序。
Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系而不是用来决定最终用户可以安装哪些应用程序。
签名的方法
方法一、使用Ecl ipse工具
此方法适用于Android1 .5及以上版本。
步骤一打开Ecl ipse->选择你要签名的项目->右击->android tools->Export signedAppl ication package
步骤二在出现的窗口确认是不是这个项目要签名然后选择下一步
步骤三在Export Android Appl ication这一步如果我们之前已有有了keystore,选择我们之前已有的否则我们新建一个。
如下选择需要保存这个证书文件的目录 以及这个证书文件的一个密码。
步骤四 点击下一步后我们需要填写keystore的基本信息如别名密码有效期姓名组织组织名称所在城市所在省份 国家等 点击Next
步骤五、选择被签名后的APK保存位置。点击finish。注意是选择最终将产生的文件。
之后我们在刚才选择的目录下就可以看到生成的签名后的APK文件。
以上是一种比较简单的签名方式一般情况下使用这种签名方式就可以了. . . .下面的链接还有一种方式是利用JDK自带的工具进行签名链接如下http://www.cnblogs.com/ghj1976/archive/201 1/07/18/2109381 .html
易探云怎么样?易探云香港云服务器比较有优势,他家香港BGP+CN2口碑不错,速度也很稳定。尤其是今年他们动作很大,推出的香港云服务器有4个可用区价格低至18元起,试用过一个月的用户基本会续费,如果年付的话还可以享受8.5折或秒杀价格。今天,云服务器网(yuntue.com)小编推荐一下易探云国内云服务器优惠活动,北京和深圳这二个机房的云服务器2核2G5M带宽低至330.66元/年,还有高配云服务器...
官方网站:点击访问王小玉网络官网活动方案:买美国云服务器就选MF.0220.CN 实力 强 强 强!!!杭州王小玉网络 旗下 魔方资源池 “我亏本你引流活动 ” mf.0220.CNCPU型号内存硬盘美国CERA机房 E5 2696v2 2核心8G30G总硬盘1个独立IP19.9元/月 续费同价mf.0220.CN 购买湖北100G防御 E5 2690v2 4核心4G...
昨天,遇到一个网友客户告知他的网站无法访问需要帮他检查到底是什么问题。这个同学的网站是我帮他搭建的,于是我先PING看到他的网站是不通的,开始以为是服务器是不是出现故障导致无法打开的。检查到他的服务器是有放在SugarHosts糖果主机商中,于是我登录他的糖果主机后台看到服务器是正常运行的。但是,我看到面板中的IP地址居然是和他网站解析的IP地址不同。看来官方是有更换域名。于是我就问 客服到底是什...