java.lang.VerifyError:期望分支目标57处的stackmap帧

时间:2014-08-28 11:11:43

标签: android eclipse android-layout android-studio admob

一个完美的应用程序项目已经开始在Android Studio中出现此错误。我尝试了各种各样的事情,比如改变Main.xml文件的结构,更改Google Play服务版本等,但没有任何帮助。此错误显示在显示选项卡中,我尝试使用api 18进行查看。此外,由于某种原因,非页内广告的填充率已降至0,并返回NO_FILL。

The following classes could not be instantiated:
- com.google.android.gms.ads.AdView (Open Class, Show Exception)
 Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE

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:2532)
at java.lang.Class.getConstructor0(Class.java:2842)
at java.lang.Class.getConstructor(Class.java:1718)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:309)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:99)
at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:172)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:802)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:778)
at android.view.LayoutInflater.inflate(LayoutInflater.java:500)
at android.view.LayoutInflater.inflate(LayoutInflater.java:381)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:400)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:329)
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)

的build.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:5.0.89'
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.crashlytics.android:crashlytics:1.+'
}

3 个答案:

答案 0 :(得分:2)

我有同样的问题。并搜索了很多,但没有一个回答帮助我。

我认为这可能是google-play-service中的错误

然后我从朋友的计算机上获得了新的API(在他的计算机中,他的api完美地工作,所以我只是替换了它并且它正在工作。) here is my friends api

试试这个api这可能对你有所帮助。

答案 1 :(得分:1)

使用JDK 5引入了新的类型检查(请参阅JVM options,UseSplitVerifier),但默认情况下已禁用。在你定义

targetCompatibility JavaVersion.VERSION_1_7

您构建的字节码将使用此功能(请参阅:JVMS 4.10.1. Verification by Type Checking4.7.4. The StackMapTable Attribute )。要禁用此功能,您可以将选项-XX:-UseSplitVerifier传递给java c

答案 2 :(得分:1)

由于我无法标记此问题,我将发布其他thread的答案。

I had the same problem when trying to preview the custom view AdView. My
project is built using gradle via Intellij community edition (13.x) and 
I ended up changing the version of google play services from

compile 'com.google.android.gms:play-services:5.+'

to

compile 'com.google.android.gms:play-services:4.+'

specifically, I changed the dependencies section of my gradle file to look
like this:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:4.+'
}