0

将 AdMob 添加到我的 Android 应用程序让我发疯:o

Firebase 已经在运行(auth、db、...)。

我也为广告添加了 gradle 依赖项。
我完全按照 Google 的说明进行操作。
我有两个问题:

  1. 我的 xml 布局文件中的 AdView Container 无法在预览中呈现。它说:

无法实例化以下类:com.google.android.gms.ads.AdView

异常详细信息 java.lang.NoClassDefFoundError: 无法在 com.google.android.gms.internal.zzez 初始化类 com.google.android.gms.internal.zzeh。在 com.google.android.gms.internal.zzez。在 com.google.android.gms.internal.zzez。在 com.google.android.gms.ads.BaseAdView。在 com.google.android.gms.ads.AdView。在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)

  1. 如果我尝试在我的代码中初始化广告,它会在此代码行中崩溃:

MobileAds.initialize(getApplicationContext(), "ca-app-pub-XXXXXXXXXXXXXXXXX");

E / UncaughtException:java.lang.InstantiationError:com.google.android.gms.internal.zzeh的com.google.android.gms.internal.zznv。(未知来源)com.google.android.gms.internal.zzeh .(Unknown Source) at com.google.android.gms.internal.zzfb.zza(Unknown Source) at com.google.android.gms.ads.MobileAds.initialize(Unknown Source) at com.google.android.gms。 ads.MobileAds.initialize(Unknown Source) at de.philweb.myweightlog.MainActivity.onCreate(MainActivity.java:233)

我尝试了我在 SO 上找到的所有内容。像 MultiDex 并将 AdsActivity 添加到清单中,没有成功。现在我真的需要你的帮助:(

谢谢大家,菲尔

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.philweb.myweightlog">

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyAppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>
    <!-- ATTENTION: This was auto-generated to add Google Play services to your project for App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information.
    -->
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

</application>

这是我的 build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "de.philweb.myweightlog"
        minSdkVersion 16
        targetSdkVersion 22
//        multiDexEnabled true
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
//    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.0.1' //22.2.0'
    compile 'com.android.support:support-v4:25.0.1' //22.2.0'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-crash:10.0.1'
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.google.firebase:firebase-database:10.0.1'
    compile 'com.google.firebase:firebase-ads:10.0.1'
    compile 'com.google.firebase:firebase-appindexing:10.0.1'
//    compile 'com.android.support:multidex:1.0.1'

    compile 'com.android.support:design:25.0.1'
    compile 'com.firebaseui:firebase-ui:1.0.0'

    compile "com.androidplot:androidplot-core:1.4.0"
    compile 'com.darwinsys:hirondelle-date4j:1.5.1'
    compile('com.mikepenz:materialdrawer:5.8.0@aar') {
        transitive = true
    }
}

apply plugin: 'com.google.gms.google-services'
4

2 回答 2

0
<uses-permission android:name="android.permission.INTERNET"/>

把它放在清单中。

于 2017-01-05T21:33:27.497 回答
0

包含的库的大小和数量需要 Multidex。你说你试图启用它。请注意,需要三个步骤,包括对清单的更改。

此外,当使用 10.0.1 版的 Firebase 库时,您必须使用 1.0.1 版的 Firebase UI:

compile 'com.firebaseui:firebase-ui:1.0.1'

Firebase UI 文档包含一个兼容版本表。

于 2017-01-07T04:22:17.937 回答