我正在尝试做这个问题/答案 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader 但是在cordova中。
android {
....
defaultConfig {
....
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
}
如果我在platforms/android/build.gradle
中手动编辑build.gradle,这可行。使用Cordova Android 6.4.0(7.1似乎打破几乎每个插件,包括一些cordova插件,如cordova-network-information,所以我一直到目前为止无法升级,我正在寻找其他解决方案。)
手动编辑并不理想,有没有办法自动设置?可能有一个hook或config.xml更改?
由于
(编辑) 成功更新到7.1,64位仍然坏了。
答案 0 :(得分:2)
我可以使用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,找到您的<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中
-编辑
从cordova版本9开始,您不能再使用requireCordovaModule
。但是您可以放心地用require
代替。