解决eclipse使用proguard混淆签名apk问题
2013-06-20 15:11
423 查看
我的安卓开发环境是r18,当使用android sdk 内置的proguard进行打包混淆签名时出现各类错误。从网上查了多种解决方案,没事就报'-jar'不是可执行命令等各类错误,
整了我一上午,都没用。所以采用ant + 内置proguard + keytool +jarsigner方式打包,废话不说。直接上代码。
先决条件.ant 环境搭建,网上自己找。 android环境配置。jdk环境配置
1,首先在eclipse开发好程序(工程名TallyBook),修改工程文件中project.properties.
proguard.config=${sdk.dir}\tools\proguard\android.txt:proguard-project.txt
android.txt已经配置好,也可以使用其他已经修改好的文件(自己改名字)。
2.将该工程复制到f:根目录
3.在控制台执行命令android_sdk/tools/android update project -n TallyBook -p F:\TallyBook -t 12 -s
提示Added file F:\TallyBook\bin\build.xml 成功。为ant 运行配置文件。
4.配置好ant 后。
执行 ant -f F:\TallyBook\build.xml release
提示build成功后,在工程bin目录下生成未签名的apk.
使用反编译工具查看源码,已经混淆成功。
4.使用签名工具签名。
创建证书 keytool -genkeypair -alias shahaiinfo -keyalg "rsa" -keystore guojun.keystore (会在当前目录下创建guojun.keystore文件)
将证书导出到文件(备用,此处不用)
keytool -export -alias test1 -file test.crt -keystore guojun.keystore
导入证书信息(此处不用)
keytool -import -keystore test_cacerts -file test.cer
//签名,参数顺序不要乱 ,否则会报找不到c:user\admin~1\.keystore错误。
//使用自己已经做好的证书替换
输出详细信息(签名或验证) 密钥库位置(当前目录) 签名后的apk 未签名的apk 密钥库的别名(不能加-alias)
jarsigner -verbose -keystore guojun.keystore -signedjar mm.apk Shuite-release-unsigned.apk shahaiinfo
5.使用zipalign优化apk
zipalign -v 4 source.apk des.apk
以下为批处理,将相应工程名更改,如果报错,就写绝对路径,最好将各工具的环境变量配好。具体找其他文章。
REM //////////////////////////////////////////////////////////////简易打包批处理run.bat/////////////////////////////////////////////////////////////////////////////
@echo on
echo 将eclipse工程文件复制到该目录下面
call set path = "D:\android-sdk_r18-windows\android-sdk-windows\tools\android"
call android update project -n ShaHaiSuite -p e:\sign\ShaHaiSuite -t 12 -s
echo 更新工程
echo 开始使用ant 编译
call ant -f e:\sign\ShaHaiSuite\build.xml release
echo 签名apk
call jarsigner -verbose -keystore shahaiinfo.keystore -signedjar ShaHaiSuite-release-signed.apk .\ShaHaiSuite\bin\ShaHaiSuite-release-unsigned.apk shahaiinfo
echo 已经签名
pause
echo 使用zipalign优化apk
call zipalign -v 4 ShaHaiSuite-release-signed.apk ShaHaiSuite-release-signed-youhua.apk
pause
eixt
REM /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
整了我一上午,都没用。所以采用ant + 内置proguard + keytool +jarsigner方式打包,废话不说。直接上代码。
先决条件.ant 环境搭建,网上自己找。 android环境配置。jdk环境配置
1,首先在eclipse开发好程序(工程名TallyBook),修改工程文件中project.properties.
proguard.config=${sdk.dir}\tools\proguard\android.txt:proguard-project.txt
android.txt已经配置好,也可以使用其他已经修改好的文件(自己改名字)。
2.将该工程复制到f:根目录
3.在控制台执行命令android_sdk/tools/android update project -n TallyBook -p F:\TallyBook -t 12 -s
提示Added file F:\TallyBook\bin\build.xml 成功。为ant 运行配置文件。
4.配置好ant 后。
执行 ant -f F:\TallyBook\build.xml release
提示build成功后,在工程bin目录下生成未签名的apk.
使用反编译工具查看源码,已经混淆成功。
4.使用签名工具签名。
创建证书 keytool -genkeypair -alias shahaiinfo -keyalg "rsa" -keystore guojun.keystore (会在当前目录下创建guojun.keystore文件)
将证书导出到文件(备用,此处不用)
keytool -export -alias test1 -file test.crt -keystore guojun.keystore
导入证书信息(此处不用)
keytool -import -keystore test_cacerts -file test.cer
//签名,参数顺序不要乱 ,否则会报找不到c:user\admin~1\.keystore错误。
//使用自己已经做好的证书替换
输出详细信息(签名或验证) 密钥库位置(当前目录) 签名后的apk 未签名的apk 密钥库的别名(不能加-alias)
jarsigner -verbose -keystore guojun.keystore -signedjar mm.apk Shuite-release-unsigned.apk shahaiinfo
5.使用zipalign优化apk
zipalign -v 4 source.apk des.apk
以下为批处理,将相应工程名更改,如果报错,就写绝对路径,最好将各工具的环境变量配好。具体找其他文章。
REM //////////////////////////////////////////////////////////////简易打包批处理run.bat/////////////////////////////////////////////////////////////////////////////
@echo on
echo 将eclipse工程文件复制到该目录下面
call set path = "D:\android-sdk_r18-windows\android-sdk-windows\tools\android"
call android update project -n ShaHaiSuite -p e:\sign\ShaHaiSuite -t 12 -s
echo 更新工程
echo 开始使用ant 编译
call ant -f e:\sign\ShaHaiSuite\build.xml release
echo 签名apk
call jarsigner -verbose -keystore shahaiinfo.keystore -signedjar ShaHaiSuite-release-signed.apk .\ShaHaiSuite\bin\ShaHaiSuite-release-unsigned.apk shahaiinfo
echo 已经签名
pause
echo 使用zipalign优化apk
call zipalign -v 4 ShaHaiSuite-release-signed.apk ShaHaiSuite-release-signed-youhua.apk
pause
eixt
REM /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
相关文章推荐
- [Android]使用 Eclipse 给 APK 签名时遇到的两个问题及解决办法
- 【Android】使用 Eclipse 给 APK 签名时遇到的两个问题及解决办法
- 使用 Eclipse 给 APK 签名遇到的问题及解决办法
- 使用proguard对jar包做混淆加密遇到的问题及解决办法
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 解决使用 JDK 1.7 对 Android apk 签名后程序无法安装的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 使用Mac版Eclipse开发Android程序混淆签名打包的一个报错解决方法
- 使用ProGuard混淆,导出apk报错的问题
- 解决使用 JDK 1.7 对 Android apk 签名后程序无法安装的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 关于eclipse打包签名apk的步骤(对于已经打包过的apk,解决安装程序签名相同的问题)
- 使用正式签名打包APK,打开debug模式报错的问题解决方法
- windows下eclipse中,涉及源码编译的apk开发——使用系统签名机制解决方法
- 使用Eclipse打包生成jar文件,解决CLASSPATH问题
- 解决使用EclipseDebug进入到JDK源码无法查看运行时变量的问题
- 在eclipse中使用google的编码规范遇到的问题解决
- Eclipse下PlantUML 的安装及配置、Graphviz的安装和配置以及使用问题解决办法
- Eclipse使用Maven时,修改默认中央仓库后的配置报错找不到包的问题解决