【问题标题】:Cordova Project Error : spawn EACCESCordova 项目错误:产生 EACCES
【发布时间】:2017-11-06 03:53:36
【问题描述】:

就在 1 周前,我能够在同一台 Mac 机器上运行相同的项目, 但是在将我的系统 android studio 升级到 3.0 stable 之后 release ,这个 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.pomhttps://repo1.maven.org/maven2/com/android/tools/build/gradle/2.3.3/gradle-2.3.3.jar 要求:项目:CordovaLib 添加 Google Maven 存储库并同步项目 打开文件

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    自己找到解决方案,将以下给定的构建脚本和依赖项复制/粘贴到 android studio Cordova 库“build.gradle”以及项目级别“build.gradle”中:

    buildscript {
        repositories {
            mavenCentral()
            google()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.0'
        }
    
    }
    

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

    【讨论】:

    • 帮帮我。您到底更新了什么以及具体更新了哪些文件。
    • 如果您的 android studio 是 3.0,则复制/粘贴上面给定的 buildscript 和依赖项。
    【解决方案2】:

    更新:原来这是一个已知的 Cordova/Android Studio 3.0 问题here。基本上,Android Studio 3 移除了对 Cordova 正在使用的旧的按惯例构建项目目录结构的支持。因此,在 Cordova 解决问题之前,只有较旧的 android gradle 插件和 gradle 版本对有效(如下所示)。

    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 并进行测试。

    【讨论】:

    • 如果您已将 Android Studio 更新到 3.0,则将依赖项用作 'classpath 'com.android.tools.build:gradle:3.0.0'' 。并在 buildscript 中添加 google(),与下面的答案相同。
    • @LuckyRana,我无法让 Android Gradle 插件 3.0.0 + Gradle 4.1 和 google() 存储库添加工作。鉴于我正在使用的环境,我只能让 Android Gradle 插件 2.3.0 + Gradle 3.3 工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2016-09-09
    • 1970-01-01
    • 2017-09-27
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多