【问题标题】:Building combined armv7/x86 apk after Crosswalk integration in an Ionic project在 Ionic 项目中集成 Crosswalk 后构建组合 armv7/x86 apk
【发布时间】:2015-09-12 05:37:12
【问题描述】:

我已将 Crosswalk 添加到我的 ionic 项目中。当我执行ionic build android 时,它会输出两个单独的 APK 文件,一个用于 armv7,一个用于 x86。

但是,我想要一个将两种架构捆绑在一起的 apk 文件。

我尝试设置 BUILD_MULTIPLE_APKS = false,但它仍在构建两个单独的 apk。

有一个帖子here说:

花了我一分钟,但您可以通过评论获得单个构建文件 中的 cdvBuildMultipleApks=true 行 平台/android/gradle.properties

干杯

但我的平台/android/ 文件夹中没有任何 gradle.properties 文件,我有一个 project.properties 文件,其中没有 cdvBuildMultipleApks=true 行可以注释掉。

我尝试手动创建一个 gradle.properties 文件并将cdvBuildMultipleApks=false 放入其中,但仍然有两个输出。

任何想法如何实现这一目标?

更新:

我的 Cordova 版本是 5.1.1

解决方法:

按照@mudasserajaz 和here 的建议,对我有用的是:

  1. 在我的/platform/android/ 目录中创建一个名为build-extras.gradle 的文件。
  2. ext.cdvBuildMultipleApks=false 放入其中。
  3. ionic build android --release 然后瞧,它奏效了。

@mudasserajaz 提出了同样的建议,只是变量名是 cdvBuildMultipleApks=false,所以如果它不适合你,别忘了 ext

【问题讨论】:

  • 你的科尔多瓦版本是什么?
  • @mudasserajaz,我的 Cordova 版本是 5.1.1
  • 只需将 添加到 config.xml 文件中即可。

标签: cordova ionic-framework crosswalk-runtime


【解决方案1】:

好吧,我刚刚将我的 config.xml 以下属性更改为 false,它结合了构建 apk。

来自

<preference name="xwalkMultipleApk" value="true"/>

<preference name="xwalkMultipleApk" value="false"/>

我的系统 ionic info 返回

Your system information:

Cordova CLI: 6.1.1
Gulp version:  CLI version 3.9.1
Gulp local:   Local version 3.9.1
Ionic CLI Version: 1.7.16
Ionic App Lib Version: 0.7.3
OS:
Node Version: v4.4.4

【讨论】:

  • 这对我有用。我将 Visual Studio 2015 与使用 Apache Cordova 工具创建的项目一起使用。我正在使用 Cordova CLI 5.4.1。我刚刚将首选项添加到我的config.xml&lt;platform name="android"&gt; 部分
  • 这也对我有用,除了 xwalk 的 不是我原来的 config.xml 的一部分。
【解决方案2】:

以下是执行此操作的步骤:

  1. 创建一个文件build-extras.gradle 并将其放入platforms/android/。将行 cdvBuildMultipleApks=false 添加到 build-extras.gradle
  2. 现在运行ionic run android,它将创建组合的单一构建android-debug.apk

build.gradle 将自动导入build-extras.gradle,如果已定义。您可以看到build.gradle 的代码这样做:

def hasBuildExtras = file('build-extras.gradle').exists()
if (hasBuildExtras) {
    apply from: 'build-extras.gradle'
}

另外,这些说明在build.gradle 第 57 行中明确提到:

配置属性。通过环境变量设置这些, build-extras.gradle 或 gradle.properties。

注意:在执行这些步骤之前,请删除平台文件夹并重新安装。

观察:一旦你完成了这些步骤,并且在某个时候,你想再次进行单独的构建,那么设置 cdvBuildMultipleApks=true 或注释掉有时是行不通的,你只会有再次安装平台。 (P.S这是我个人的观察,否则删除build-extras.gradle就够了。)

【讨论】:

  • platforms/android/ 中创建build-extras.gradle 并在其中添加cdvBuildMultipleApks=false 行就像一个魅力!
  • 哦,我意识到我在build-extras.gradle 中的变量名是ext.cdvBuildMultipleApks=false。因此,如果另一个不起作用,请不要忘记分机。
  • 关于您的更新,为了进行单独的构建,我删除了我的 build-extras.gradle 文件,它再次创建了两个单独的文件。所以也许只是这样做或评论cdvBuildMultipleApks=false就足够了。
  • 这还是这样吗?尝试同时使用 cdvBuildMultipleApks=false 和 ext.cdvBuildMultipleApks=false 对我不起作用
  • 不需要这么麻烦。下一个答案在不制作任何新文件的情况下做得更好。还请务必检查@Henry Luo 的答案。我最终使用了 armv7 apk。当我结合 armv7 和 x86 时,apk 的大小几乎增长了 3 倍。 stackoverflow.com/questions/32535551/…(下一个答案的链接,以防它改变位置)
【解决方案3】:

截至今天,2018 年,我们可能可以忽略 x86 移动平台,因为确实几乎没有任何移动设备使用 Intel CPU。

这具有较小的 APK 的优势。单平台 APK 比多平台 APK 小。

【讨论】:

    【解决方案4】:

    确保检查输出文件夹。

    我注意到“cordova build”在添加到我的 build-extra.gradle 后仍然输出 arm7 和 x86,但输出文件夹也包含“android-release.apk”。

    从输出文件夹 (project/platforms/android/build/outputs/apk/) 中删除 arm7 和 x86 APK

    它立即阻止它们被“corodva build”显示。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      相关资源
      最近更新 更多