在Phonegap 3.x CLI上构建Android版本APK


108

如何使用准备发布的Phonegap 3.x CLI在本地构建android应用?我检查了在该项目的platform / android目录内生成的bin文件夹,并且只有.debug APK。

顺便说一下,我使用以下命令: phonegap local build android

Answers:


153

这适用于Phonegap 3.0.x至3.3.x。对于PhoneGap 3.4.0及更高版本,请参见下文

答案发现部分在这里,在PhoneGap的文档。整个过程如下:

  1. 打开命令行窗口,然后转到/ path / to / your / project / platforms / android / cordova

  2. 运行build --release。这会在/ path / to / your / project / platforms / android / bin文件夹中创建一个未签名的发行版APK ,称为YourAppName-release-unsigned.apk。

  3. 按照android开发者官方文档中的说明对APK进行签名和对齐。

感谢@LaurieClark提供的链接(http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects /),以及发布它的博客作者,因为它使我步入正轨。


9
我必须手动将我的AndroidManifest.xml文件修改为<application android:debuggable="true"...需要更改的位置<application android:debuggable="false"
Ian Jamieson 2014年

3
您还必须压缩以下内容:zipalign -v 4 your-unaligned.apk your-aligned.apk
Damian

13
我正在运行Cordova 3.4.1-0.1.0,文件创建于/path/to/your/project/platforms/android/ant-build
AlexStack,2014年

1
似乎具体来说,这是适用于phonegap 3.0.x至3.3.x(从3.4.x开始),以后可能有所不同。
GuillermoGutiérrez2014年

非常感谢吉列尔莫。+1
Quick_Silver

112

在PhoneGap 3.4.0中,您可以调用:

cordova build android --release

如果已在“ platforms / android”目录中设置“ ant.properties”文件,如下所示:

key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp

然后,将提示您输入密钥库密码,并且输出文件(myapp-release.apk)最终位于已签名并对齐并准备部署的'platforms / android / ant-build'目录中。


1
当前的3.4.0版本的Cordova不包含“ ant-properties”文件。
SteAp

8
在中创建ant.propertiesplatforms/android并将这两个属性放到其中。完美的工作,谢谢!
亚当·塔特尔

6
如果您不确定密钥库/别名或如何创建它们的完整详细信息,请访问developer.android.com/tools/publishing/app-signing.html
Shai 2014年

6
还要注意,您可以在此文件中指定key.store.password和key.alias.password属性,因此不必在每次构建发行版时都输入它。当然要谨慎,不要将此文件提交到版本系统中。
vbezhenar 2014年

5
对于Cordova 5.0.0及更高版本,在项目的根目录下创建一个build.json并用{“ android”:{“ release”:{“ keystore”:“ /path/to/your.keystore”,“ alias”填充“:” youalias“}}}而不是ant.properties文件。FYI cordova.apache.org/docs/en/edge/...
artberri

19

在Cordova 6.2.0中

cd cordova/ #change to root cordova folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any

先前的答案:

根据科尔多瓦5.0.0

{
     "android": {
         "release": {
             "keystore": "app-release-key.keystore",
             "alias": "alias_name"
         }
     }
 }

./build --release --buildConfig build.json从目录运行platforms/android/cordova/

密钥库文件的位置是相对于的platforms/android/cordova/,因此在上述配置.keystore文件中,build.json并且在同一目录中。

keytool -genkey -v -keystore app-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000


15

继@ steven-anderson之后,您还可以在ant.properties中配置密码,因此该过程可以完全自动化

因此,如果您将platform \ android \ ant.properties放入以下内容

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword

1
在Windows上,必须转义斜线...... '...... key.store = C:\\的OpenSSL的Win32 \\ \\证书... android_key_store.keystore'
bkomac

4

我只是想知道很多事情,因为我遇到了同样的问题,但是在我的安装中,命令“ cordova”从不可用,而“ phone gap build android --release”只是忽略了platform / android / ant.properties。

因此,在我的平台过滤器内部,我找到了一个名为“ cordova”的文件夹,并且在其中有一个“ build”二进制文件,该文件接受--release参数,它要求我提供钥匙链,最后我签名并准备生产APK。

这在电话缺口站点的任何地方都从未记录过,坦白地说,现在我有点讨厌phonegap :(本来应该使事情变得容易,但一切都很复杂:(


2

构建PhoneGap Android应用程序以部署到Google Play商店

这些步骤适用于Cordova,PhoneGap或Ionic。唯一的区别cordova是,对于您的特定情况,无论在何处致电,都应将其替换为phonegapionic

完成开发并准备部署后,请按照以下步骤操作:

  1. 打开命令行窗口(在macOS和Linux上为终端,在Windows上为命令提示符)。

  2. 转至/ path / to / your / project /,我们将其称为“项目根目录”。

  3. 在项目根目录下,从您的插件集中删除“控制台”插件。

    该命令是:cordova plugin rm cordova-plugin-console

  4. 仍在项目根目录下时,使用cordova build命令创建用于发行发行的APK。

    该命令是:cordova build --release android

  5. 上面的过程android-release-unsigned.apk在文件夹中创建一个名为ProjectRoot/platforms/android/build/outputs/apk/

  6. 按照https://developer.android.com/studio/publish/app-signing.html#signing-manually上的说明对APK进行签名和对齐。在

    此步骤结束时,您可以将获得的APK上传到Play商店。

注意:无论是新手还是初学者,最后一步可能对我来说都有些混乱。一个人可能会遇到一些问题,并且可能对这些命令是什么以及在何处找到它们有疑问。

Q1。什么是jarsignerkeytool
回答: Android App签名说明确实告诉您有关jarsignerkeytool的全部内容,但是如果您在命令行窗口中遇到“找不到命令错误”,则不会告诉您在哪里可以找到它们。

因此,如果您已将Java开发工具包(JDK)添加到PATH变量中,则只需按照《指南》中的命令运行即可。但是,如果您的PATH中没有它,则始终可以从JDK安装的bin文件夹中访问它们。

Q2。zipalign在哪里?
回答:极有可能找不到zipalign命令并收到“找不到命令错误”。您可能正在搜寻zipalign,在哪里可以找到它?

的zipalign工具是Android SDK安装文件夹内。在macOS上,默认位置为user-name/Library/Android/sdk/。如果你头部到该文件夹,你会发现一堆像其他的文件夹docsplatform-toolsbuild-toolstoolsadd-ons...

打开build-tools文件夹。cd build-tools。在这里,将有许多文件夹,这些文件夹根据您在Android SDK Manager中使用的构建工具链进行版本控制。ZipAlign在每个文件夹中都可用。我个人选择了带有最新版本的文件夹。打开任何。而不是像文档中提到的那样简单地输入。在Windows上,已经足够了。

在macOS或Linux上,您可能不得不使用./zipalignzipalignzipalign


1

我通过将签名的应用程序复制粘贴到与zipalign相同的目录中来使其工作。似乎即使给定路径,aapt.exe也找不到源文件。即,这不起作用zipalign -f -v 4 C:... \ CordovaApp-release-unsigned.apk C:... \ destination.apk它到达aapt.exeCordovaApp-release-unsigned.apk,冻结并按回车键无法将“ aapt.exeCordovaApp-release-unsigned.apk”识别为内部或外部命令,可操作程序或批处理文件。这确实zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk


谢谢你的提示。您还可以在PATH环境变量中包含zipalign文件夹的路径。
GuillermoGutiérrez2015年

0

我知道这个问题专门询问有关Phonegap 3.X的问题,但仅供参考,任何高于4.0.0的Phonegap版本默认都使用Gradle而不是Ant进行构建。要使用Ant代替Gradle,可以将其添加到config.xml中:

<preference name="android-build-tool" value="ant" />

现在,使用Gradle时,密钥库签名信息需要移到新位置(如本文所述)。创建一个名为“新文件release-signing.properties在同一文件夹“的build.gradle”文件,并把下面的内容里”:

storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.