我正在尝试在我的应用中实现 Google 广告服务,但没有成功。
我尝试更改应用程序的 SDK 版本以及 Google 广告实现版本,但每次应用程序在启动时崩溃时,我都不知道自己做错了什么,非常感谢任何帮助!
这些是我遵循的步骤:
- 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(至少重要的部分,如果缺少任何内容,请务必告诉我,我将上传整个日志):
再次感谢您的帮助。谢谢!
最佳答案
我认为您缺少 AndroidManifest.xml 文件中所需的代码
Google 广告的依赖项:
实现“com.google.android.gms:play-services-ads:18.3.0”
在 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); }}
我使用上述代码创建了一个新应用,它显示了带有测试广告的横幅,如下所示
关于java - Android studio - Google 广告崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690710/