在 Ionic 项目中集成 Crosswalk 后构建组合 armv7/x86 apk

Building combined armv7/x86 apk after Crosswalk integration in an Ionic project

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

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

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

有句posthere说法:

Took me a minute but you can get the single build file by commenting out the cdvBuildMultipleApks=true line in the platforms/android/gradle.properties

Cheers

但是我的 platforms/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

执行此操作的步骤如下:

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

build.gradle 将自动导入 build-extras.gradle,如果是 defined.You 可以查看 build.gradle 的代码:

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

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

Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties.

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

观察: 一旦你完成了这些步骤,又在某个时候,你想要单独构建,那么设置 cdvBuildMultipleApks=true 或注释掉有时不会'行不通,您只需重新安装平台即可。 (P.S这是我的个人观察,否则删除build-extras.gradle应该就可以了。)

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

来自

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

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

我的系统ionic inforeturns

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

确保检查输出文件夹。

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

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

它立即阻止了它们被 "corodva build" 显示。

希望这对您有所帮助。

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

这样做的好处是 APK 更小。单平台 APK 比多平台 APK 小。