1.加密,也就是代码混淆,目的呢,就是防止别人使用反编译工作破解。什么是反编译呢,对于安卓来说,就是你把源代码编译成APK,这APK别人能使用,但就是不明白你怎么做出来的,这时他使用反编译,把APK变成源代码,他一读源代码,就可以做出来一个和你一模一样的程序,从而抢了你风头。如果你研究了什么比较牛B的数学算法,开发了什么人人称好的游戏,只希望这份荣耀自己一直占有用,不希望这么快就和别人分享,你希望这个秘密能够保存的更持久一些,或者一些其他的原因,反正就是不希望别人快速山寨出你的软件,这时你就可以使用加密。但加密和反编译是相对的,加密只能减慢别人山寨的速度,但对于我们聪明的中国人来说,只要有时间,山寨出来是迟早的事,所以呢,不要太迷信加密,加密只能使你的产品保持新鲜那么一小会儿。如果真有什么厉害的创意需要保密,那就申请专利吧。
安卓对于APK软件的加密,在2.3版的时候引入了proguard,如果你的工程是2.3,可以在你的工程目录下找到一个名为proguard目录。这目录会对你的代码做一定程度的混淆,要使用proguard混淆代码,只需要在项目根目录下的文件default.properties 里添加一行代码:
proguard.config=proguard.cfg
如下,就是一个完整的default.properties内容
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-10
proguard.config=proguard.cfg
但安卓默认不混淆 Activity 、Service ... 类的 子类,核心代码不要写在这些类里。如果你希望更深一层加密,那就把核心代码使用C,C++来写的,使用jni技术,因为用C或C++编写的代码相对于Java来说很难被反编译。
2。签名:
要发布应用程序,从安全角度来说,签名是必不可少的,防伪,防替。特别在当前中国手机软件业乱象纷呈,吸流量吸费软件横行的年代,如果你开发一个牛B软件,别人做一个相同名字相同功能的山寨吸费吸流量软件,你可就惨了。恶名远播不说,说不定还要吃官司。有了签名,就能帮你洗清冤曲,还以清白。安卓没有第三方答名授权中心,只在发生纠纷时,可以通过第三方机构仲裁。
创建key,需要用到keytool (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner (位于jdk1.6.0_24\bin目录下),安装了JDK后,如果设置了路径,打开cmd或者终端,输入keytool,就能看到他的帮助信息,在ubuntu下和win下一样。
a,生成签名: keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore /*说明:-genkey 产生密钥 -alias demo.keystore 别名 demo.keystore -keyalg RSA 使用RSA算法对签名加密 -validity 40000 有效期限4000天 -keystore demo.keystore */ b,签名: jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore /*说明:-verbose 输出签名的详细信息 -keystore demo.keystore 密钥库位置 -signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/c.查看签名:
jarsigner -verify -verbose -certs demo_signed.apk
安卓调试的软件,都有测试的自签名,不能再签名,可以右健点击选择export导出应用程序签名,别人的博客有介绍,感兴趣的可以去看看,
http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html,
d.签名之后,签名之后,用zipalign(压缩对齐)优化你的APK文件。
zipalign -v 4 demo_signed.apk final.apk 3。发布,找一个用户多的应用程序的网站,注册帐号,上传你的程序,现在国内很多网站都可以免费发布,如安智市场,注册也很快,一会儿就注册完成了。也可以注册Android Market吧,听说需要几十美金就可以注册一个开发者帐号,上传应用程序,以前听说我们大陆不支持收费软件,不知道现在开通了没有。这个市场是相对全球的,最好开发的软件支持英语。我注册了一个安智市场的开发者帐号,也就几分钟就完成了,android marker可能会需要更多的时间,呵呵。公布下国内目前的安卓发布网站。
1.Google Market
谷歌官方市场,你可以注册成为开发者,来上传自己的应用;但目前谷歌官方市场的英文用户大于中文用户,如果你可以同时上传中文和英文,应该更加符合用户需求;开发者账号审核周期大约1-2天,你上传的应用只要符合要求可以立即被发布。