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

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

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

【问题讨论】:

    标签: android cordova cordova-cli


    【解决方案1】:

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

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

    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 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

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

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

        6. 使用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/…
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-06-07
            • 1970-01-01
            • 1970-01-01
            • 2013-11-06
            • 2017-03-18
            相关资源
            最近更新 更多