添加平台并使用离子科尔多瓦构建时出错?

Posted

技术标签:

【中文标题】添加平台并使用离子科尔多瓦构建时出错?【英文标题】:Error when add platform and build with ionic cordova? 【发布时间】:2018-12-31 13:37:39 【问题描述】:

我正在使用 ionic 构建移动应用程序。当我使用命令时: ionic cordova build android / ionic cordova platform add android 它出现以下错误。请帮我解决它。

'AppMyCity> ionic cordova 平台添加android

cordova 平台添加 android --save 为 cordova-android@~7.0.0 使用 cordova-fetch

正在添加安卓项目...

为 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 项目

(node:70480) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token

【问题讨论】:

【参考方案1】:

当我已经拥有一个现有平台并将其删除时,我遇到了一些问题。有时您确实需要删除项目中的插件文件夹,然后再次添加平台。你有一些脚本来确保一切都与 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" />
...

【讨论】:

谢谢!我在自定义cordova钩子中使用const fs = context.requireCordovaModule('fs'),所以用const fs = require('fs')替换它解决了这个问题。

以上是关于添加平台并使用离子科尔多瓦构建时出错?的主要内容,如果未能解决你的问题,请参考以下文章

离子项目构建错误

尝试使用自适应图标构建科尔多瓦应用程序时出错

在 Windows 上安装离子推送插件(适用于 iOS)时出错

编译“ant”构建时出错

离子科尔多瓦构建 ios 中的新 SubprocessError 错误

离子 ios 应用程序无法访问互联网