【问题标题】:cordova-android@4.0.0 and gradle configuration in Android Studio not workingAndroid Studio中的cordova-android@4.0.0和gradle配置不起作用
【发布时间】:2015-06-23 13:59:05
【问题描述】:

我已经更新了我的 Cordova 项目,现在它使用了 cordova-android@4.0.0。到目前为止看起来不错,但我无法弄清楚创建 APK 需要知道的一些事情。

最新版本利用 gradle 并创建了一个 Android Studio 兼容项目 - 太棒了!此外,您可以使用我决定需要的新 Crosswalk WebView,因为我发现旧设备(通常是 Android KitKat 之前的 - 4.3 及更低版本)上的问题越来越多。因此,Crosswalk 似乎已经克服了我遇到的问题,并且速度略有显着提高。

无论如何,关于 cordova-android@4.0.0/gradle/Android Studio,我遇到了几个问题/困惑:

  1. 我创建的 armv7 APK 现在已从中等的 8MB 膨胀到 28MB! www 文件夹是相同的 - 它是否有可能在生成的 APK 中复制这些?如果不是,为什么这么大?

  2. versionCode - 应用程序版本在 config.xml 中设置 - 我的设置为 4.9.1.2。当 cordova 生成 versionCode(在 AndroidManifest.xml 中使用)时 - Cordova 有一个奇怪的解析规则,它替换了句点 '.'带有 '0' - 但仅适用于前三个值。因此 4.9.1.2 变为 40902。在现有版本的 Cordova 中,您可以手动编辑 AndroidManifest.xml 并提供您自己的值 - Eclipse 构建不会覆盖它。

我感觉 Gradle 或 Android Studio 正在覆盖这个 - 我无法锻炼哪个。请有人解释一下,因为我需要解决这个问题,否则 versionCode 不会取代我当前的应用程序实时版本!

  1. Gradle 选项 - 我如何设置这些!?好像有两个地方。我可以:

运行以下命令(我将解释第(4)点中的额外标志)

cordova build android --gradle --release --versionCode=49120 --gradleArg=PcdvBuildMultipleApks=false

或者

创建一个名为 gradle.properties 的文件,并在其中放置以下两个属性:

cdvBuildMultipleApks=false
cdvVersionCode=49120

两种方法都有解释:https://cordova.apache.org/docs/en/edge/guide_platforms_android_tools.md.html#Android%20Shell%20Tool%20Guide_building_with_gradle

  1. 这一点与 (2) 和 (3) 有点相关 - 但如果我可以设置这两个选项,我想我可以克服上面解释的两个问题!虽然另一方面,文档状态默认 cdvBuildMultipleApks 设置为 false,但它不是 - 在 CordovaLib 中,如果它为空,gradle 构建文件将其设置为 true - 我在这里遗漏了一些明显的东西吗?

  2. 最后一点和问题!如果我运行 cordova build android 这将使用 gradle 构建我的项目 - 好!如果我然后打开 Android Studio 和我的项目,每当我导出签名的 APK 时,它也会通过一些 gradle 脚本运行 - 这两个构建过程是否相同?我需要运行 cordova build 还是 Android Studio 基本上为我运行它?

一个很长的话题,但我认为 cordova-android@4.0.0 和 gradle 只是一些初期问题,所以如果你能澄清一下,那将不胜感激。

【问题讨论】:

标签: android cordova android-studio gradle


【解决方案1】:
  1. Crosswalk 包含浏览器的编译版本,这就是 APK 大小增加 12MB 的原因。
  2. Android Studio 计算的 versionCode,但可以被 Gradle 属性覆盖cdvVersionCode
  3. 从命令行运行构建时,您可以使用以下命令覆盖cdvVersionCode

    cordova build android -- --gradleArg=-PcdvVersionCode=49120
    

当指定 --gradleArg 时,你很可能在Pcdv... 之前错过了-

附加文件的第二种方法也是可行的。选择适合你的。

  1. 要设置多个 Gradle 选项,请使用

     cordova build android -- --gradleArg=-PcdvVersionCode=49120 --gradleArg=-PcdvBuildMultipleApks=true
    
  2. cordova build android 和 Android Studio 都使用 Gradle 构建 Cordova 项目。它们都可以互换。

【讨论】:

    【解决方案2】:

    您还可以通过以下方式显式设置 versionCode:

    <widget android:versionCode="123">
    

    在你的config.xml

    为了帮助缓解 Crosswalk 导致的 APK 大小增加,您可以选择仅将 Crosswalk 用于 pre-L Android 版本(如果您发现 webview 足够好,也可以用于 pre-kitkat)。由于 L 有一个可更新的 webview,它几乎肯定会使用与一个 Crosswalk 捆绑包相同或更新的 Chromium 版本。 plugin README 中的详细信息,但为了方便也粘贴在这里:

    要构建启用 Crosswalk 的 apk,添加 crosswalk 插件并运行:

    $ cordova build --release
    

    要构建 System-webview apk,删除 crosswalk 插件并运行:

    $ cordova build --release -- --android-minSdkVersion=21
    

    【讨论】:

    • 这很有帮助 - 谢谢!我认为我们将使用它,因为后者的 WebView 可以正常工作(从 KitKat 开始),所以这将非常有用!谢谢:)
    • 小幅修正,但必须是android-versionCode(即-而不是:)。
    • 目前在科尔多瓦 5.1.1 中,这将抛出一个额外的零(即“1230”)。请参阅此处了解更多信息:issues.apache.org/jira/browse/CB-8976
    猜你喜欢
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多