使用--release和自签名应用程序从CLI运行Phonegap需要我修补cordova.js

使用--release和自签名应用程序从CLI运行Phonegap需要我修补cordova.js,cordova,cordova-cli,Cordova,Cordova Cli,我想我做错了什么,但我必须弥补 这样(添加“未对齐”令牌匹配): 否则,首先找到并安装“unsigned”apk,它将无法进行签名。 我正在使用CLI构建和运行我的apk。 在调试模式下,这显然是正常的,因为签名采用不同的路径 Giovanni我不确定你是如何尝试签署你的应用程序的,但以下是对我有效的方法: 更新(2014年4月14日) 一旦设置了正确的配置,实际上有一种更简单的方法可以在一个命令中完成这一切,如本SO答案中所述: 我也在这里写了一篇关于它的博客: 确保你的应用程序可以正常运行

我想我做错了什么,但我必须弥补 这样(添加“未对齐”令牌匹配):

否则,首先找到并安装“unsigned”apk,它将无法进行签名。 我正在使用CLI构建和运行我的apk。 在调试模式下,这显然是正常的,因为签名采用不同的路径


Giovanni

我不确定你是如何尝试签署你的应用程序的,但以下是对我有效的方法:

更新(2014年4月14日) 一旦设置了正确的配置,实际上有一种更简单的方法可以在一个命令中完成这一切,如本SO答案中所述: 我也在这里写了一篇关于它的博客:

确保你的应用程序可以正常运行 确保已在AndroidManifest.xml中设置了版本号。Google Play不会接受它,除非它与商店中以前的版本不同。versionCode是一个整数值,所以每次提交时只需将其递增1,无论是主要更新还是次要更新。versionName除了向用户显示外,不用于任何用途,它是一个字符串,因此您可以根据需要命名它。例如,您可以将其设置为1.0.3,而versionCode可能为3。()

http://schemas.android.com/apk/res/android“>

创建密钥库文件 创建密钥库文件并设置密码。我不会详细讨论如何真正做到这一点。确保你没有丢失这个文件。如果你丢失了它,你必须创建一个新的应用程序,那么当你尝试将它添加到Google Play商店时,它将成为一个新的应用程序。()

始终为每个应用使用不同的密钥库文件,因为它是将应用上载到应用商店的私钥。如果您决定将应用程序传输给其他开发人员,则必须向他们提供密钥库文件,如果您还将该密钥库用于其他应用程序,则会出现安全问题。()

将密钥库文件放在计算机上的某个位置。去哪里并不重要

告诉ant此应用程序的密钥库文件在哪里 然后,您只需转到您的android项目文件夹(对于phonegap,它位于platforms/android中),告诉ant密钥库文件在哪里,然后创建一个ant.properties文件,并将以下内容放入其中:

key.store=/Users/username/Documents/path/to/my-release-key.keystore
key.alias=app_name
其中key.store等于从C驱动器开始的keystore文件的路径,key.alias就是您想简称它的名称。您将在以下命令中使用别名

构建你的应用程序 打开命令提示符,导航到您的项目并运行phonegap build

phonegap build android
在platforms/android/bin中,您应该拥有:

AppName.ap_
AppName.ap_.d
AppName-debug.apk
AppName-debug-unaligned.apk
AppName-debug-unaligned.apk.d
登录发布模式 然后导航到android目录并运行ant release:

cd platforms/android
ant release
它将提示您输入密钥库密码和别名“app_name”的密码。为它们输入密钥库密码

在platforms/android/bin中,您现在还应该有应用程序的发布版本:

AppName-release.apk
AppName-release-unaligned.apk
AppName-release-unsigned.apk
AppName-release-unsigned.apk.d
现在进入bin目录:

cd bin

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /Users/username/Documents/path/to/my-release-key.keystore AppName-release-unsigned.apk app_name
更新-根据下面的评论,如果您使用-sigalg SHA1withDSA-digestalg SHA1而不是SHA1withRSA,则在下一步不会收到警告

输入您的密钥库密码

jarsigner -verify -verbose -certs AppName-release-unsigned.apk
如果您收到这样的警告,请忽略它: 警告:此jar包含证书链未验证的条目

zipalign -v 4 AppName-release-unsigned.apk AppName.apk
它会说: 验证成功

最终的apk(AppName.apk)将在bin目录中创建

()

然后你可以上传到谷歌播放

我希望这有帮助。如果你有任何问题,请告诉我


在运行构建之前,请确保生成了正确的密钥

例如:

keytool -genkey -v -keystore CHANGETHIS.keystore -alias CHANGETHIS -keyalg RSA -keysize 2048 -validity 10000
cordova build android --release
现在运行build命令

例如:

keytool -genkey -v -keystore CHANGETHIS.keystore -alias CHANGETHIS -keyalg RSA -keysize 2048 -validity 10000
cordova build android --release

谢谢你!stackoverflow没有通知我您的答案(这种情况经常发生!)。嗯,它看起来不太直截了当,但我会尝试一下。非常有用的帖子!谢谢你,亚当!不要忘记检查您的
AndroidManifest.xml
选项debuggable是否由phonegap设置为true。我想您的意思是,确保在AndroidManifest.xml中将debuggable设置为false,如下所示:如果您使用-sigalg SHA1 with DSA-digestalg SHA1而不是SHA1 with RSA,您将不会在jarsigner处收到警告。这就是它对我的作用:)