添加平台并使用离子cordova进行构建时出错?

时间:2018-07-24 03:23:53

标签: cordova ionic-framework ionic2 cordova-android

我正在使用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进程。

1 个答案:

答案 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" />
...