繁体   English   中英

Cordova项目错误:生成EACCES

[英]Cordova Project Error : spawn EACCES

就在一周前,我能够在同一台Mac机器上运行相同的项目,但是将我的系统android studio升级到3.0稳定版后,此Cordova项目已停止从控制台和通过android studio进行构建。

请检查以下是控制台运行命令异常日志

 Last login: Mon Nov  6 11:47:13 on ttys000
    XKL-0439:~ LuckyRana$ sudo cordova create ERL  com.xchanging.erla ERL
    Password:
    Creating a new cordova project.
    XKL-0439:~ LuckyRana$ cordova platform add android --save
    Error: Current working directory is not a Cordova-based project.
    XKL-0439:~ LuckyRana$ cd ERL
    XKL-0439:ERL LuckyRana$ sudo cordova platform add android --save
    Using cordova-fetch for cordova-android@~6.3.0
    Adding android project...
    Creating Cordova project for the Android platform:
        Path: platforms/android
        Package: com.xchanging.erla
        Name: ERL
        Activity: MainActivity
        Android target: android-26
    Subproject Path: CordovaLib
    Android project created with cordova-android@6.3.0
    Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the project
    Installing "cordova-plugin-whitelist" for android

                   This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.

    Adding cordova-plugin-whitelist to package.json
    Saved plugin info for "cordova-plugin-whitelist" to config.xml
    --save flag or autosave detected
    Saving android@~6.3.0 into config.xml file ...
    XKL-0439:ERL LuckyRana$  cordova requirements android

    Requirements check results for android:
    Java JDK: installed 1.8.0
    Android SDK: installed true
    Android target: installed android-27,android-26,android-25,android-24,Google Inc.:Google APIs:24,android-23,Google Inc.:Google APIs:23,android-22,Google Inc.:Google APIs:22,android-21,Google Inc.:Google APIs:21
    Gradle: installed /Applications/Android Studio.app/Contents/gradle/gradle-4.1/bin/gradle
    XKL-0439:ERL LuckyRana$ cordova build android --verbose
    No scripts found for hook "before_build".
    No scripts found for hook "before_prepare".
    Checking config.xml and package.json for saved platforms that haven't been added to the project
    Config.xml and package.json platforms are the same. No pkg.json modification.
    Package.json and config.xml platforms are different. Updating config.xml with most current list of platforms.
    Error: EACCES: permission denied, open '/Users/LuckyRana/ERL/package.json'
    XKL-0439:ERL LuckyRana$ sudo cordova run android
    ANDROID_HOME=/Users/LuckyRana/Library/Android/sdk
    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
    Error: spawn EACCES
    XKL-0439:ERL LuckyRana$ 

Android Studio错误日志:

找不到com.android.tools.build:gradle:2.3.3。 在以下位置搜索: https : //repo1.maven.org/maven2/com/android/tools/build/gradle/2.3.3/gradle-2.3.3.pom https://repo1.maven.org/maven2 /com/android/tools/build/gradle/2.3.3/gradle-2.3.3.jar必需:project:CordovaLib添加Google Maven存储库并同步项目Open File

自己找到解决方案,将以下给定的buildscript和依赖项复制/粘贴到android studio Cordova库'build.gradle'中,也粘贴到项目级别'build.gradle'中:

buildscript {
    repositories {
        mavenCentral()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }

}

现在我可以再次构建该项目。

更新:事实证明这是此处的已知Cordova / Android Studio 3.0问题。 基本上,Android Studio 3删除了对Cordova使用的旧的按惯例构建项目目录结构的支持。 因此,只有更旧的android gradle插件和gradle版本对才起作用(如下所示),直到Cordova修复了该问题。

MacOS X version -> 10.12.6
node --version -> 8.0.0
npm --version -> 5.5.1
cordova --version -> 7.1.0
Android Studio IDE -> 3.0

解决问题的步骤:

myApp > cordova run android

ANDROID_HOME=/Users/Luckyjohn/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
Subproject Path: CordovaLib
Error: spawn EACCES

1)将Cordova“ myApp / platforms / android”项目的Android gradle插件和gradle版本对更改为Cordova gradle构建配置和Android Studio 3.0 IDE支持的对。 旧值在下面注释掉。

.../android build.gradle:
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0'
    //classpath 'com.android.tools.build:gradle:2.2.3'
}
.../android/CordovaLib build.gradle:
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0'
    //classpath 'com.android.tools.build:gradle:2.2.3'
.../gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

2)Cordova平台“ android”目录和所有子目录上的chmod执行位:

cd to .../myApp/platforms
chmod -R 755 android

不确定是否需要这样做,请先执行#1并进行测试。

3)我对Android sdk目录及其所有子目录也做了相同的操作。 不确定是否需要这样做,请先执行#1并进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM