英文:
Why does my android app crashes when I implement android.gms:play-services-ads:19.3.0
问题
简而言之,我开发了一个简单的 Android Java 应用程序,希望使用 AdSense 服务实现一些广告。应用程序本身可以运行并完成其目的,但一旦我在 Gradle 移动模块中添加了实现 'com.google.android.gms:play-services-ads:19.3.0',应用程序就会崩溃。
我还尝试完成了所有可能必要的步骤,包括在 Android 清单中的 Android 名称和值元数据部分,以及在主活动中使用 MobileAds.initialize() 函数来设置库和广告。
我按照这里的步骤进行操作:
https://developers.google.com/admob/android/quick-start?hl=import_the_mobile_ads_sdk
但当我试图隔离问题时,我发现仅在 Gradle 移动脚本中包括实现 'com.google.android.gms:play-services-ads:19.3.0'(连同存储库中的 google() 规范)会导致应用程序从一开始就崩溃。它甚至无法进入应用。
我该怎么办?为什么会发生这种情况?如果能得到一些帮助,我会很高兴。
英文:
Long story short, I develop a simple android java app to which I wish to implement some ads using the adsense service. The app itself works and does its purpose, but once I add the implementation 'com.google.android.gms:play-services-ads:19.3.0' in the gradle mobile module, the app crashes.
I also tried to complete all the possible necessary steps, including the android name & value metadata part in the Android manifest, and also set up the ads with libraries and the function of MobileAds.initialize() in the Main Activity.
I followed the steps in here:
https://developers.google.com/admob/android/quick-start?hl=import_the_mobile_ads_sdk
but as i tried to isolate the problem, I saw that by only including the implementation 'com.google.android.gms:play-services-ads:19.3.0' in the gradle mobile script (together with the google() spec in the repository) the app crashes from the start. It doesn't even enter.
What can I do? Why does this happen? I'll be glad if I receive some help.
答案1
得分: 1
这份文档包含了以下部分:更新你的 AndroidManifest.xml
> 重要提示: 从 Google 移动广告 SDK 版本 17.0.0 开始,需要完成这一步骤。如果不添加这个 <meta-data>
标签,将导致崩溃并显示错误消息:Google 移动广告 SDK 初始化不正确。
你说过你只是在 build.gradle
文件中添加了依赖,所以你很可能还没有执行这一步,而这可能就是你遇到的问题。你需要去找到你的应用 ID,然后按照文档中的描述将其添加到 AndroidManifest.xml
文件中。
英文:
The documentation you've linked to includes this section: Update your AndroidManifest.xml
> Important: This step is required as of Google Mobile Ads SDK version 17.0.0. Failure to add this <meta-data>
tag results in a crash with the message: The Google Mobile Ads SDK was initialized incorrectly.
You've said that all you've done is add the dependency to your build.gradle
file, so you've probably not done this step and that's your issue. You will need to find your App ID and add it to AndroidManifest.xml
, as described in the documentation.
答案2
得分: 0
使用元数据标签在清单文件中添加类似下面示例代码中的内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WatchAndEarn"
tools:targetApi="31"
android:usesCleartextTraffic="true">
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3304471310252738~5701061203"/>
<activity
android:name=".Home"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
在 MainActivity
中使用如下所示的初始化方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
}
英文:
Use the meta data tag in menifest like the given example code
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WatchAndEarn"
tools:targetApi="31"
android:usesCleartextTraffic="true">
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3304471310252738~5701061203"/>
<activity
android:name=".Home"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
And in MainActivity use initialization like the example given below
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论