2

我正在尝试在我的应用中实现 admob,但添加后应用无法启动。

这是活动代码: http ://code.google.com/p/zhuang-dict/source/browse/trunk/ZhuangDict/src/cn/wangdazhuang/zdict/ZhuangDictActivity.java

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads= "http://schemas.android.com/apk/lib/com.google.ads"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    >
        <ImageButton
            android:id="@+id/ts"
            android:contentDescription="@string/tts_contentDescription"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true" 
            android:src="@android:drawable/ic_btn_speak_now"
        />
        <ImageButton
            android:id="@+id/search"
            android:contentDescription="@string/search_contentDescription"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/ts"
            android:src="@android:drawable/ic_search_category_default"
        />
        <AutoCompleteTextView
            android:id="@+id/edit"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:focusable="true"
            android:singleLine="true"
            android:layout_toLeftOf="@id/search"
            android:hint="@string/edit_hint"
        />
    </RelativeLayout>
    <WebView
        android:id="@+id/result"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
    <com.google.ads.AdView android:id="@+id/adView"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     ads:adUnitId="myId"
                     ads:adSize="BANNER"
                     ads:loadAdOnCreate="true"
     />
</LinearLayout>
4

4 回答 4

4

您是否已将此添加到您的清单中?

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

如谷歌教程中所示:

    <com.google.ads.AdView android:id="@+id/adView"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     ads:adUnitId="MY_AD_UNIT_ID"
                     ads:adSize="BANNER"
                     ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
                     ads:loadAdOnCreate="true"/>

adUnitId 必须是您的应用程序的 ID,您是否设置了此 ID,或者您是否真的设置了“myid”,就像上面显示的代码一样?

编辑

这是一些附加信息,所有似乎都是 AdMob Lib 未绑定到您的项目。这可能是由许多不同的原因造成的。阅读步骤并确定,你真的做到了,如果没有,那就去做:

更新 Eclipse 和 Android SDK:

  1. 以管理员身份打开 Eclipse
  2. 转到帮助->检查更新并运行更新
  3. 设置所有检查,即在下一个窗口中显示。没有必要,但更新所有内容也不会错
  4. 接受条款和被许可人并按完成...更新将开始并需要一些时间
  5. 如果更新完成,则以管理员身份重新启动 Eclipse。您可能会收到一条错误消息,指出并非所有更新都可以完成...继续

更新 Android SDK:

  1. 在 Eclipse 中转到 Window--> Android SDK Manager
  2. 在“状态”列中,您可以查看更新是否可用。选择所有更新...
  3. 如果完成,请再次重新启动 Eclipse

使用 Admob - 放置 jar 文件并设置路径:

  1. 从 Google 网站下载 AdMob SDK(可能是不同的链接取决于国家/地区) https://developers.google.com/mobile-ads-sdk/download?hl=de
  2. 将文件解压缩到一个目录中(无论在哪里)
  3. 在 Eclispe 的项目中创建一个“libs”文件夹。确保文件夹被命名为“libs”而不是“lib”。这个错误经常发生


  4. 将 jar 文件从 admob 文件夹复制到您的项目到 libs 文件夹中

  5. 在 lib 文件夹内的 jar 文件上单击鼠标右键,然后选择 Build Path-->add to build path
  6. 要确保一切都已真正完成,请在您的项目上单击鼠标右键并选择属性
  7. 选择 Java-Build-Path 并转到库选项卡
  8. 选择添加外部 jar 并从您的 admob 文件夹中选择此 jar
  9. 选择确定

开始

  1. 把它放到你的 Manifest.xml

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

您的 Manifest.xml 应类似于以下内容:

       <?xml version="1.0" encoding="utf-8"?>
         <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.company"
          android:versionCode="1" android:versionName="1.0">
       <application android:icon="@drawable/icon" android:label="@string/app_name"
           android:debuggable="true">
       <activity android:label="@string/app_name" android:name="BannerExample">
           <intent-filter>
           <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
       </activity>
      <activity android:name="com.google.ads.AdActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
        </application>
        </manifest>

注意:将此行放在您的活动下方,而不是里面

  1. 在 manifest.xml 中设置权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
  2. 例如,创建 xml 布局,如教程中所示

    <?xml version="1.0" encoding="utf-8"?>
       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
        <com.google.ads.AdView android:id="@+id/adView"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     ads:adUnitId="MY_AD_UNIT_ID"
                     ads:adSize="BANNER"
                     ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
                     ads:loadAdOnCreate="true"/>
       </LinearLayout>
    
  3. 此外,如果上述步骤不起作用,您可以在要显示 admob 的 Activity 中执行此操作。请参阅您的活动的 onCreate() 中的您的 admob xml id:

        public class AdMobActivity extends Activity {
    
       private AdView adView;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
    
            // Create the adView
       adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);
    
           // Lookup your LinearLayout assuming it’s been given
          // the attribute android:id="@+id/mainLayout"
        LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
    
           // Add the adView to it
         layout.addView(adView);
    
           // Initiate a generic request to load it with an ad
        adView.loadAd(new AdRequest());
    
         }
    

在我的应用程序中,我两者都做了,通常只需要在 XML 或代码中进行,但两者都可以正常工作。

于 2013-03-21T15:11:27.920 回答
1

确保您正在初始化 AdMob,否则您将收到此错误:

获取 isAdIdFakeForDebugLogging 失败

MobileAds.initialize(this, AD_MOB_ID);
于 2018-08-09T17:09:33.140 回答
0

Try these steps:

  1. Create a libs folder in your project.
  2. Add the Google AdMobs jar file to the libs folder.
  3. Import the AdMob library from the libs folder.
  4. Confirm that the new method of adding the libray works by: Right Click Project -> Build Path -> Configure build Path -> switch to the Libraries Tab and confirm the Google AdMobs library is present in the list.

I had this problem after upgrading to the 15th or he 16th version of the ADT. I do not remember which.

Don't forget to remove the earlier reference to the library before doing the above.

于 2013-03-21T15:33:01.347 回答
0

如果您从调色板中添加了 Google AdView 并且应用程序停止工作。

转到 Android Studio 中的“Gradle Scripts”文件夹 找到 build.gradle(Module: app)

从文件末尾删除这一行

实施 'com.google.android.gms:play-services-ads:18.1.1'

保存文件并再次构建项目。一切都会再次正常工作

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.android.gms:play-services-ads:18.1.1'
}
于 2020-04-14T15:32:12.723 回答