【问题标题】:Adding Google Play Service Library to Existing Library Project将 Google Play 服务库添加到现有库项目
【发布时间】:2014-07-15 04:47:09
【问题描述】:

在我的应用程序(主项目)中,我添加了 3 个现有项目标记为库,所有这 3 个项目(库)都需要 GooglePlayServiceLibrary,以便它们可以运行 AdMob 和插页式广告。

我已在我的主项目中成功添加了这 3 个库项目,当我启动我的 MainActivity 时,它们在没有 AdMob 和插页式广告(没有向这 3 个项目中添加 GooglePlayServiceLibrary)的情况下运行良好我的主要项目活动中的strong>图书馆项目。但是当我将 GooglePlayServiceLibrary 添加到这 3 个项目并尝试运行它们时,我遇到了错误。

库项目的XML代码:

<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="myadId" />

库项目的Java代码:

AdRequest adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).addTestDevice("").build();
adView.loadAd(adRequest);

库项目清单文件:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
<activity
    android:name="com.google.android.gms.ads.AdActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|smallestScreenSize|uiMode|screenLayout|screenSize"/>
<activity
    android:name="com.pkg.Interstitial"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.Transparent"  />

我还附上了我的 LogCat:

07-15 04:12:41.630: E/AndroidRuntime(1301): FATAL EXCEPTION: main
07-15 04:12:41.630: E/AndroidRuntime(1301): Process: com.main.project, PID: 1301
07-15 04:12:41.630: E/AndroidRuntime(1301): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.main.project/com.library.project.MainActivity}: android.view.InflateException: Binary XML file line #187: Error inflating class com.google.android.gms.ads.AdView
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.os.Looper.loop(Looper.java:136)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.ActivityThread.main(ActivityThread.java:5017)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at java.lang.reflect.Method.invokeNative(Native Method)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at java.lang.reflect.Method.invoke(Method.java:515)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at dalvik.system.NativeStart.main(Native Method)
07-15 04:12:41.630: E/AndroidRuntime(1301): Caused by: android.view.InflateException: Binary XML file line #187: Error inflating class com.google.android.gms.ads.AdView
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.Activity.setContentView(Activity.java:1929)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at com.library.project.MainActivity.onCreate(MainActivity.java:75)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.Activity.performCreate(Activity.java:5231)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
07-15 04:12:41.630: E/AndroidRuntime(1301):     ... 11 more
07-15 04:12:41.630: E/AndroidRuntime(1301): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdView" on path: DexPathList[[zip file "/data/app/com.main.project-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.main.project-1, /system/lib]]
07-15 04:12:41.630: E/AndroidRuntime(1301):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.createView(LayoutInflater.java:559)
07-15 04:12:41.630: E/AndroidRuntime(1301):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
07-15 04:12:41.630: E/AndroidRuntime(1301):     ... 21 more

请告诉我如何在我的图书馆项目中使用这些广告。

提前致谢

【问题讨论】:

  • Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdView"。您有名为AdView 的课程吗?
  • @Aniruddha AdView 位于 GooglePlayServiceLibrary 中,因此它已经存在,如果我从项目中删除 is Library 复选框,代码工作正常。当我将该项目用作库时,我已经收到此错误
  • @shylendra 请查看我上面的评论

标签: android eclipse admob google-play-services interstitial


【解决方案1】:

您需要在您的主项目中创建一个libs/文件夹,并将GooglePlayServiceLibraryJAR文件物理放入项目中,然后添加该 Jar 文件到 Java 构建路径,您必须在 Order and Export 中选中标记 SDK jar。这必须在您的主项目和清单文件中完成,为 GooglePlayServicesLibrary 添加元数据,并在我们的主项目清单中定义这样的活动名称。

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

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

另外不要忘记添加每个权限服务接收者在您的库项目中使用的所有内容,所有内容都应在主项目的清单中使用它们的包名称进行定义。

我也面临同样的问题,这就是我解决它的方法......干杯

【讨论】:

    【解决方案2】:

    由于您使用的是 Eclipse,您只需右键单击使用该库的项目并选择:

    Properties -> Java Build Path -> Libraries -> Add External Jar
    

    我通常会为应用程序所需的所有 jar 执行此操作,但您似乎想为 GooglePlayServiceLibrary 上的三个库中的每一个添加依赖项。如果是这种情况,请检查下面的链接。此外,它也可以完成 - 应从最终项目中删除相同库(在您的情况下为 GooglePlayServiceLibrary)的重复项。

    http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

    因为一个项目可能依赖于使用相同 jar 文件的多个库,所以构建系统现在会查看所​​有需要的 jar 文件,检测来自不同库的重复项并将它们删除。这将防止 dx 出现可怕的“已添加”错误。

    【讨论】:

      【解决方案3】:

      尝试将此添加到您的主项目中

      <meta-data
          android:name="com.google.android.gms.version"
          android:value="@integer/google_play_services_version" />
      <activity
          android:name="com.google.android.gms.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|orientation|smallestScreenSize|uiMode|screenLayout|screenSize"/>
      <activity
          android:name="com.pkg.Interstitial"
          android:screenOrientation="portrait"
          android:theme="@style/Theme.Transparent"  />
      

      如果有任何错误,请将 GooglePlayServiceLibrary 也添加到您的主项目中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 1970-01-01
        相关资源
        最近更新 更多