android开发 怎么给apk文件用已有的签名文件进行签名,不用eclipse,用cmd命令就是签名文件已经有了
ç»apkæ件ç¾å主è¦åä¸æ¥:
1ãå建è¯ä¹¦
2ãç¾å
3ãä¼å(å¯é)
1ï¼ä½¿ç¨jdkçkeytoolå·¥å ·çæç¾åç¨çè¯ä¹¦> keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore å建è¿ç¨éè¦è¾å ¥ä¸äºæ è¯ä¿¡æ¯åå¯ç ï¼ä¸äºéè¦çåæ°å¼è¯´æå¦ä¸ï¼æ ¹æ®èªå·±çéè¦è¦è¿è¡ç¸åºçä¿®æ¹ï¼ï¼ CERT.keystore ---- è¯ä¹¦ä¿åçæ件å CERT ---- è¯ä¹¦çå«å 10000 ---- 10000天çæææ 2048 ---- é»è®¤ä¸º1024 bitsï¼Android 建议使ç¨2048 bitsææ´é«å ¶ä»ç详ç»ä¿¡æ¯å¯ä»¥ä½¿ç¨keytool -helpæ¥çå¸®å© è¯ä¹¦çæå使ç¨å¦ä¸å½ä»¤å¯ä»¥æ¥çè¯ä¹¦çä¿¡æ¯ï¼> keytool -list -alias CERT -keystore CERT.keystore
2ï¼ä½¿ç¨jdkçjarsignerå·¥å ·å¯¹apkæ件ç¾å> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT ç¾åè¿ç¨éè¦è¾å ¥è¯ä¹¦çå¯ç ï¼ä¸äºéè¦çåæ°å¼è¯´æå¦ä¸ï¼æ ¹æ®èªå·±çéè¦è¦è¿è¡ç¸åºçä¿®æ¹ï¼ï¼ CERT.keystore ---- è¯ä¹¦ä¿åçæ件å CERT ---- è¯ä¹¦çå«å å¾ ç¾åçapkæä»¶æ ¹æ ¹ç®å½ä¸å¦æææ件夹âMETA-INFOâï¼è¯·å å é¤ï¼éæ°ç¾åå°±éè¦è¿æ ·åï¼ãå¦æä¸æ³å建è¿ç¨è¾åºå¤ªå¤ä¿¡æ¯ï¼å¯ä»¥å é¤â-verboseâ ãä¸è¿°ç¾åä¼ç´æ¥è¦çåæ¥çæ件ï¼å¦æä¸æ³è¢«è¦çèç¾å为å¦å¤çæ°æ件 signed.akpï¼åªéå° to_sign.apk æ¹ä¸º -signedjar to_sign.apk signed.akp å³å¯ãç¾ååå¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤éªè¯æ¯å¦ç¾åæåï¼ > jarsigner -verify to_sign.apk å¦æéè¦æ¥çæ´è¯¦ç»çéªè¯ä¿¡æ¯ï¼å¯ä¿®æ¹ä¸ºï¼> jarsigner -certs -verbose -verify to_sign.apk
3ï¼ä½¿ç¨android sdkçzipalignå·¥å ·ä¼åå·²ç¾åçapkæ件> zipalign -v 4 unaligned.apk aligned.apk 注æè¦å¨ç¾åååzipalignãè¿ä¸ªå·¥å ·ä¸æ¯jdkèªå¸¦çï¼èæ¯å¨%ANDROID_HOME%\tools\zipalign.exeã
1ãå建è¯ä¹¦
2ãç¾å
3ãä¼å(å¯é)
1ï¼ä½¿ç¨jdkçkeytoolå·¥å ·çæç¾åç¨çè¯ä¹¦> keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore å建è¿ç¨éè¦è¾å ¥ä¸äºæ è¯ä¿¡æ¯åå¯ç ï¼ä¸äºéè¦çåæ°å¼è¯´æå¦ä¸ï¼æ ¹æ®èªå·±çéè¦è¦è¿è¡ç¸åºçä¿®æ¹ï¼ï¼ CERT.keystore ---- è¯ä¹¦ä¿åçæ件å CERT ---- è¯ä¹¦çå«å 10000 ---- 10000天çæææ 2048 ---- é»è®¤ä¸º1024 bitsï¼Android 建议使ç¨2048 bitsææ´é«å ¶ä»ç详ç»ä¿¡æ¯å¯ä»¥ä½¿ç¨keytool -helpæ¥çå¸®å© è¯ä¹¦çæå使ç¨å¦ä¸å½ä»¤å¯ä»¥æ¥çè¯ä¹¦çä¿¡æ¯ï¼> keytool -list -alias CERT -keystore CERT.keystore
2ï¼ä½¿ç¨jdkçjarsignerå·¥å ·å¯¹apkæ件ç¾å> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT ç¾åè¿ç¨éè¦è¾å ¥è¯ä¹¦çå¯ç ï¼ä¸äºéè¦çåæ°å¼è¯´æå¦ä¸ï¼æ ¹æ®èªå·±çéè¦è¦è¿è¡ç¸åºçä¿®æ¹ï¼ï¼ CERT.keystore ---- è¯ä¹¦ä¿åçæ件å CERT ---- è¯ä¹¦çå«å å¾ ç¾åçapkæä»¶æ ¹æ ¹ç®å½ä¸å¦æææ件夹âMETA-INFOâï¼è¯·å å é¤ï¼éæ°ç¾åå°±éè¦è¿æ ·åï¼ãå¦æä¸æ³å建è¿ç¨è¾åºå¤ªå¤ä¿¡æ¯ï¼å¯ä»¥å é¤â-verboseâ ãä¸è¿°ç¾åä¼ç´æ¥è¦çåæ¥çæ件ï¼å¦æä¸æ³è¢«è¦çèç¾å为å¦å¤çæ°æ件 signed.akpï¼åªéå° to_sign.apk æ¹ä¸º -signedjar to_sign.apk signed.akp å³å¯ãç¾ååå¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤éªè¯æ¯å¦ç¾åæåï¼ > jarsigner -verify to_sign.apk å¦æéè¦æ¥çæ´è¯¦ç»çéªè¯ä¿¡æ¯ï¼å¯ä¿®æ¹ä¸ºï¼> jarsigner -certs -verbose -verify to_sign.apk
3ï¼ä½¿ç¨android sdkçzipalignå·¥å ·ä¼åå·²ç¾åçapkæ件> zipalign -v 4 unaligned.apk aligned.apk 注æè¦å¨ç¾åååzipalignãè¿ä¸ªå·¥å ·ä¸æ¯jdkèªå¸¦çï¼èæ¯å¨%ANDROID_HOME%\tools\zipalign.exeã
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2016-02-29
方法一: 命令行下对apk签名(原理)
创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入
D:\>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 */
D:\>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.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。追问
创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入
D:\>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 */
D:\>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.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。追问
这个我知道,我想问的是我反编译了一个apk,然后回编之后要给apk重新签名,我想用我已经存在的签名文件来进行签名
追答假设你签名用的证书文件是:mine123.keystore
1). 将证书复制到与需要重新签名的apk文件相同的目录下(如:复制到D:\Sign)
2). 在doc中切换到需要重新前面的apk文件的目录下
cd D:\Sign
3). 运行下面的命令
jarsigner –verbose –keystore mine123.keystore –signedjar PhoneBook_signed.apk PhoneBook.apk mine.keystore
/*解释:* ^, {& k1 Z. M* P/ M+ K5 n5 hjarsigner是Java的签名工具# K8 ~% s# Y. @6 P
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的mine123.keystore签名证书文件。
-signedjarPhoneBook_signed.apk表示签名后生成的APK名称,% v! a7 e2 v4 W# ]; GPhoneBook.apk表示未签名的APK Android软件, mine.keystore表示别名
*/
第2个回答 2015-10-23
有其他工具
比如这个
比如这个