【问题标题】:Cordova Android build error "Cannot read property 'length' of undefined"Cordova Android 构建错误“无法读取未定义的属性‘长度’”
【发布时间】:2017-07-11 04:08:30
【问题描述】:

我正在更新一个较旧的 cordova 项目。作为此过程的一部分,我删除了 android 平台并重新添加了它。

现在,当我尝试构建项目时,出现以下错误:

C:\App>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.
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Checking for any plugins added to the project that have not been installed in android platform
No differences found between plugins added to project and installed in android platform. Continuing...
Generating platform-specific config.xml from defaults for android at C:\App\platforms\android\res\xml\config.xml
Merging project's config.xml into platform-specific android config.xml
Found "merges/android" folder. Copying its contents into the android project.
Merging and updating files from [www, platforms\android\platform_www, merges\android] to platforms\android\assets\www
Wrote out android application name "App" to C:\App\platforms\android\res\values\strings.xml
android-versionCode not found in config.xml. Generating a code based on version in config.xml (1.0.20): 10020
Wrote out Android package name "com.nge.app" to C:\App\platforms\android\src\com\nge\bca\MainActivity.java
Updating icons at platforms\android\res
Updating splash screens at platforms\android\res
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".
No scripts found for hook "before_compile".
ANDROID_HOME=C:\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_40
Error: Cannot read property 'length' of undefined

这在我删除平台之前确实有效,所以我猜这是一个错误或更改的配置文件。

这里也有类似的问题:https://pt.stackoverflow.com/questions/219442/cordova-build-android-error-cannot-read-property-length-of-undefined

【问题讨论】:

  • 你可以尝试添加一个新的准系统cordova项目并尝试构建android平台吗?
  • 是的,结果相同。
  • 你能发布你的 config.xml 吗?
  • 面临同样的问题。最后,面对这个错误 >cordova 要求 android 的要求检查结果:Java JDK:已安装 1.8.0 Android SDK:已安装 true Gradle:未安装无法读取未定义的属性“长度”

标签: android cordova


【解决方案1】:

我通过将 Android 降级到版本 6.1.2 找到了另一个解决方案,因为这里的建议(以及各种论坛上的许多其他建议,如重新安装插件等)对我不起作用:

cordova platform update android@6.1.2 --save

如果这不起作用,请尝试以下方法:

  1. 先移除android平台:

    cordova platform remove android
    
  2. 添加 Android 版本 6.1.2:

    cordova platform add android@6.1.2
    
  3. 构建 Android:

    cordova build android
    

这是我在上述之前采取的一些额外步骤(在 Mac 上),以确保:

  1. 下载最新的 JDK 并安装。

  2. 以这种方式添加 JAVA_HOME:

    echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
    
  3. 重启shell(CMD+Q再打开)

  4. 确保echo $JAVA_HOME 等于 Android Studio -> 文件 -> 项目结构 -> JDK 位置

对我来说,这是以下路径和版本:

/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

  1. 更新 Android Studio 和所有 SDK 包

  2. 更新 npm

    npm update -g
    

注意:在 OS X 10.11 El Capitan 或更高版本上,运行:

sudo npm update -g --unsafe-perm=true
  1. 更新科尔多瓦

    npm update -g cordova
    

如果所有这些对您都不起作用并且您别无选择,我建议您尝试将 Cordova 降级到版本 6.4.0:

npm update -g cordova@6.4.0

【讨论】:

    【解决方案2】:

    您可以使用降级cordova cli

    npm install -g cordova@6.4.0
    

    并使用 give 命令构建项目

    ionic cordova build android
    

    不需要添加平台,它会自动添加。 如果它要求更新cordova cli,则选择no

    【讨论】:

    • 对我来说,降级适用于空白项目。我没有使用离子,所以构建不需要额外的。我将调查是否需要提交错误报告。
    【解决方案3】:

    通过以下方式解决了一个错误: 大家好, 解决了通过命令提示符运行 cordova run android 以获取cordova 项目附加问题截图的问题。 要解决此问题,请删除高级系统设置下的所有环境变量。 卸载java重新安装,下载旧sdk工具避免提示eclipse现在。

    在用户变量下添加 JAVA_HOME = C:\Program Files\Java\jdk1.8.0_131

    在系统变量下 ANDROD_HOME = C:\cordova\android-sdk 路径 = C:\Program Files\Android\Android Studio2\gradle\gradle-3.2\bin\;%JAVA_HOME%\bin 以避免错误: 未找到已安装的构建工具。安装 Android 构建工具 19.1.0 或更高版本。 现在问题解决了?

    【讨论】:

      【解决方案4】:

      问题是我的 gradle 版本是 2.1,而 Cordova 想要 3.2。更新 Android Studio(它是 2.1)并确保环境变量是最新的是让它再次工作的主要技巧。

      【讨论】:

        猜你喜欢
        • 2015-05-08
        • 2020-06-02
        • 2020-07-12
        • 2015-02-05
        • 2017-11-25
        • 2021-02-26
        • 1970-01-01
        • 2022-11-12
        • 2018-07-29
        相关资源
        最近更新 更多