在 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
,都应根据您的特定情况将其替换为 phonegap
或 ionic
。
完成开发并准备好部署后,请按照以下步骤操作:
打开命令行窗口(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 商店。
注意:作为新手或初学者,最后一步对我来说可能有点混乱。人们可能会遇到一些问题,并且可能对这些命令是什么以及在哪里可以找到它们有一些疑问。
第一季度。 jarsigner 和 keytool 是什么?Ans: Android 应用签名说明确实告诉您什么是 jarsigner 和 keytool 都是关于但如果您在命令行窗口中遇到“找不到命令错误”,它不会告诉您在哪里可以找到它们。 因此,如果您已将 Java 开发工具包 (JDK) 添加到您的 PATH 变量中,则只需按照指南中的方式运行命令即可。但是,如果您的 PATH 中没有它,您可以随时从 JDK 安装的 bin 文件夹中访问它们。
第二季度。 zipalign在哪里?Ans:很有可能找不到zipalign命令并收到'命令未发现错误'。您可能会在谷歌上搜索 zipalign 以及在哪里可以找到它?zipalign 实用程序位于 Android SDK 安装文件夹中。在 macOS 上,默认位置是 user-name/Library/Android/sdk/
。如果您前往该文件夹,您会发现许多其他文件夹,例如 docs
、platform-tools
、build-tools
、tools
、add-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 build + phonegap-cli + ionic 图标