更新到Android Studio 3.0后无法运行Ionic应用

时间:2017-10-30 19:44:52

标签: android cordova gradle ionic3

这是我的离子信息

  

cli包:(/ Users / billb / dev / customer-mkt-app / node_modules)

@ionic/cli-utils  : 1.15.2
ionic (Ionic CLI) : 3.15.2

全球套餐:

cordova (Cordova CLI) : 7.0.1

本地包裹:

@ionic/app-scripts : 3.0.1
Cordova Platforms  : android 6.2.3 ios 4.4.0
Ionic Framework    : ionic-angular 3.3.0

系统:

Android SDK Tools : 26.1.1
ios-deploy        : 1.9.2
Node              : v6.11.5
npm               : 3.10.10
OS                : macOS Sierra
Xcode             : Xcode 9.0.1 Build version 9A1004

环境变量:

ANDROID_HOME : /Users/billb/Library/Android/sdk

其他:

backend : pro

我可以成功构建应用。当我尝试在Android Studio中打开它时,我收到了一些错误,主要是围绕一个gradle同步失败。这是消息控制台中的5个错误。

  

无法解决':@ debug / compileClasspath':无法解析项目:CordovaLib。   无法解决项目:CordovaLib。

     

要求:       项目:

     

Project:声明配置' debugCompile'的依赖关系。配置'调试'未在项目>中描述:> CordovaLib。

  

无法解决':@ debugAndroidTest / compileClasspath':无法解析项目:CordovaLib。   无法解决项目:CordovaLib。

     

要求:       项目:

     

Project:声明配置' debugCompile'的依赖关系。配置'调试'未在项目>中描述:> CordovaLib。

  

无法解析':@ debugUnitTest / compileClasspath':无法解析项目:CordovaLib。   无法解决项目:CordovaLib。

     

要求:       项目:

     

Project:声明配置' debugCompile'的依赖关系。配置'调试'未在项目描述符中声明>   :CordovaLib

  

无法解决':@ release / compileClasspath':无法解析项目:CordovaLib。

     

无法解析项目:CordovaLib。   要求:       项目:

     

项目:声明来自配置的依赖关系&release; releaseCompile'配置'发布'未在项目描述符中声明:CordovaLib。

  

无法解决':@ releaseUnitTest / compileClasspath':无法解析项目:CordovaLib。

     

无法解析项目:CordovaLib。   要求:       项目:

     

项目:声明来自配置的依赖关系&release; releaseCompile'配置'发布'未在项目描述符中声明:CordovaLib。

我真的不知道这意味着什么,谷歌也没有任何真正的帮助。我需要做什么?

注意:在发布后发现了这一点。在此将其转发,以防它可以帮助其他人。

Don't upgrade to Android Studio 3

9 个答案:

答案 0 :(得分:99)

我在build.gradle文件中注释了以下几行:

//debugCompile project(path: 'CordovaLib', configuration: 'debug') 

//releaseCompile project(path: 'CordovaLib', configuration: 'release')

并补充说:

compile project(':CordovaLib')

这对我有用。

答案 1 :(得分:13)

如果您正在使用Cordova build.gradle会自动生成,当您下次构建项目时,上面接受的答案中的更改会被覆盖回原来无效的旧版本。

所以编辑平台/ android / cordova / lib / builder / GradleBuiler.js 注释掉第136-139行并添加下一行

/*depsList += '    debugCompile(project(path: "' + libName + '", configuration: "debug"))';
insertExclude(p);
depsList += '    releaseCompile(project(path: "' + libName + '", configuration: "release"))';
insertExclude(p);
    */
    depsList += "    compile project(':CordovaLib')";
    insertExclude(p);

答案 2 :(得分:11)

如果您在Android Studio 3.0.1中遇到此类错误:

make binutils/readelf

转到sysdep.h:23:25: fatal error: alloca-conf.h: No such file or directory文件 - >找到依赖关系并像这样改变它

Unable to resolve dependency for :@debug/compileClasspath’: Could not resolve project :CordovaLib.

答案 3 :(得分:10)

这是一个已知问题,您可以找到相关的jira问题here,基本问题是this one,两者都在“正在进行中”。并且已经有pull request on github你可以尝试,但我不能保证你已经是一个有效的版本了。如果您想尝试,可以像这样安装:

cordova platform add https://github.com/infil00p/cordova-android.git#StudioThreeFix

答案 4 :(得分:4)

在Android build .gradle依赖项中添加此项。就是这样。

compile project(':CordovaLib')

例如:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    //debugCompile(project(path: "CordovaLib", configuration: "debug"))
    //releaseCompile(project(path: "CordovaLib", configuration: "release"))
    compile project(':CordovaLib')
    compile "com.android.support:support-v4:24.1.1+"
    compile "com.google.android.gms:play-services-analytics:+"
    // SUB-PROJECT DEPENDENCIES END
}

答案 5 :(得分:2)

所以,我只花了两天时间与这个人进行斗争并提出半手动解决方案。

因为Gradle决定在没有任何迁移宽限期的情况下拔掉它的依赖格式,我们不得不做这样的事情。

(Linux下的说明。对于Windows,你需要一些7zip或类似的东西用于最后一步)

从您的用户主目录转到.cordova/lib/npm_cache/cordova-android 在那里,应该有一个或多个带有版本号的文件夹 通常只运行最新版本 打开它。
删除package目录,但 package.tgz文件 解压缩package.tgz文件,然后将其删除,或将其移至备份位置。 (生成一些额外的文件,我们不想在以后重新打包)
编辑文件package/bin/templates/cordova/lib/plugin-build.gradle,在dependencies内删除这些行

debugCompile project(path: ":CordovaLib", configuration: "debug")
releaseCompile project(path: ":CordovaLib", configuration: "release")

替换它们
implementation project(path: ":CordovaLib")

归档包目录。在Linux中,短命令是tar czf package.tgz package。在Windows上,您必须使用7zip创建.tar.gz存档,并将其重命名为.tgz

之后,在使用旧版本的干净存储库中运行cordova prepare将再次起作用,除非某些插件明确使用旧的声明格式并需要更新(example

答案 6 :(得分:2)

好的,我找到了解决方法。

我使用的是cordova-android:6.3.0。我将版本更新为7.1.0,然后在config.xml中更改了这一行

之前为:

<preference name="android-minSdkVersion" value="16" />

现在我正在使用:

<preference name="android-minSdkVersion" value="19" />

这样,ionic cordova运行android可以再次工作,而不必更改build.gradle中的那些行!

答案 7 :(得分:0)

当您遇到此类问题时,您只需将gradle版本降级为2.2.3并重新同步它将起作用的项目。

答案 8 :(得分:0)

配置'compile'已过时,已被'implementation'代替。 它将在2018年底删除。

只需将“编译”替换为“实现”

dependencies {
    // SUB-PROJECT DEPENDENCIES START
    //debugCompile(project(path: "CordovaLib", configuration: "debug"))
    //releaseCompile(project(path: "CordovaLib", configuration: "release"))
    implementation project(':CordovaLib')
    // SUB-PROJECT DEPENDENCIES END
}