【问题标题】:app using mopub can't find library when running on android device使用 mopub 的应用在 Android 设备上运行时找不到库
【发布时间】:2013-04-11 07:11:35
【问题描述】:

我有一个使用 mopub 投放广告的项目。它设置为使用 Google AdMob 和 Millennial Media 第三方广告。我已按照以下位置的说明进行操作:

http://help.mopub.com/customer/portal/articles/1049608-simple-ads-demo---android-2-4-integrating

并且当我从 Eclipse 运行应用程序时,能够在设备(nexus 7)上运行应用程序时显示广告。但是,如果我导出应用程序并将 apk 安装到设备上,则广告不起作用。来自设备的 logcat 给出以下错误:

I/MoPub   (30361): Fetching ad network type: millennial_native
I/MoPub   (30361): Loading native ad
D/MoPub   (30361): Couldn't find com.mopub.mobileads.MillennialAdapter class. Make sure the project includes the adapter library for com.mopub.mobileads.MillennialAdapter from the extras folder
I/MoPub   (30361): Couldn't load native adapter. Trying next ad...
...
I/MoPub   (30361): Fetching ad network type: admob_native
I/MoPub   (30361): Loading native ad
D/MoPub   (30361): Couldn't find com.mopub.mobileads.GoogleAdMobAdapter class. Make sure the project includes the adapter library for com.mopub.mobileads.GoogleAdMobAdapter from the extras folder
I/MoPub   (30361): Couldn't load native adapter. Trying next ad...

这些库似乎没有被导出到 apk 中。根据:

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

lib 目录中的jar 文件应该会自动导出到应用程序中。我已将库放在 mopub 项目和我的项目中。我还尝试将库添加到构建路径并确保选中导出复选框。一切都无济于事。

我尝试将应用程序与 mopub 项目断开连接,只添加已编译的 mopub 库并将其粘贴到我的应用程序的 lib 目录中,但是当我导出项目时 proguard 会出错。

Proguard returned with error code 1. See console
Warning: com.mopub.mobileads.MraidView: can't find referenced class com.mopub.mobileads.R
   You should check if you need to specify additional program jars.
Warning: there were 41 unresolved references to classes or interfaces.
      You may need to specify additional library jars (using '-libraryjars').
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)

同样,当我从 eclipse 运行它时它可以在设备上运行,但当我从 apk 安装它后运行它时它就不行了。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 这是因为 ProGuard 混淆了您的代码。看here

标签: android eclipse jar mopub


【解决方案1】:

一切都很好,您在 libs 文件夹中添加了原生 Millennial 和 Admob SDK。问题是找不到适配器类(不在 mmedia 或 admob jar 中,它们是自定义 mopub 类)。它们位于 mopub SDK 的 extras\src\com\mopub\mobileads\networkadapters 文件夹中。按照您给定的 mopub 教程中的建议,将它们复制到您的项目 com.mopub.mobileads 包中。

【讨论】:

  • 感谢您的回复。我以前也这样做过。如果我将它们从项目中删除并构建,则从 Eclipse 运行时,广告在应用程序中不起作用。如果我添加它们,它在从 eclipse 运行但不是从 apk 运行时确实有效。起初我不确定page 何时将适配器复制到“src/ 中的 com.mopub.mobileads”中。该教程说将它们复制到 mopub 项目。我已经尝试了 mopub 和项目以及应用程序的项目并获得了相同的行为。
  • 也许 mopub 项目没有导出您的 .apk。检查项目属性-> java 构建路径-> 导出顺序。将 mopub 库移到您的项目上方。
  • @gaijin 你能在这里看看我的问题吗:stackoverflow.com/questions/32491486/… 你似乎知道 MoPub - 特别是我无法理解关于复制提到的 2 个文件的部分“” 您的项目中的 com.mopub.mobilead"'。我的项目中没有任何“com.mopub.mobilead” - 所以有点困惑(实际上,很多) - 任何帮助将不胜感激,干杯。
【解决方案2】:

查看这些链接...那里有很多关于网络适配器的基本集成和使用的有用信息:

Android Integration Part I

Android Integration Part II

Android Integration Part III

【讨论】:

    【解决方案3】:

    这已经很晚了,但我后来在另一个项目中发现 proguard 正在删除库。找到正确的 -keep 修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多