【问题标题】:adMob.jar library and google play service.jar not working togetheradMob.jar 库和 google play service.jar 不能一起工作
【发布时间】:2014-05-18 15:56:46
【问题描述】:

我在市场上有一个带有 adMod 横幅的应用程序,现在我正在尝试将一些 Google Maps api 添加到我的应用程序中。

我知道如何分别处理 adMobs 库或 Google Maps api。但是当我尝试使用 adMob 和 Google Maps api(Google Play 服务)运行应用程序时,它们似乎发生了冲突或类似的事情。或者 google-play-services.jar 和 GoogleAdMobAdsSdk.jar 具有相同的 AdMob 类名。也许由于这个原因,我得到了多个 .dex 文件。

我的控制台上的错误是:

写入输出有问题:已经准备好了 [2014-05-18 18:24:40 - Dex Loader] 无法执行 dex:多个 dex 文件定义 Lcom/google/ads/AdRequest$ErrorCode; [2014-05-18 18:24:40 - WorkC 3.0.9 actionBar] 转换为 Dalvik 格式失败:无法执行 dex:多个 dex 文件定义 Lcom/google/ads/AdRequest$ErrorCode;

我担心一旦我更新应用程序版本,这会对我的 adMob 造成不利影响。我该如何解决?

【问题讨论】:

    标签: android google-maps admob google-play-services


    【解决方案1】:

    您可以摆脱 jar 文件并使用 google play 服务来处理广告和地图。进行以下更改:

    在您的布局中,将广告 xml 命名空间更改为:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    
       -----/>
    

    收件人:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ads="http://schemas.android.com/apk/res-auto"
    
       ----/>
    

    然后,改变:

     <com.google.ads.AdView 
     android:id="@+id/ad"
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"
     android:layout_gravity="bottom|center" 
     android:layout_marginTop="300dp" 
     ads:adSize="BANNER"
     ads:adUnitId="***************" 
     ads:loadAdOnCreate="true" />
    

    收件人:

    <com.google.android.gms.ads.AdView
     android:id="@+id/ad"
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"
     android:layout_gravity="bottom|center" 
     android:layout_marginTop="300dp" 
     ads:adSize="BANNER"
     ads:adUnitId="***************" />
    

    请注意 ads:loadAdOnCreate 不再可用,因此您必须通过 onCreate() 中的 java 代码加载广告:

    AdView adView = (AdView)this.findViewById(R.id.ad);
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);
    

    然后在你的清单的应用标签中,更改:

    <activity android:name="com.google.ads.AdActivity"/>
    

    到:

    <activity android:name="com.google.android.gms.ads.AdActivity" 
                      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    

    添加:

     <meta-data android:name="com.google.android.gms.version"
                   android:value="@integer/google_play_services_version"/>
    

    不要忘记权限:

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

    【讨论】:

      【解决方案2】:

      您不需要 adMob.jar 文件。 Google Play 服务 (4.3.23) 就足够了。

      见:https://developers.google.com/mobile-ads-sdk/docs/?hl=fr https://developer.android.com/google/play-services/setup.html#Install

      【讨论】:

      • 谢谢,但现在我需要更改清单和我的 xml 布局中的一些语句。例如现在我有这个代码: android:name="com.google.ads.AdActivity" 并在 xml 中:
      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 2019-10-17
      • 2018-12-14
      • 2014-02-01
      • 2014-01-07
      • 2019-08-17
      • 2016-11-23
      相关资源
      最近更新 更多