我正在使用ionic来构建移动应用程序。当我使用以下命令:ionic cordova build android / ionic cordova platform add android时,出现以下错误。请帮我修复它。
'AppMyCity>离子Cordova平台添加android
cordova平台添加android --save 将cordova-fetch用于cordova-android@~7.0.0
正在添加android项目...
为Android平台创建Cordova项目:
Path: platforms\android
Package: io.ionic.starter
Name: MyCity
Activity: MainActivity
Android target: android-26
子项目路径:CordovaLib 子项目路径:app 使用cordova-android@7.0.0创建的Android项目
检测到Android Studio项目
检测到Android Studio项目
(节点:70480)UnhandledPromiseRejectionWarning:语法错误:JSON中位置3上的意外令牌< 在JSON.parse() 在getJson(C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ src \ plugman \ util \ metadata.js:29:31) 在Object.exports.get_fetch_metadata(C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ src \ plugman \ util \ metadata.js:41:24) 在C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ src \ cordova \ platform \ addHelper.js:343:48 在_fulfilled(C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ node_modules \ q \ q.js:787:54) 在self.promiseDispatch.done(C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ node_modules \ q \ q.js:816:30) 在Promise.promise.promiseDispatch(C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ node_modules \ q \ q.js:749:13) 在C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ node_modules \ q \ q.js:810:14 刷新时(C:\ Users \ anhde \ AppData \ Roaming \ npm \ node_modules \ cordova-lib \ node_modules \ q \ q.js:108:17) 在_combinedTickCallback(内部/进程/next_tick.js:131:7) (节点:70480)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。 (拒绝ID:1) (节点:70480)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。
答案 0 :(得分:0)
当已经有一个现有平台并将其删除时,我遇到了一些问题。有时您确实需要删除项目中的plugins文件夹,然后再次添加平台。您是否有一些脚本来确保一切都在android@7.0.0上正常工作?我必须修改一些文件,以便所有路径都是正确的。
patch-android-studio-check.js
module.exports = function(context) {
if (context.opts.cordova.platforms.indexOf('android') < 0) {
return;
}
const path = context.requireCordovaModule('path');
const androidStudioPath = path.join(context.opts.projectRoot, 'platforms/android/cordova/lib/AndroidStudio');
const androidStudio = context.requireCordovaModule(androidStudioPath);
androidStudio.isAndroidStudioProject = function() { return true; };
};
build-extras.gradle.js
var fs = require('fs');
var path = require('path');
if(fs.existsSync(path.resolve(__dirname, '../platforms/android'))) {
fs.createReadStream(path.resolve(__dirname, 'build-extras.gradle')).pipe(fs.createWriteStream(path.resolve(__dirname, '../platforms/android/build-extras.gradle')));
}
build-extras.gradle
android {
flavorDimensions "default"
}
config.xml
<platform name="android">
<hook src="package-hooks/build-extras.gradle.js" type="after_platform_add" />
<hook src="package-hooks/patch-android-studio-check.js" type="before_plugin_install" />
<hook src="package-hooks/patch-android-studio-check.js" type="before_plugin_add" />
<hook src="package-hooks/patch-android-studio-check.js" type="before_build" />
<hook src="package-hooks/patch-android-studio-check.js" type="before_run" />
<hook src="package-hooks/patch-android-studio-check.js" type="before_plugin_rm" />
...