Google の公式ページによれば
プロジェクト レベルの build.gradle ファイルで、buildscript セクションと allprojects セクションの両方に Google の Maven リポジトリと Maven セントラル リポジトリを含めます。
とあるが、下記のようにすると十中八九、sync now に失敗する
buildscript { repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } }
そもそも settings.gradle.xml に下記が含まれているので上記は不要な処理だと思われる
pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } }
build.gradle(app) ファイルを開き、「dependencies」ブロック内に下記項目を追加
dependencies { // ↓ 追加 implementation 'com.google.android.gms:play-services-ads:23.0.0' }
sync now 実行
strings.xml 文字列リソースに AdMobのアプリID とユニット広告 ID を追加
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ads_AppId">ca-app-pub-3940256099942544~3347511713</string><!-- テスト用 --> <string name="ads_UnitId_Banner">ca-app-pub-3940256099942544/6300978111</string><!-- テスト用 --> </resources>
(省略可)以前のバージョンが Android 13 で動作するように AD_ID 権限を宣言します。
アプリで Google Mobile Ads SDK バージョン 20.4.0 以降を使用している場合、SDK は自動的に com.google.android.gms.permission.AD_ID 権限を宣言し、利用可能な広告 ID にアクセスできるため、この手順は省略できます。
とあるが、name の APPLICATION_ID と value の ads_AppId はセットで指定しないとアプリがクラッシュするので手順はまったくもって省略できず必須であった。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.areseiproject"> <uses-permission android:name="android.permission.INTERNET" /> <!-- AD_ID権限追加 --> <uses-permission android:name="com.google.android.gms.permission.AD_ID" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="android.app.lib_name" android:value="" /> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="@string/ads_AppId" /> </application> </manifest>
レイアウト.xml に広告ビューを追加
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="@string/ads_UnitId_Banner" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"> </com.google.android.gms.ads.AdView>
広告ビューの上に位置する View に下記を追加し adView に被らないように配慮する
app:layout_constraintBottom_toTopOf="@+id/adView"
MainActivity.kt
import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdView import com.google.android.gms.ads.MobileAds class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private lateinit var mAdView: AdView @SuppressLint("ClickableViewAccessibility") @RequiresApi(Build.VERSION_CODES.Q) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) MobileAds.initialize(this) {} mAdView = findViewById(R.id.adView) val adRequest = AdRequest.Builder().build() mAdView.loadAd(adRequest) } }
バナー広告の表示程度ならこれだけで済む