我正在尝试做这个问题/答案所做的事情java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader而是在科尔多瓦。
android {
....
defaultConfig {
....
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
}
如果我在使用 Cordova Android 6.4.0 platforms/android/build.gradle
中手动编辑 build.gradle,这将有效(7.1 似乎破坏了几乎所有插件,包括一些 cordova 插件,如 cordova-network-information,所以我到目前为止无法升级,正在寻找其他解决方案(。
手动编辑并不理想,有没有办法自动设置? 可能带有钩子或配置.xml更改?
谢谢
(编辑(成功更新到7.1,64位仍然损坏。
我能够使用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();
}
});
});
};
最后,打开你的配置.xml,找到你的<platform name="android">
树并输入这个新的钩子
<hook src="scripts/update_build_gradle.js" type="before_build" />
请注意,此处的文档 https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#extending-buildgradle 错误。
.此文件必须放置在 android 平台目录 (/platforms/android( 中,因此建议您通过附加到 before_build 钩子的脚本将其复制过来。
它实际上需要在/platforms/android/app中
-编辑从科尔多瓦版本 9 开始,您不能再使用 requireCordovaModule
了。 但是您可以安全地更换为require
.