这是我的离子信息
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。
我真的不知道这意味着什么,谷歌也没有任何真正的帮助。我需要做什么?
注意:在发布后发现了这一点。在此将其转发,以防它可以帮助其他人。
答案 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
}