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

gio*_*ppy 13 cordova cordova-cli

我想我做错了但我不得不以 这种方式修补https://github.com/phonegap/phonegap/blob/master/lib/android/bin/templates/cordova/lib/cordova.js#L313(添加"未对齐"令牌匹配):

if (fso.GetExtensionName(path) == 'apk' && !path.match(/unaligned/) && !path.match(/unsigned/)) {
      path_to_apk = out_files.item();
      break;
}
Run Code Online (Sandbox Code Playgroud)

否则首先找到并安装"unsigned"apk,它将无法被签名.我正在使用CLI来构建和运行我的apk.在调试模式下,很明显,因为签名采用了不同的路径.

乔瓦尼

aha*_*s88 47

我不确定你尝试签署你的应用程序做了什么,但这对我有用:

更新(2014年4月14日)

一旦你设置了正确的配置,实际上有一种更简单的方法可以在一个命令中完成这一操作,如本答案所述:自动化Android版本 我也在这里写了一篇关于它的博客文章:http:// www. adamwadeharris.com/android-automation/

确保你的应用程序很好用

确保您已在AndroidManifest.xml中设置版本号.Google Play不会接受它,除非它与商店中的先前版本不同.versionCode是一个整数值,因此每次提交时只需将其递增1,无论是主要更新还是次要更新.除了向用户显示之外,versionName不用于任何内容,它是一个字符串,因此您可以根据需要为其命名.例如,您可以将其设置为1.0.3,而versionCode可能是3.(http://developer.android.com/tools/publishing/versioning.html#appversioning)

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

创建密钥库文件

创建密钥库文件并设置密码.我不会详细介绍如何实际执行此操作.只要确保你没有丢失这个文件.如果您丢失了,并且必须创建一个新应用,那么当您尝试将其添加到Google Play商店时,它将成为新的应用.(http://developer.android.com/tools/publishing/app-signing.html#cert)

始终为每个应用程序使用不同的密钥库文件,因为它是将应用程序上载到商店的私钥.如果您决定将应用程序转移给其他开发人员,则必须向他们提供密钥库文件,如果您还将该密钥库用于其他应用程序,则会出现安全问题.(http://developer.android.com/tools/publishing/app-signing.html#secure-key)

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

告诉ant您的密钥库文件适用于此应用的位置

然后你只需要通过转到你的android项目文件夹告诉ant密钥库文件的位置(对于phonegap它在platform/android中)并创建一个ant.properties文件并在其中放入以下内容:

key.store=/Users/username/Documents/path/to/my-release-key.keystore
key.alias=app_name
Run Code Online (Sandbox Code Playgroud)

其中key.store等于从C驱动器开始的密钥库文件的路径,而key.alias就是你想要简称的那个.您将在以下命令中使用别名.

构建您的应用

打开命令提示符,导航到项目并运行phonegap build.

phonegap build android
Run Code Online (Sandbox Code Playgroud)

在platforms/android/bin中你应该有:

AppName.ap_
AppName.ap_.d
AppName-debug.apk
AppName-debug-unaligned.apk
AppName-debug-unaligned.apk.d
Run Code Online (Sandbox Code Playgroud)

登录发布模式

然后导航到android目录并运行ant release:

cd platforms/android
ant release
Run Code Online (Sandbox Code Playgroud)

它将提示您输入密钥库密码和别名"app_name"的密码.输入两者的密钥库密码.

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

AppName-release.apk
AppName-release-unaligned.apk
AppName-release-unsigned.apk
AppName-release-unsigned.apk.d
Run Code Online (Sandbox Code Playgroud)

现在进入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
Run Code Online (Sandbox Code Playgroud)

更新 -根据下面的评论,如果你使用-sigalg SHA1withDSA -digestalg SHA1而不是SHA1withRSA,你将不会在下一步收到警告

输入您的密钥库密码

jarsigner -verify -verbose -certs AppName-release-unsigned.apk
Run Code Online (Sandbox Code Playgroud)

如果您收到类似这样的警告,请忽略它:警告:此jar包含未验证证书链的条目.

zipalign -v 4 AppName-release-unsigned.apk AppName.apk
Run Code Online (Sandbox Code Playgroud)

它会说:验证成功

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

(http://developer.android.com/tools/publishing/app-signing.html#releasemode)

然后您就可以上传到Google Play了.

我希望这有帮助.如果您有任何疑问,请告诉我.

http://www.adamwadeharris.com/sign-publish-phonegap-app-google-play-store-windows/