com.huawei.agconnect 未找到插件
com.huawei.agconnect plugin not found
所以我正在尝试使用新的 Kotlin DSL 语法将 AppGallery connect 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
中的类路径,它会起作用。有谁知道为什么?
任何 Gradle 插件(这根本不是 AGC 特定的)只能在根项目级别加载,然后通常在模块级别应用。我刚刚尝试删除 buildscript
块(与问题相同),这确实导致:
Plugin [id: 'com.huawei.agconnect', version: '1.6.3.300', apply: false] was not found in any of the following sources:
maven(https://developer.huawei.com/repo/)
Plugin Repositories (could not resolve plugin artifact 'com.huawei.agconnect:com.huawei.agconnect.gradle.plugin:1.6.3.300')
插件依赖无法解决,而 pluginManagement
不断添加 .gradle.plugin
。如果存储库知道完整名称而不仅仅是简写名称 agcp
,这应该是开箱即用的(这实际上是默认的预期包名称,除非更改它):
com.huawei.agconnect:com.huawei.agconnect.gradle.plugin:1.6.3.300
这不匹配:
com.huawei.agconnect:agcp:1.6.3.30
可以使用 pluginManagement.resolutionStrategy
作为临时解决方法...
settings.gradle
被用来重写错误假定的包名称:
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
google()
maven { url 'https://developer.huawei.com/repo/' }
}
plugins {}
resolutionStrategy {
eachPlugin {
if (it.requested.id.getNamespace() == 'com.huawei.agconnect') {
println ">> ${it.requested.id.id}"
if (it.requested.id.id == 'com.huawei.agconnect.agcp') {
it.useModule('com.huawei.agconnect:agcp:1.6.3.300')
}
println ">> ${it.target}"
} else {
println "> ${it.target}"
}
}
}
}
plugins
必须在 build.gradle
:
中定义
plugins {
id "com.android.application" version "7.1.2" apply false
id "com.android.library" version "7.1.2" apply false
id "com.huawei.agconnect.agcp" version "1.6.3.300" apply false
}
println
将输出更新的(假的)id
到 artifact
映射 it.target
:
[
id: 'com.huawei.agconnect.agcp',
version: '1.6.3.300',
artifact: 'com.huawei.agconnect:agcp:1.6.3.300',
apply: false
]
应用的时候还是要用到真正的id
:
apply plugin: 'com.huawei.agconnect'
agcp { enableAPMS true }
只是(从版本 1.6.3.300 开始)APMSTransform
进行了一些检查,这需要将 AGP 明确地放在 classpath
上。 buildscript
块“几乎”已过时,否则 APMSTransform
会错误地认为它是唯一可以加载 Android Gradle 插件的地方。
/** Still required due to AGCP plugin. */
buildscript {
repositories {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
}
}
它还需要检查以下任一插件:
plugins {
id "com.android.application" version "7.1.2" apply false
id "com.android.library" version "7.1.2" apply false
}
例如:
project.getPluginManager().hasPlugin('com.android.application') || project.getPluginManager().hasPlugin('com.android.library')
为了使这项工作完美无缺(没有 resolutionStrategy
),这需要更新检查,以免 com.android.tools.build:gradle
is no set in the build.gradle
文件和
还有一个 URL 重写,它将正确处理包名称的 .gradle.plugin
后缀,因此 com.huawei.agconnect.gradle.plugin
和 agcp
将导致相同的包下载。 resolutionStrategy
确实是解决方法,而不是答案。
所以我正在尝试使用新的 Kotlin DSL 语法将 AppGallery connect 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
中的类路径,它会起作用。有谁知道为什么?
任何 Gradle 插件(这根本不是 AGC 特定的)只能在根项目级别加载,然后通常在模块级别应用。我刚刚尝试删除 buildscript
块(与问题相同),这确实导致:
Plugin [id: 'com.huawei.agconnect', version: '1.6.3.300', apply: false] was not found in any of the following sources:
maven(https://developer.huawei.com/repo/)
Plugin Repositories (could not resolve plugin artifact 'com.huawei.agconnect:com.huawei.agconnect.gradle.plugin:1.6.3.300')
插件依赖无法解决,而 pluginManagement
不断添加 .gradle.plugin
。如果存储库知道完整名称而不仅仅是简写名称 agcp
,这应该是开箱即用的(这实际上是默认的预期包名称,除非更改它):
com.huawei.agconnect:com.huawei.agconnect.gradle.plugin:1.6.3.300
这不匹配:
com.huawei.agconnect:agcp:1.6.3.30
可以使用 pluginManagement.resolutionStrategy
作为临时解决方法...
settings.gradle
被用来重写错误假定的包名称:
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
google()
maven { url 'https://developer.huawei.com/repo/' }
}
plugins {}
resolutionStrategy {
eachPlugin {
if (it.requested.id.getNamespace() == 'com.huawei.agconnect') {
println ">> ${it.requested.id.id}"
if (it.requested.id.id == 'com.huawei.agconnect.agcp') {
it.useModule('com.huawei.agconnect:agcp:1.6.3.300')
}
println ">> ${it.target}"
} else {
println "> ${it.target}"
}
}
}
}
plugins
必须在 build.gradle
:
plugins {
id "com.android.application" version "7.1.2" apply false
id "com.android.library" version "7.1.2" apply false
id "com.huawei.agconnect.agcp" version "1.6.3.300" apply false
}
println
将输出更新的(假的)id
到 artifact
映射 it.target
:
[
id: 'com.huawei.agconnect.agcp',
version: '1.6.3.300',
artifact: 'com.huawei.agconnect:agcp:1.6.3.300',
apply: false
]
应用的时候还是要用到真正的id
:
apply plugin: 'com.huawei.agconnect'
agcp { enableAPMS true }
只是(从版本 1.6.3.300 开始)APMSTransform
进行了一些检查,这需要将 AGP 明确地放在 classpath
上。 buildscript
块“几乎”已过时,否则 APMSTransform
会错误地认为它是唯一可以加载 Android Gradle 插件的地方。
/** Still required due to AGCP plugin. */
buildscript {
repositories {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
}
}
它还需要检查以下任一插件:
plugins {
id "com.android.application" version "7.1.2" apply false
id "com.android.library" version "7.1.2" apply false
}
例如:
project.getPluginManager().hasPlugin('com.android.application') || project.getPluginManager().hasPlugin('com.android.library')
为了使这项工作完美无缺(没有 resolutionStrategy
),这需要更新检查,以免 com.android.tools.build:gradle
is no set in the build.gradle
文件和
还有一个 URL 重写,它将正确处理包名称的 .gradle.plugin
后缀,因此 com.huawei.agconnect.gradle.plugin
和 agcp
将导致相同的包下载。 resolutionStrategy
确实是解决方法,而不是答案。