在 Phonegap 3.x CLI 上构建 android 发布 apk

Posted

技术标签:

【中文标题】在 Phonegap 3.x CLI 上构建 android 发布 apk【英文标题】:Build android release apk on Phonegap 3.x CLI 【发布时间】:2013-12-22 13:26:20 【问题描述】:

如何使用 Phonegap 3.x CLI 在本地构建 android 应用程序,准备发布?我检查了项目的platforms/android目录中生成的bin文件夹,只有.debug APKs。

顺便说一句,我使用这个命令:phonegap local build android

【问题讨论】:

【参考方案1】:

这适用于 Phonegap 3.0.x 到 3.3.x。对于 PhoneGap 3.4.0 及更高版本,请参阅below。

在 Phonegap 文档中找到部分答案 here。完整流程如下:

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

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

    使用android developer official docs 处的说明对 APK 进行签名和对齐。

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

【讨论】:

我不得不手动修改我的 AndroidManifest.xml 文件,其中我有 <application android:debuggable="true"... 我需要更改为 <application android:debuggable="false" 你还必须压缩对齐之后的东西: zipalign -v 4 your-unaligned.apk your-aligned.apk 我正在运行 Cordova 3.4.1-0.1.0 并且文件是在 /path/to/your/project/platforms/android/ant-build 中创建的 似乎,具体来说,这是针对 phonegap 3.0.x 到 3.3.x,从 3.4.x 及之前的版本可能会有所不同。 非常感谢吉列尔莫。 +1【参考方案2】:

在 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”目录中,该目录已签名并对齐并准备好部署。

【讨论】:

当前 3.4.0 版本的 Cordova 不包含“ant-properties”文件。 platforms/android 中创建ant.properties 并将这两个属性放入其中。完美运行,谢谢! 如果您不确定密钥库/别名或如何创建它们,请访问developer.android.com/tools/publishing/app-signing.html 另外请注意,您可以在此文件中指定 key.store.password 和 key.alias.password 属性,因此您不必在每次构建发布时都输入它。当然要小心,不要将此文件提交到版本系统中。 对于 cordova 5.0.0 及以上版本,在项目的根目录上创建一个 build.json 并用 "android": "release": "keystore": "/path/to /your.keystore", "alias": "youalias" 而不是 ant.properties 文件。仅供参考cordova.apache.org/docs/en/edge/…【参考方案3】:

在科尔多瓦 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"
         
     
 

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

keystore 文件位置是相对于platforms/android/cordova/,所以在上面的配置中.keystore 文件和build.json 在同一个目录中。

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

【讨论】:

【参考方案4】:

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

所以如果你把 platform\android\ant.properties 放在下面

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

【讨论】:

在 Windows 上,您必须转义斜杠...'... key.store=C:\\OpenSSL-Win32\\certs\\android_key_store.keystore ...'【参考方案5】:

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

所以查看我的平台过滤器,我发现了一个名为“cordova”的文件夹,其中有一个接受 --release 参数的“build”二进制文件,它要求我提供密钥链,我以一个签名和结束准备好用于生产 APK。

这从来没有记录在电话间隙网站的任何部分,坦率地说,现在我有点讨厌电话间隙:(它应该让事情变得更容易,但一切都很复杂:(

【讨论】:

【参考方案6】:

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

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

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

    打开命令行窗口(macOS 和 Linux 上的终端或 Windows 上的命令提示符)。

    转到 /path/to/your/project/,我们将其称为项目根目录。

    在项目根目录下,从您的插件集中删除“控制台”插件。命令是:cordova plugin rm cordova-plugin-console

    在项目根目录下,使用 cordova build 命令创建一个 APK 用于发布分发。命令是:cordova build --release android

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

    使用https://developer.android.com/studio/publish/app-signing.html#signing-manually 处的说明签名并对齐 APK在此步骤结束时,您获得的 APK 可以上传到 Play 商店。

注意:作为新手或初学者,最后一步对我来说可能有点混乱。人们可能会遇到一些问题,并且可能对这些命令是什么以及在哪里可以找到它们有一些疑问。

第一季度。 jarsignerkeytool 是什么?Ans: Android 应用签名说明确实告诉您什么是 jarsigner keytool 都是关于但如果您在命令行窗口中遇到“找不到命令错误”,它不会告诉您在哪里可以找到它们。 因此,如果您已将 Java 开发工具包 (JDK) 添加到您的 PATH 变量中,则只需按照指南中的方式运行命令即可。但是,如果您的 PATH 中没有它,您可以随时从 JDK 安装的 bin 文件夹中访问它们。

第二季度。 zipalign在哪里?Ans:很有可能找不到zipalign命令并收到'命令未发现错误'。您可能会在谷歌上搜索 zipalign 以及在哪里可以找到它?zipalign 实用程序位于 Android SDK 安装文件夹中。在 macOS 上,默认位置是 user-name/Library/Android/sdk/。如果您前往该文件夹,您会发现许多其他文件夹,例如 docsplatform-toolsbuild-toolstoolsadd-ons... 打开build-tools 文件夹。 cd build-tools。在这里,会有许多文件夹根据您在 Android SDK 管理器中使用的构建工具链进行版本控制。 ZipAlign 在每个文件夹中都可用。我个人会选择带有最新版本的文件夹。打开任何。 在 macOS 或 Linux 上,您可能必须使用 ./zipalign,而不是像文档中提到的那样简单地输入 zipalign。在 Windows 上,zipalign 就足够了。

【讨论】:

【参考方案7】:

我通过将签名的应用程序复制粘贴到与 zipalign 相同的目录中来实现此功能。即使给出了路径,aapt.exe 似乎也找不到源文件。 IE。 这没有用 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 文件夹的路径。【参考方案8】:

我知道这个问题专门询问Phonegap 3.X,但仅供参考任何Phonegap version above 4.0.0 uses Gradle instead of Ant 默认构建。要使用 Ant 而不是 Gradle,您可以将其添加到您的 config.xml:

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

使用 Gradle 时,密钥库签名信息现在需要进入新位置 (as outlined in this post)。在与“build.gradle”文件相同的文件夹中创建名为“release-signing.properties”的新文件,并放入以下内容:

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

【讨论】:

【参考方案9】:

你可以试试这个命令,它应该构建并运行应用程序(所以应该创建 .apk):

phonegap local run android

【讨论】:

它仍然只创建调试 APK。 不,它只是创建调试签名的 APK,而不是发布 APK。 在这里找到了解决方案(3/4 下降:“Finalize apk for Google Play Upload”):iphonedevlog.wordpress.com/2013/08/16/…

以上是关于在 Phonegap 3.x CLI 上构建 android 发布 apk的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap CLI 构建插件缓存?

phonegap build + phonegap-cli + ionic 图标

Phonegap 插件可以在 CLI 上运行吗?

将 phonegap 版本升级到 cli-5.4 后 Jsons 不加载

Phonegap CLI 自动化

Phonegap CLI 5.1.1 --variable 没有出现在 plugin.xml 中