为了确保每个应用程序开发商的合法ID,防止部分开发商通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名。这样可以保证我们每次发布的版本的一致性,例如自动更新不会因为版本不一致而无法安装。在这里,我们将介绍两种签名方法。

方法一:在命令行对apk签名

1. 创建密钥:需要用到keytool.exe(位于C:\Program Files\Java\jdk1.6.0_10\bin目录下)。使用产生的密钥对apk签名需要用到的是jarsigner.exe(位于C:\Program Files\Java\jdk1.6.0_10\bin目录下)。将这两个软件所在的目录添加到环境变量path后,打开cmd输入以下命令:

```plaintext

C:\Documents and Settings\mzba> 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`:密钥库位置为demo.keystore

2. 签名apk文件:在cmd中输入以下命令:

```plaintext

C:\Documents and Settings\mzba> jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore

```

相关说明:

- `-verbose`:输出签名的详细信息

- `-keystore demo.keystore`:密钥库位置为demo.keystore

- `-signedjar demor_signed.apk demo.apk demo.keystore`:将签名后的文件命名为demo_signed.apk,要签名的文件为demo.apk,密钥库为demo.keystore。

通过以上步骤,我们可以在命令行中对apk文件进行签名。

请注意,Android工程的bin目录下的demo.apk默认已经使用debug用户签名。因此,不能使用上述步骤对该文件再次签名。正确的操作步骤应该是:在工程上点击右键,选择"Anroid Tools" > "Export Unsigned Application Package",以导出已签名的apk。