因此,我尝试使用新的KotlinDSL语法将AppGallery连接gradle插件添加到我的Android项目中。
org.gradle.internal.exceptions.LocationAwareException: Build file 'D:\#KERJAAN\devbase\sample\build.gradle.kts' line: 3
Plugin [id: 'com.huawei.agconnect', version: '1.6.3.300'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.huawei.agconnect:com.huawei.agconnect.gradle.plugin:1.6.3.300')
Searched in the following repositories:
Gradle Central Plugin Repository
Google
MavenRepo
maven(https://developer.huawei.com/repo/)
我所做的就是在settings.gradle.kts
中添加这样的插件库:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
maven { setUrl("https://developer.huawei.com/repo/") }
}
}
在应用程序的build.gradle.kts
中添加如下插件:
plugins {
id("com.huawei.agconnect") version "1.6.3.300"
}
有趣的是,如果使用build.gradle.kts
根目录下的类路径,它就可以工作。有人知道为什么吗?
2条答案
按热度按时间iqxoj9l91#
任何Gradle插件(这根本不是AGC特定的)都只能在根项目级别加载,然后通常应用于模块级别。我刚刚尝试删除了
buildscript
块(与问题中的一样),这确实会导致:插件依赖性不会解决,而
pluginManagement
会不断添加.gradle.plugin
。如果仓库知道完整的而不是只有一个短名agcp
,这应该是现成的(这实际上是默认的包名,除非更改它):和这个不匹配:
您可以使用
pluginManagement.resolutionStrategy
作为临时解决方法...settings.gradle
正用于重写错误假定的包名称:plugins
必须在build.gradle
中定义:println
将输出更新的(假的)id
到artifact
Mapit.target
:当应用它时,仍然需要使用真实的的
id
:只是(从版本1.7.2.300开始)
APMSTransform
有一些检查,这需要显式地将AGP放在classpath
上。buildscript
块“几乎”过时了,否则APMSTransform
会错误地认为它是唯一可以加载Android Gradle插件的地方。它还需要检查以下任一插件:
例如:
为了让这件事完美地进行下去(没有
resolutionStrategy
),这将需要更新检查,以避免com.android.tools.build:gradle
在build.gradle
文件中未设置,并且还需要URL重写,这将正确处理包名称的.gradle.plugin
后缀,因此com.huawei.agconnect.gradle.plugin
和agcp
将导致相同的包下载。resolutionStrategy
确实是解决方法而不是答案。f45qwnt82#
不使用
请用老办法