以下是我的自定義插件代碼
import com.android.annotations.NonNull;
import com.android.build.gradle.LibraryExtension;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
public class CustomPlugin implements Plugin<Project> {
@Override
public void apply(@NonNull Project project) {
project.getPluginManager().withPlugin("com.android.library", plugin -> {
//code here
});
}
}
將 android gradle 插件從 4.2.1 升級到 7.0 以上自定義插件代碼后顯示錯誤:包 com.android.annotations 不存在
如何修復此錯誤?
uj5u.com熱心網友回復:
當我和 alphanso 在同一個專案中作業并從他那里接手 AGP 升級時,這是我最終發現的:
代碼位于.buildSrc我們專案的目錄中,并使用 Gradle 插件java-library和java-gradle-plugin.
因此android.useAndroidX=true沒有任何效果,因為這僅在您使用 Android 插件時有效,無論是com.android.library還是com.android.application.
突然丟失的類(我們的子包中com.android.build也缺少其他一些類)的根本原因在其他地方:
使用 AGP 7.0,大多數庫依賴項com.android.tools.build:gradle從“編譯時”更改為“運行時”,如下所示:
AGP 4.2.2:https : //mvnrepository.com/artifact/com.android.tools.build/gradle/4.2.2
AGP 7.0:https : //mvnrepository.com/artifact/com.android.tools.build/gradle/7.0.0
這意味著當切換到 AGP 7.x 時,您必須手動添加缺少的依賴項。
在我們的例子中添加
implementation "com.android.tools:common:30.0.3"
解決了這個問題。
uj5u.com熱心網友回復:
在android gradle plugin 7.0中,推薦使用AndroidX Libraries。首先,在您的 gradle.properties 檔案中,通過添加啟用 AndroidX
android.useAndroidX=true
還要添加這些依賴項(設定其他 androidx 庫),
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
同步您的 gradle 檔案,然后將匯入更改com.android.annotations.NonNull為androidx.annotations.NonNull
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/328556.html
