【问题标题】:Android Studio Build failed when using Google Play services for AdMob为 AdMob 使用 Google Play 服务时,Android Studio 构建失败
【发布时间】:2014-10-09 09:54:54
【问题描述】:

我刚刚完成了我的应用程序,现在我正在尝试实施 AdMob 广告。我正在使用 Android Studio,这就是我的做法。

首先,我添加了 Google Play 服务作为依赖项

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':zip_file')
compile project(':wheel')
compile project(':shake_detector')
compile project(':facebook')
compile 'com.google.android.gms:play-services:5.2.08'

}

然后我将必要的东西添加到 AndroidManifest

<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"/>

然后我将广告添加到 XML

<com.google.android.gms.ads.AdView android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    ads:adUnitId="ca-app-pub-1606xxxx7xx50xx0/xxxx160xx2"
    ads:adSize="BANNER"/>

我将广告添加到 XML 后,XML 编辑器中显示错误:

java.lang.VerifyError: Expecting a stackmap frame at branch target 57
Exception Details:
  Location:
com/google/android/gms/ads/AdView.onMeasure(II)V @20: ifnull
  Reason:
Expected stackmap frame at this location.
  Bytecode:
0000000: 033e 0336 042a 03b6 0015 3a05 2ab6 0014
0000010: 3a06 1905 c600 2519 05b6 000b 1008 9f00
0000020: 1b2a 1905 1b1c b600 1919 05b6 000a 3e19
0000030: 05b6 0009 3604 a700 1f19 06c6 001a 2ab6
0000040: 0016 3a07 1906 1907 b600 133e 1906 1907
0000050: b600 1236 041d 2ab6 0018 b800 2a3e 1504
0000060: 2ab6 0017 b800 2a36 042a 1d1b b800 0d15
0000070: 041c b800 0db6 001a b1                 

at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)
at java.lang.Class.getConstructor0(Class.java:2803)
at java.lang.Class.getConstructor(Class.java:1718)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:310)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:100)
at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:172)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:206)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:131)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
at     com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:393)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:337)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:575)
at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:564)
at     com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)
at     com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:564)
at com.android.tools.idea.rendering.RenderService.render(RenderService.java:691)
at     org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:604)
at     org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1900(AndroidLayoutPreviewToolWindowManager.java:80)
at     org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:546)
at     com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
at     com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at     com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at     com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
at     org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:541)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:327)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

现在每次我尝试运行应用程序(或构建项目)时,这就是我得到的错误

Error:Execution failed for task ':app:dexDebug'.

com.android.ide.common.internal.LoggedErrorException:无法运行命令: C:\Android Development\Android Studio\sdk\build-tools\android-4.4W\dx.bat --dex --num-threads=4 --output C:\Users\whizs_000\AndroidStudioProjects\Sleepwithnaturesounds\app\build \intermediates\dex\debug C:\Users\whizs_000\AndroidStudioProjects\Sleepwithnaturesounds\app\build\intermediates\classes\debug C:\Users\whizs_000\AndroidStudioProjects\Sleepwithnaturesounds\app\build\intermediates\dependency-cache\debug C: \Users\whizs_000\AndroidStudioProjects\Sleepwithnaturesounds\app\build\intermediates\pre-dexed\debug\android-support-v4-ee598d69cced4ae2d0367cf320b535877ffadf7a.jar C:\Users\whizs_000\AndroidStudioProjects\Sleepwithnaturesounds\app\build\intermediates\pre-dexed \调试\螺栓-70810bd866f930573e290daf7ec3dc1948286267.jar C:\用户\ whizs_000 \ AndroidStudioProjects \ Sleepwithnaturesounds \应用\构建\中间体\预dexed \调试\类-0c36385bc77adc652fbbca692188f2ba3a839958.jar C:\用户\ whizs_000 \ AndroidStudioProjects \ Sleepwithnaturesounds \应用\构建\intermediates\pre-dexed\debug\classes -2599f9358b4e94ed98b20719bc88ed4c00c1bfff.jar C:\用户\ whizs_000 \ AndroidStudioProjects \ Sleepwithnaturesounds \应用\构建\中间体\预dexed \调试\类-3a8f3fce0efbd622d28c51e87741fcdeac2d6970.jar C:\用户\ whizs_000 \ AndroidStudioProjects \ Sleepwithnaturesounds \应用\构建\中间体\预-dexed \调试\类-407783d6a24b188172e1a767d67e0a0b4dae5728.jar C:\用户\ whizs_000 \ AndroidStudioProjects \ Sleepwithnaturesounds \应用\构建\中间体\预dexed \调试\类-8067c76d4a10c4f3c1e28bb6e233007f282b8655.jar C:\用户\ whizs_000 \ AndroidStudioProjects \ Sleepwithnaturesounds \应用\build\intermediates\pre-dexed\debug\support-v4-19.1.0-3704bce472ca0d2a13ecadbd5f94b970f7bf2d0e.jar 错误代码: 2 输出: 意外的顶级异常: com.android.dex.DexException:多个dex文件定义了Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 在 com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 在 com.android.dx.command.dexer.Main.run(Main.java:230) 在 com.android.dx.command.dexer.Main.main(Main.java:199) 在 com.android.dx.command.Main.main(Main.java:103)

知道有什么问题吗?上次我实施广告时,我是在 Eclipse 中做的,所以我在 AS 中有点新。

【问题讨论】:

  • 请确保您没有包含任何多余的库,例如 v4 支持库。
  • 不,我不包含任何这些库。您可以看到我粘贴依赖项后包含的所有库。
  • 我不知道是否包含任何库,例如,通过您的 libs/ 文件夹,这是一个常见错误。请检查一下。
  • 我没有通过 libs/ 文件夹包含任何库。但是我刚刚检查了我所有的其他库,我注意到我在 Facebook 上用于共享的 Facebook 库在 libs 文件夹中有 android-suppor-v4.jar。会不会是这个问题?
  • 是的,这是可能的。

标签: android admob


【解决方案1】:

[...] 意外的顶级异常:com.android.dex.DexException:多个 dex 文件定义 Landroid/support/v4/[...]

这表明构建过程中包含了多余/重复的库。请检查项目中的libs/ 文件夹和任何包含的库。

编译'com.google.android.gms:play-services:5.2.08'

请使用版本 5.0.89 而不是 5.2.08,因为后者尚未推出,使用它的应用无法在 Google Play 上发布。

【讨论】:

    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多