Cordova Android构建错误"无法读取属性'长度'未定义"

时间:2017-07-11 04:08:30

标签: android cordova

我正在更新一个较旧的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

4 个答案:

答案 0 :(得分: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
    
  4. 以上是我在上面(在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位置

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

        

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

      1. 更新Android Studio和所有SDK包

      2. 更新npm

        npm update -g
        
      3. 注意:在OS X 10.11 El Capitan或更高版本上,运行:

        sudo npm update -g --unsafe-perm=true
        
        1. 更新Cordova

          npm update -g cordova
          
        2. 如果所有这些对你都没有用,而你别无选择,我建议你尝试将Cordova降级到版本6.4.0:

          npm update -g cordova@6.4.0
          

答案 1 :(得分:0)

您可以使用

降级cordova cli
npm install -g cordova@6.4.0

使用give命令构建项目

ionic cordova build android

无需添加平台,它会自动添加。 如果要求更新cordova cli,请选择否

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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