簡體   English   中英

Android studio - 谷歌廣告崩潰應用

[英]Android studio - Google ads crash application

我正在嘗試在我的應用程序中實施谷歌廣告服務,但沒有運氣..

我試圖更改應用程序的 sdk 版本以及谷歌廣告實施版本,每次應用程序在啟動時崩潰,我都不知道我做錯了什么,感謝任何幫助!

這些是我遵循的步驟:

  1. 谷歌廣告的依賴:
 implementation 'com.google.android.gms:play-services-ads:18.3.0'
  1. 我的 activity_main.xml 中的 AdView:
    <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"
        ads:adSize="BANNER"
        ads:adUnitId="@string/bannerId"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true" />
  1. MainActivity.java 中的初始化代碼
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
                AdView mAdView = (AdView)findViewById(R.id.adView);
                AdRequest adRequest = new AdRequest.Builder().build();
                mAdView.loadAd(adRequest);
            }
        });

此外,我升級到 sdk 28(原為 27),使用“遷移到 AndroidX 按鈕”來執行此操作。

這就是我的應用程序 gradle 的樣子:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.ofekTe.MyWorkouts"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    maven { url 'https://jitpack.io' }
    mavenCentral()
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.2.0-alpha01'
    implementation 'com.google.android.material:material:1.2.0-alpha03'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
    implementation 'com.miguelcatalan:materialsearchview:1.4.0'
    implementation 'com.github.amlcurran.showcaseview:library:5.4.3'
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'

    implementation 'com.google.android.gms:play-services-ads:18.3.0'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.3.0-alpha03'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha03'
}

這就是我得到的 logcat(至少重要的部分,如果有任何遺漏,請務必告訴我,我會上傳整個日志):

邏輯貓

再次,任何幫助表示贊賞。 謝謝!

我認為您缺少 AndroidManifest.xml 文件中所需的代碼

  1. 谷歌廣告的依賴:

    implementation 'com.google.android.gms:play-services-ads:18.3.0'

  2. 在您的 AndroidManifest.xml 文件中添加以下“元數據”代碼 創建您的 appID 並使用它,否則您可以使用示例 AdMob 應用 ID 代替“ca-app-pub-xxxxxxxxxxxxxxxxxx~yyyyyyyyyy”

     <manifest> <application> <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> </application>

有了這個應用程序不應該在啟動時崩潰

以下代碼將從谷歌加載測試廣告。 將它們與您的代碼進行比較以進行相應的更改

  1. activity_main.xml 文件

    <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" app:adSize="BANNER" app:adUnitId="ca-app-pub-3940256099942544/6300978111" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"></com.google.android.gms.ads.AdView>
  2. MainActivity.java 文件

    public class MainActivity extends AppCompatActivity { private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); }}

    我用上面的代碼創建了一個新的應用程序,它顯示了帶有測試廣告的橫幅,如下所示

在此處輸入圖片說明

我的應用程序遇到了同樣的問題,我不得不在我的應用程序清單文件中添加一些元數據

<application>
<meta-data
    android:name="com.google.android.gms.ads.AD_MANAGER_APP"
    android:value="true"/>
<meta-data
    android:name="com.google.android.gms.ads.com.example.appname"
    android:value="enter your AdMob App ID e.g. ca-app-pub-3940256099942544~3347511713"/>
</application>

從 Google 移動廣告 SDK 17.0.0 版開始,此步驟是必需的。 未能添加此標記會導致崩潰並顯示以下消息:Google 移動廣告 SDK 未正確初始化。 有關更多信息,請訪問https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml

https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start#update_your_androidmanifestxml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM