【问题标题】:How to set Cordova Android project to use NDK如何设置 Cordova Android 项目以使用 NDK
【发布时间】:2018-03-13 17:45:03
【问题描述】:

我正在尝试做这个问题/答案的内容 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader 而是在科尔多瓦。

android {
    ....
    defaultConfig {
        ....
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }
}

如果我在platforms/android/build.gradle 使用 Cordova Android 6.4.0 手动编辑 build.gradle 则此方法有效(7.1 似乎破坏了几乎所有插件,包括一些 cordova 插件,例如 cordova-network-information,所以我一直无法升级至今,正在寻找其他解决方案。

手动编辑并不理想,有没有办法自动设置?可能带有钩子或 config.xml 更改?

谢谢

(编辑) 成功更新到 7.1,64 位还是坏了。

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    我能够使用 build-extras 选项以及 Android 7.1 来做到这一点

    在您的项目根目录中,创建一个名为build-extras.gradle的文件

    把这个放进去保存

    android {
        defaultConfig {
            ndk {
                    abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
                }
        }
    }
    

    接下来,在您的脚本文件夹中,创建一个名为 update_build_gradle.js 的新脚本

    把这个放进去保存

    module.exports = function (context) {
        if (context.opts.cordova.platforms.indexOf('android') < 0) {
            return;
        }
        console.log("Starting gradle modifications");
        const path = require('path');
        const fs = require('fs');
        const gradlePath = path.join(context.opts.projectRoot, 'platforms/android/app/build-extras.gradle');
        const gradleExtraPath = path.join(context.opts.projectRoot, 'build-extras.gradle');
        return new Promise(function (resolve, reject) {
            fs.copyFile(gradleExtraPath, gradlePath, function (err) {
                if (err) {
                    console.error("Failed to copy to " + gradlePath + " from " + gradleExtraPath);
                    reject(err);
                } else {
                    console.log("Copied to " + gradlePath + " successfully");
                    resolve();
                }
            });
        });
    };
    

    最后,打开你的 config.xml,找到你的 &lt;platform name="android"&gt; 树并输入这个新的钩子

    &lt;hook src="scripts/update_build_gradle.js" type="before_build" /&gt;

    注意这里的文档https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#extending-buildgradle 是错误的。

    。该文件必须放在android平台目录(/platforms/android)中,因此建议您通过附加到before_build钩子的脚本将其复制。

    它实际上需要在 /platforms/android/app 中

    -编辑 从 cordova 版本 9 开始,您不能再使用 requireCordovaModule。但您可以安全地替换为 require

    【讨论】:

    • 2019 年 2 月检查,文件位置的文档仍然错误。
    • 2019 年 4 月,文档已修复
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    相关资源
    最近更新 更多