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

使用jdk1.8是不是会编译不过去 #36

Closed
merlinJie opened this issue Aug 29, 2016 · 35 comments
Closed

使用jdk1.8是不是会编译不过去 #36

merlinJie opened this issue Aug 29, 2016 · 35 comments

Comments

@merlinJie
Copy link

warning: [options] bootstrap class path not set in conjunction with -source 1.7

@lomanyong
Copy link
Member

@viplwj 想问下是项目中使用了lambda之类的高版本api吗?freeline暂时不支持lambda的..

@merlinJie
Copy link
Author

应该是没有用的,使用Python freeline -f全量编译后,全量编译时ok的,修改文件无论修改哪个都是报 error: cannot find symbol,我是不是需要用低版本的jdk进行编译

@lomanyong
Copy link
Member

@viplwj 可以看一下${main_module}/build/freeline/jar_dependencies.json这个文件是否存在,然后里面的内容是否是空的?

@merlinJie
Copy link
Author

image
那个文件好像还真不存在
image

@lomanyong
Copy link
Member

@viplwj 缺少了jar_dependencies.json这个文件,编译流程出了点状况...麻烦在命令行单独执行一下./gradlew assembleDebug,然后发下日志ok吗?需要看下task栈中哪里出了问题..

@merlinJie
Copy link
Author

用 ./gradlew assembleDebug 跑了一遍是ok的 可以正常编译过去,是要把所有的log都贴出来?

@lomanyong
Copy link
Member

@viplwj 嗯,是的,需要所有的log

@charvenhe
Copy link
Member

@viplwj 有配置Freeline的 DSL吗?比如说把hack true加上

@ghost
Copy link

ghost commented Aug 29, 2016

同样有这个问题,dsl中配了hack和productFlavor

@lomanyong
Copy link
Member

@gaoxuxu 有相关的日志提供吗?

@ghost
Copy link

ghost commented Aug 29, 2016

@lomanyong 我执行了一下./gradlew assembleDebug --stacktrace,异常栈如下

Caused by: java.lang.NullPointerException
        at org.gradle.api.internal.tasks.compile.incremental.jar.JarSnapshot.getHashes(JarSnapshot.java:82)
        at org.gradle.api.internal.tasks.compile.incremental.jar.JarSnapshot.affectedSince(JarSnapshot.java:54)
        at org.gradle.api.internal.tasks.compile.incremental.jar.JarSnapshot.getAffectedClassesSince(JarSnapshot.java:47)
        at org.gradle.api.internal.tasks.compile.incremental.jar.JarChangeDependentsFinder.getActualDependents(JarChangeDependentsFinder.java:65)
        at org.gradle.api.internal.tasks.compile.incremental.jar.JarChangeProcessor.processChange(JarChangeProcessor.java:39)
        at org.gradle.api.internal.tasks.compile.incremental.RecompilationSpecProvider$InputChangeAction.execute(RecompilationSpecProvider.java:81)
        at org.gradle.api.internal.tasks.compile.incremental.RecompilationSpecProvider$InputChangeAction.execute(RecompilationSpecProvider.java:58)
        at org.gradle.api.internal.changedetection.changes.ChangesOnlyIncrementalTaskInputs.doOutOfDate(ChangesOnlyIncrementalTaskInputs.java:48)
        at org.gradle.api.internal.changedetection.changes.StatefulIncrementalTaskInputs.outOfDate(StatefulIncrementalTaskInputs.java:46)
        at org.gradle.api.internal.changedetection.changes.ChangesOnlyIncrementalTaskInputs.outOfDate(ChangesOnlyIncrementalTaskInputs.java:28)
        at org.gradle.api.internal.tasks.compile.incremental.RecompilationSpecProvider.provideRecompilationSpec(RecompilationSpecProvider.java:49)
        at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:54)
        at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:31)
        at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilationFinalizer.execute(IncrementalCompilationFinalizer.java:39)
        at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilationFinalizer.execute(IncrementalCompilationFinalizer.java:24)
        at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:163)
        at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:127)
        at com.android.build.gradle.tasks.factory.AndroidJavaCompile.compile(AndroidJavaCompile.java:49)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ... 68 more

@lomanyong
Copy link
Member

@gaoxuxu 有完整地执行./gradlew assembleDebug的日志呢?

@ghost
Copy link

ghost commented Aug 29, 2016

@lomanyong 我的Gradle插件版本使用的是2.1.3,改成2.0.0后assembleDebug执行成功了

@lomanyong
Copy link
Member

lomanyong commented Aug 29, 2016

@gaoxuxu style/ActivityPushAnimation这个资源定义在哪个module的哪个文件夹里的呢?然后这个文件夹是否包含在~/.freeline/cache/xxxxx/project_description.jsonproject_source_sets下的module的path中?

这里可以检查一下

@merlinJie
Copy link
Author

@charvenhe dsl加了

@lomanyong
Copy link
Member

@viplwj 可以贴下./gradlew assembleDebug的相关日志吗?

@merlinJie
Copy link
Author

merlinJie commented Aug 29, 2016

@lomanyong 我把gradle的版本换了换倒是可以生成那个jar_dependencies.json,但是刚才又测试了一下出现了下面的问题

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:730)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:699)
        at com.android.dx.command.dexer.Main.access$300(Main.java:86)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:628)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
        at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
        at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
        at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
        at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:658)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:536)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:307)
        at com.android.dx.command.dexer.Main.run(Main.java:266)
        at com.android.dx.command.dexer.Main.run(Main.java:236)
        at com.android.dx.command.dexer.Main.main(Main.java:218)
        at com.android.dx.command.Main.main(Main.java:106)
...while parsing com/test/R$anim.class

@lomanyong
Copy link
Member

@viplwj 你们有制定的productFlavor吧?如果有的话,应该要执行./gradlew assemble${your-Flavor}Debug,同时,freeline DSL里也要配置productFlavor..

@lomanyong
Copy link
Member

@viplwj 如果可以生成jar_dependencies.json的话,里面有内容吗?以及是否可以正常使用了呢?

@merlinJie
Copy link
Author

ok,谢谢你这么及时的回复,待会儿再试试,现在比较忙,生成的jar_dependencies.json这个文件是有内容的,里面的引用都是正确的,

@ghost
Copy link

ghost commented Aug 29, 2016

@lomanyong 我那个问题是由于xml文件中,在标签外部有一些字符,freeline在解析时不兼容导致,删了就好了

@merlinJie
Copy link
Author

merlinJie commented Aug 29, 2016

还是报UNEXPECTED TOP-LEVEL EXCEPTION:

com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.processClass(Main.java:730)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:699)
at com.android.dx.command.dexer.Main.access$300(Main.java:86)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:628)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:658)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:536)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:307)
at com.android.dx.command.dexer.Main.run(Main.java:266)
at com.android.dx.command.dexer.Main.run(Main.java:236)
at com.android.dx.command.dexer.Main.main(Main.java:218)
at com.android.dx.command.Main.main(Main.java:106)
...while parsing com/test/R$anim.class

@ghost
Copy link

ghost commented Aug 29, 2016

@viplwj http://stackoverflow.com/questions/24662801/bad-class-file-magic-or-version 看看有没有什么帮助

@lomanyong
Copy link
Member

@gaoxuxu 这个应该是freeline导致的哈

@viplwj 可以clean一下,然后用python freeline.py -f,看下是否还会报错吗?

@charvenhe
Copy link
Member

@gaoxuxu,你那边增量编译通过了吗?代码和资源都试过吗?速度跟之前对比怎么样,能发下数据么

@ghost
Copy link

ghost commented Aug 29, 2016

@charvenhe 具体数据我还没试,我没做任何修改试了一下,全量是200s,没有修改跑一下是20s。

我的Android Studio版本是2.2,gradle插件必须用2.1.3,我还在想办法,有数据了再回你

@charvenhe
Copy link
Member

@gaoxuxu,好的,增量时候建议可以在5.x的机器上试试,多试几次资源,代码,看看分别大概多久

@merlinJie
Copy link
Author

开始是因为gradle版本的问题,但是后来搞定了,现在环境有点问题,我再试试,感觉应该是可以了

@charvenhe
Copy link
Member

@gaoxuxu 2.1.3的问题可以加入我们的官方微信群进行细节反馈

@merlinJie
Copy link
Author

搞定了,首先是gradle版本的问题,其次是因为混淆还有昨天改了.py中java版本导致最后一些奇怪的问题,谢谢大家及时反馈啊

@lomanyong
Copy link
Member

@viplwj 恩,freeline不支持在debug时开启混淆的。gradle在高版本上的兼容性问题,我今天再看一下~

@ghost
Copy link

ghost commented Aug 30, 2016

@viplwj @lomanyong @charvenhe 2.1.3的问题可以用下面的方法解决,添加:

dexOptions {
        preDexLibraries true
        incremental false
}

@lomanyong
Copy link
Member

lomanyong commented Aug 30, 2016

@gaoxuxu 恩,记录一下 :https://code.google.com/p/android/issues/detail?id=212359

@merlinJie
Copy link
Author

👍 学习了

@charvenhe
Copy link
Member

@viplwj @gaoxuxu 你们是什么项目呀,增量与之前你们日常打包对比的数据方便发下我们记录下么,分别是代码和资源,多增量几次看看时间怎么样

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

No branches or pull requests

3 participants