添加平台并使用离子科尔多瓦构建时出错?
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)时出错