java - Android studio - Google 广告崩溃应用程序

标签 java android gradle ads

我正在尝试在我的应用中实现 Google 广告服务,但没有成功。

我尝试更改应用程序的 SDK 版本以及 Google 广告实现版本,但每次应用程序在启动时崩溃时,我都不知道自己做错了什么,非常感谢任何帮助!

这些是我遵循的步骤:

  1. Google 广告的依赖性:
 implementation 'com.google.android.gms:play-services-ads:18.3.0'
  • 我的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" />
    
  • 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(至少重要的部分,如果缺少任何内容,请务必告诉我,我将上传整个日志):

    Logcat

    再次感谢您的帮助。谢谢!

    最佳答案

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

    1. Google 广告的依赖项:

      实现“com.google.android.gms:play-services-ads:18.3.0”

    2. 在 AndroidManifest.xml 文件中添加以下“元数据”代码 创建您的 appID 并使用它,否则为了进行测试,您可以使用示例 AdMob 应用 ID 代替“ca-app-pub-xxxxxxxxxxxxxxx~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>
      

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

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

  • 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>
    
  • 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);
        }}
    

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

  • enter image description here

    关于java - Android studio - Google 广告崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690710/

    相关文章:

    java - 如何在android中使用FCM向单个设备发送数据消息

    android - 如何用旧的方式在 Android Studio 上打开模拟器? (在大黄蜂之前)

    maven - 如何在Gradle构建中指定Spring propertyPlaceHolderConfig值?

    Gradle ShadowJar 与其他 SourceSet 资源

    java - RecyclerView 执行项目点击

    用于比较字符串的 Java 占位符

    java - 如何链接和应用一系列比较器?

    android - 如何更改 SearchView 文本颜色?

    Android:使用 SAX 解析 XML 时出错 - 由于 "length"void 中的错误 "characters"导致文本被截断

    gradle - 更新build.gradle 3.3.0中断applicationVariants.all apk程序集