Android应用集成AdMob遇报错:buildscript块需先于plugins块
解决AdMob集成时build.gradle的报错问题
问题
在Android应用中集成AdMob广告,修改项目级build.gradle添加buildscript和allprojects块后,出现报错:
所有buildscript {}块必须出现在脚本中任何plugins {}块之前
原项目级build.gradle代码:
plugins { id 'com.android.application' version '7.2.2' apply false id 'com.android.library' version '7.2.2' apply false } task clean(type: Delete) { delete rootProject.buildDir } buildscript { repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } }
解决方法
Gradle语法明确要求buildscript块必须放在所有plugins块之前,调整代码顺序即可修复:
修改后的项目级build.gradle:
buildscript { repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } } plugins { id 'com.android.application' version '7.2.2' apply false id 'com.android.library' version '7.2.2' apply false } task clean(type: Delete) { delete rootProject.buildDir }
可选优化(AGP 7.0+适配)
针对Android Gradle插件7.0及以上版本,推荐将仓库配置统一迁移到settings.gradle的dependencyResolutionManagement块中,能大幅简化项目级build.gradle的结构:
settings.gradle示例:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "Test" include ':app'
此时项目级build.gradle可移除buildscript和allprojects块,仅保留核心内容:
plugins { id 'com.android.application' version '7.2.2' apply false id 'com.android.library' version '7.2.2' apply false } task clean(type: Delete) { delete rootProject.buildDir }
其他配置确认
你的app模块build.gradle和AndroidManifest.xml配置已正确:
- app模块已添加AdMob依赖:
implementation 'com.google.android.gms:play-services-ads:21.2.0' - Manifest已配置AdMob测试应用ID:
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-3940256099942544~3347511713"/>
内容的提问来源于stack exchange,提问作者reza
相关产品推荐
相关产品推荐

