Tud*_*uca 98 java android kotlin android-jack-and-jill
更新3. KOTLIN 现在正在为ANDROID开发提供正式支持.通过GOOGLE.YAAAAAAAAS!
更新2:从长远来看,看起来JetBrains真的致力于支持Kotlin for Android.我是一个快乐的kotlin用户:).
更新:来自JetBrains的Hadi Hariri 提到他们将发布有关此主题的一些信息.一旦他们这样做,我会更新这篇文章.
===下一个被弃用的东西===
谷歌刚刚发布了即将推出的Android N的预览版,其中包含一些有趣的功能,最值得注意的是部分Java 8语言支持.这是可能的,因为Google正在开发新的Jack工具链.
使用javac或kotlinc的当前工具链:
javac(.java
- > .class
) - > dx(.class
- > .dex
)
kotlinc(.kt
- > .class
) - > dx(.class
- > .dex
)
新杰克工具链:
杰克(.java
- > .jack
- > .dex
)
我假设谷歌将推动杰克成为Android开发的默认工具链.更新:Jack现已弃用.亚斯.
我的问题是,作为Android开发的kotlin用户,这个新工具链将来会如何影响我?我会"陷入困境"吗?
Dha*_*ani 15
@Pavel Dudka
杰克 - 是一个编译器.与javac类似,但它的确略有不同:
如您所见,Jack将Java源代码直接编译为Dex文件!我们不再有中间*.class文件了,所以不需要dx工具!
可是等等!如果我在项目中包含第三方库(作为.class文件的集合)会怎样?
这就是吉尔发挥作用的时候:
Jill可以处理类文件并将它们转换为特殊的Jayce格式,可以用作Jack编译器的输入.
所以,现在让我们暂时搁置一下,再想一想......我们上瘾的所有酷插件会发生什么?他们都需要.class文件,杰克编译器不再有那些......
幸运的是,Jack提供了一些对我们来说非常重要的功能:
Jack支持Java编程语言1.7并集成了下面描述的其他功能.
Predexing
生成JACK库文件时,生成库的.dex并将其存储在.jack库文件中作为pre-dex.编译时,JACK重用每个库中的pre-dex.所有库都是预先设定的.
增量编译
增量编译意味着只重新编译自上次编译以来触及的组件及其依赖项.当更改仅限于一组有限的组件时,增量编译可能比完全编译快得多.
重新包装
JACK使用jarjar配置文件进行重新打包.
Multidex支持
由于dex文件限制为65K方法,因此必须将具有超过65K方法的应用程序拆分为多个dex文件.(有关multidex的更多信息,请参阅"使用超过65K方法构建应用程序".)
更新(03/16/2017)
幸运的是,杰克已经死了,所以它不会影响Kotlin的开发者.
如果杰克是未来,那么你将会被Kotlin困在过去.目前,Jack不支持可以将非Java源代码编译为Dalvik字节码的插件.即使它确实如此,JetBrains也需要为Kotlin编译器添加一个新的后端,这不是一项微不足道的任务.所以你必须使用Killlin和Jill,这将是你现在使用的工具链非常相似的东西.
正如您在下图中看到的那样,即使不能明确关闭Jack,您仍然可以将项目转换为库项目以使用Jill.应用程序项目将仅引用此库项目.
我看到Kotlin如何与Jack一起工作的唯一方法就是在Kotlin编译器中添加一个Java后端,即生成像Xtend这样的Java代码的后端.在这种情况下,由Kotlin编译器生成的代码可以由Jack处理为任何其他Java代码.
但目前我们并不确切知道杰克在发布时会支持什么.也许某些事情会发生巨大变化,并且可以为Jack增加Kotlin支持.
谷歌不打算将杰克作为默认工具,但是Jack and Jill
.
使用Jill将.class文件编译为dex就可以了.否则,你可以告诉jar/aar库.
Jack或Jill是否会变慢还是有争议的.Android团队希望jack会比当前的构建过程更快,但现在情况并非如此
此外,Jack和Dex可以公开使用,没有什么可以阻止kotlin团队编写从kotlin源代码发出.jack或.dex文件的工具.
正如今天出现的博客文章(Kotlin的Android路线图)所述:
现在有一些问题阻止Jack正确处理Kotlin生成的字节码(196084和203531),但我们计划与Google团队合作解决问题或提供我们方面的解决方法.完成此操作后,我们将能够在增量编译期间仅使用Jill转换已更改的类文件,而不是每次都转换所有类文件(这是旧Android工具中唯一可能的行为).
所以Kotlin最终将支持Jack&Jill并从中获益.
归档时间: |
|
查看次数: |
8600 次 |
最近记录: |