Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xml布局无法预览 #52

Closed
beasonshu opened this issue Aug 31, 2016 · 30 comments
Closed

xml布局无法预览 #52

beasonshu opened this issue Aug 31, 2016 · 30 comments
Assignees

Comments

@beasonshu
Copy link

Expecting a stackmap frame at branch target 22 Exception Details: Location: R$styleable. ()V @10: ifeq Reason: Expected stackmap frame at this location. Bytecode: 0x0000000: 2ab7 02dc b202 e2b6 02e6 9900 0cb2 02ec 0x0000010: 1302 eeb6 02f4 b1

@lomanyong
Copy link
Member

@beasonshu target不选择24的话,应该暂时不会出问题。这个问题不影响你们日常开发打包的,不过我们后面尽量把这个给避免了,以免不能预览~

@lomanyong lomanyong self-assigned this Aug 31, 2016
@bashan15
Copy link

bashan15 commented Sep 1, 2016

我的也不能显示预览。但只要换一个其他没用过freeline的工程,就能显示预览。
我对AndroidStudio不是特别熟,找不到不显示的原因。

@lomanyong
Copy link
Member

@bashan15 点一下工具栏的gradle sync,应该就能预览了..

@beasonshu
Copy link
Author

还是不行
Exception Details: Location: cn/com/jinyinmao/app/R$styleable.()V @10: ifeq Reason: Expected stackmap frame at this location. Bytecode: 0x0000000: 2ab7 02dc b202 e2b6 02e6 9900 0cb2 02ec 0x0000010: 1302 eeb6 02f4 b1

@bashan15
Copy link

bashan15 commented Sep 2, 2016

@lomanyong 同步也不好用。 报的错误 和 @beasonshu 一模一样
16:23:23 VerifyError: Expecting a stackmap frame at branch target 22
Exception Details:
Location:
xxx.xxx.xxx/R$styleable.()V @10: ifeq
Reason:
Expected stackmap frame at this location.
Bytecode:
0x0000000: 2ab7 02e2 b202 e8b6 02ec 9900 0cb2 02f2
0x0000010: 1302 f4b6 02fa b1
(show balloon)

xxx.xxx.xxx是我应用的包名

@lomanyong
Copy link
Member

@bashan15 @beasonshu 可以再说下你们使用的as的版本以及gradle插件版本相关的信息?方便我这里复现一下情况。

@beasonshu
Copy link
Author

我用的 Android studio
image
gradle-2.14.1-all.zip

@charvenhe
Copy link
Member

@beasonshu 能否试试sample工程是否也有一样的问题呢,我们这边sample复现不了

@maclaylq
Copy link

maclaylq commented Sep 8, 2016

同此问题,as 2.1.3,gradle 2.14.1。一直是loading状态。

@maclaylq
Copy link

maclaylq commented Sep 8, 2016

@charvenhe sample 工程也不行
`Render error
ActiveTool: com.intellij.designer.designSurface.tools.SelectionTool@5f8b970f
SDK: Android API 24 - API 24
java.lang.VerifyError: Expecting a stackmap frame at branch target 22
Exception Details:
Location:
com/antfortune/freeline/sample/R$styleable.()V @10: ifeq
Reason:
Expected stackmap frame at this location.
Bytecode:
0x0000000: 2ab7 01e7 b201 edb6 01f1 9900 0cb2 01f7
0x0000010: 1301 f9b6 01ff b1

at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredFields(Class.java:1916)
at org.jetbrains.android.uipreview.ViewLoader.parseClass(ViewLoader.java:580)
at org.jetbrains.android.uipreview.ViewLoader.loadAndParseRClass(ViewLoader.java:546)
at org.jetbrains.android.uipreview.ViewLoader.loadAndParseRClassSilently(ViewLoader.java:502)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadAndParseRClass(LayoutlibCallbackImpl.java:670)
at com.android.tools.idea.rendering.RenderTask.<init>(RenderTask.java:156)
at com.android.tools.idea.rendering.RenderService.createTask(RenderService.java:210)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:514)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

`

@charvenhe
Copy link
Member

@maclaylq 是windows还是linux平台呢

@lomanyong
Copy link
Member

@maclaylq @beasonshu @bashan15 可以试下使用这个gradle插件,看下是否可以解决预览的问题:

classpath "com.antfortune.freeline:gradle:0.6.0.1609081718"

只需修改gradle插件版本即可,runtime那些不需要修改~

@maclaylq
Copy link

maclaylq commented Sep 8, 2016

@lomanyong 我是windows 平台。上面这个版本 我重新init了一遍 ,不能正常预览,sdk版本换成21后,可以预览了~~,用的是sample项目。
另,不能正常编译。

[dispatcher] command line args: Namespace(all=False, clean=False, cleanBuild=False, debug=False, init=False, version=False)

[ERROR] --------------------------------------------------------
[ERROR] Freeline ERROR
[ERROR] --------------------------------------------------------
Traceback (most recent call last):
  File "F:\workspace_demo\freeline-master\sample\freeline_core\dispatcher.py", line 88, in _exec_command
    command.execute()
  File "F:\workspace_demo\freeline-master\sample\freeline_core\freeline_build.py", line 21, in execute
    file_changed_dict = self._scan_command.execute()
  File "F:\workspace_demo\freeline-master\sample\freeline_core\gradle_tools.py", line 45, in execute
    self._scan_module_changes(module_name, module_info['path'])
  File "F:\workspace_demo\freeline-master\sample\freeline_core\gradle_tools.py", line 70, in _scan_module_changes
    module_cache = self._stat_cache[module_name]
KeyError: u'runtime-no-op'

[ERROR] --------------------------------------------------------
[ERROR] runtime-no-op
[ERROR] --------------------------------------------------------

@lomanyong
Copy link
Member

lomanyong commented Sep 8, 2016

@maclaylq 不能正常预览报的错还是之前的类似下面这些日志吗?

Expecting a stackmap frame at branch target 22 Exception Details: Location: R$styleable. ()V @10: ifeq Reason: Expected stackmap frame at this location. Bytecode: 0x0000000: 2ab7 02dc b202 e2b6 02e6 9900 0cb2 02ec 0x0000010: 1302 eeb6 02f4 b1

那个无法编译过的报错在新版本解决了,晚上就会发版。

@maclaylq
Copy link

maclaylq commented Sep 8, 2016

@lomanyong 刚重新切过去又可以了。之前没有报错,不能正常预览是只有手机框的图片,其中的textview的内容不显示,现在又可以了。

@lomanyong
Copy link
Member

@maclaylq 可以具体描述一下无法预览的现象吗?因为我这边在sample工程上一直无法复现这个问题。是指修改了内容,没有实时刷新preview的页面?

@maclaylq
Copy link

maclaylq commented Sep 9, 2016

就是textview的长宽预览都是最小的,看不到内容,切到低版本就可以了。

@lomanyong
Copy link
Member

@maclaylq 这个问题不使用freeline打包的话不会出现是吗?

@qsyj
Copy link

qsyj commented Sep 9, 2016

@lomanyong 0.6.1还是无法预览!
当执行完freeline.py 成功安装后,切换到布局界面,studio布局预览 就消失了!

一:androidstudio 版本:2.2RC
二:classpath 'com.android.tools.build:gradle:2.1.3'
三:
compileSdkVersion 23
buildToolsVersion '23.0.2'

minSdkVersion 15
targetSdkVersion 21

testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'

@lomanyong
Copy link
Member

@qsyj 布局预览消失有提示什么吗?target改为低版本是否会出现呢?

@kszkk
Copy link

kszkk commented Sep 9, 2016

我也是用的0.6.1
xml布局文件不能渲染
错误如下
Render error
ActiveTool: com.intellij.designer.designSurface.tools.SelectionTool@5b8e2adb
SDK: Android API 21 - API 21
java.lang.VerifyError: Expecting a stackmap frame at branch target 21
Exception Details:
Location:
cn/cnr/cloudfm/R$styleable.()V @10: ifeq
Reason:
Expected stackmap frame at this location.
Bytecode:
0000000: 2ab7 006f b200 75b6 0079 9900 0bb2 007f
0000010: 1281 b600 87b1

at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2570)
at java.lang.Class.getDeclaredFields(Class.java:1903)
at org.jetbrains.android.uipreview.ViewLoader.parseClass(ViewLoader.java:580)
at org.jetbrains.android.uipreview.ViewLoader.loadAndParseRClass(ViewLoader.java:546)
at org.jetbrains.android.uipreview.ViewLoader.loadAndParseRClassSilently(ViewLoader.java:502)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadAndParseRClass(LayoutlibCallbackImpl.java:670)
at com.android.tools.idea.rendering.RenderTask.<init>(RenderTask.java:156)
at com.android.tools.idea.rendering.RenderService.createTask(RenderService.java:210)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:514)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

@lomanyong
Copy link
Member

@kszkk 切换一下preview中target的版本是否还会报错?

以及,可以检查一下${module}/build/intermediates/classes/xxxxxx/R.class,这个类以及内部类是否正常,是否多出了一个构造函数。

@kszkk
Copy link

kszkk commented Sep 9, 2016

@lomanyong 切换target的版本还是报这个错
我找到了R.class 但是怎么看是否多出一个构造函数?

@lomanyong
Copy link
Member

@kszkk 在IDE里直接可以打开class文件,会自动反编译的。通常R.class以及他的内部类是没有构造函数的,或者构造函数是空的。反编译后的R.class的各个构造函数是否正常即可。

@lomanyong
Copy link
Member

ref marker:

@kszkk
Copy link

kszkk commented Sep 9, 2016

@lomanyong 有构造函数

public R() {
        if(Boolean.FALSE.booleanValue()) {
            System.out.print(ClassVerifier.class);
        }

    }

其他的内部类构造函数也都是这个

@lomanyong
Copy link
Member

@kszkk 你那边是windows操作系统吗?如果是的话,替换为这个版本的gradle插件,然后重新运行试试看,R.class看下是否还会出现这个情况。

gradle插件:com.antfortune.freeline:gradle:0.6.1.1609091648

@kszkk
Copy link

kszkk commented Sep 9, 2016

@lomanyong 这回可以了 构造函数都是空的 布局也能渲染出来了

@charvenhe
Copy link
Member

charvenhe commented Sep 9, 2016

@beasonshu @maclaylq 这个问题是否也解决了,通过使用这个新版本的gradle插件可以解决:com.antfortune.freeline:gradle:0.6.1.1609091648

@maclaylq
Copy link

0.6.3版本可以正常预览了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants