有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android studio谷歌广告崩溃应用程序

我试图在我的应用程序中实现谷歌广告服务,但运气不好

我曾尝试更改应用程序的sdk版本和google ads实现版本,每次应用程序在启动时崩溃,我都不知道我做错了什么,非常感谢您的帮助

以下是我遵循的STPE:

  1. 谷歌广告的依赖关系:
 implementation 'com.google.安卓.gms:play-services-ads:18.3.0'
  1. 在我的活动主视图中查看AdView。xml:
    <com.google.安卓.gms.ads.AdView
        xmlns:ads="http://schemas.安卓.com/apk/res-auto"
        安卓:id="@+id/adView"
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="@string/bannerId"
        安卓:layout_centerHorizontal="true"
        安卓:layout_alignParentTop="true" />
  1. MainActivity中的初始化代码。爪哇
        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(WAS27),使用了“迁移到AndroidX按钮”来实现

这就是我的应用程序gradle的样子:

apply plugin: 'com.安卓.application'
apply plugin: 'kotlin-安卓'

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

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

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation '安卓x.appcompat:appcompat:1.2.0-alpha01'
    implementation 'com.google.安卓.material:material:1.2.0-alpha03'
    implementation '安卓x.legacy:legacy-support-v4:1.0.0'
    implementation '安卓x.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.安卓.gms:play-services-ads:18.3.0'

    testImplementation 'junit:junit:4.12'
    安卓TestImplementation '安卓x.test:runner:1.3.0-alpha03'
    安卓TestImplementation '安卓x.test.espresso:espresso-core:3.3.0-alpha03'
}

这是我得到的日志(至少重要的部分,如果缺少任何东西,请务必告诉我,我将上传整个日志):

Logcat

再次感谢您的帮助。谢谢


共 (2) 个答案

  1. # 1 楼答案

    我认为您缺少AndroidManifest中所需的代码。xml文件

    1. 谷歌广告的依赖关系:

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

    2. 在AndroidManifest中添加以下“元数据”代码。xml文件 创建应用程序ID并使用它,否则在进行测试时,可以使用示例AdMob应用程序ID代替“ca-App-pub-XXXXXXXXXXXXXX~YYYYYY”

      <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>
      

    这样,应用程序在启动时不会崩溃

    下面的代码将从google加载测试广告。将它们与您的代码进行比较,以便进行相应的更改

    1. 主要活动。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. 主要活动。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);
          }}
      

      我用上述代码创建了一个新的应用程序,它显示了带有测试广告的横幅,如下所示

    enter image description here

  2. # 2 楼答案

    我的应用程序也有同样的问题,我必须向我的应用程序清单文件添加一些元数据

    <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 Mobile Ads SDK 17.0.0版开始,此步骤是必需的。未能添加此标记将导致崩溃,并显示以下消息:Google Mobile Ads 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