JACK编译器配置
2016-07-06 20:36
295 查看
Android M开始,google默认使用JACK编译器,对于JACK编译器的编译流程下面这篇文章写的很详细:
http://taobaofed.org/blog/2016/05/05/new-compiler-for-android/
这里主要谈一下JACK编译器的配置。
1 JACK编译器三种模式
JACK编译器有三种模式:
LOCAL_JACK_ENABLED:=$(DEFAULT_JACK_ENABLED) # '' (ie disabled), disabled, full, incremental
即分别是disabled,full和incremental
disabled是指关闭JACK编译,使用android old toolchain。
full是指全部编译,即每次编译,都会将所有的code全部编译。
incremental是指增量编译,即只会编译修改的代码。incremental模式默认是关闭的,需要设置。
在官网有如下情况不能使用incremental编译模式:
Incremental compilation is deactivated when shrinking, obfuscation, repackaging or multi-dex legacy is enabled.
2 Android.mk如何设置JACK编译模式
根据上面的介绍,如果是单独的模块,只需要在Android.mk设置LOCAL_JACK_ENABLED为disabled, full, incremental即可。
3 如何指定Android默认不是JACK编译
在/build/core/config.mk有发现如下设定:
默认JACK编译器模式是full模式,设定JACK编译器是由ANDROID_COMPILE_WITH_JACK决定。
在/build/core/combo/javac.mk中,有如下设定:
如果需要修改Android默认不是JACK编译,只需要修改这里的ANDROID_COMPILE_WITH_JACK为false即可。
4 如何依赖classes.jar
使用JACK编译器后,一开始会发现找不到classes.jar,这样eclipse或android studio无法依赖系统jar。
后来发现是编译出来的classes.jar,和.jack以及dex文件在一个目录,统一放在out common目录,比如frameworks目录:
out/target/obj/JAVA_LIBRARIES/frameworks_intermedias/classes.jar
http://taobaofed.org/blog/2016/05/05/new-compiler-for-android/
这里主要谈一下JACK编译器的配置。
1 JACK编译器三种模式
JACK编译器有三种模式:
LOCAL_JACK_ENABLED:=$(DEFAULT_JACK_ENABLED) # '' (ie disabled), disabled, full, incremental
即分别是disabled,full和incremental
disabled是指关闭JACK编译,使用android old toolchain。
full是指全部编译,即每次编译,都会将所有的code全部编译。
incremental是指增量编译,即只会编译修改的代码。incremental模式默认是关闭的,需要设置。
在官网有如下情况不能使用incremental编译模式:
Incremental compilation is deactivated when shrinking, obfuscation, repackaging or multi-dex legacy is enabled.
2 Android.mk如何设置JACK编译模式
根据上面的介绍,如果是单独的模块,只需要在Android.mk设置LOCAL_JACK_ENABLED为disabled, full, incremental即可。
3 如何指定Android默认不是JACK编译
在/build/core/config.mk有发现如下设定:
431ifeq ($(ANDROID_COMPILE_WITH_JACK),true) 432DEFAULT_JACK_ENABLED:=full 433else 434DEFAULT_JACK_ENABLED:= 435endif
默认JACK编译器模式是full模式,设定JACK编译器是由ANDROID_COMPILE_WITH_JACK决定。
在/build/core/combo/javac.mk中,有如下设定:
12ifndef ANDROID_COMPILE_WITH_JACK 13# Defines if compilation with jack is enabled by default. 14ANDROID_COMPILE_WITH_JACK := true 15endif
如果需要修改Android默认不是JACK编译,只需要修改这里的ANDROID_COMPILE_WITH_JACK为false即可。
4 如何依赖classes.jar
使用JACK编译器后,一开始会发现找不到classes.jar,这样eclipse或android studio无法依赖系统jar。
后来发现是编译出来的classes.jar,和.jack以及dex文件在一个目录,统一放在out common目录,比如frameworks目录:
out/target/obj/JAVA_LIBRARIES/frameworks_intermedias/classes.jar
相关文章推荐
- 深入浅出谱减法去噪
- 程序的机器级表示 (2)
- GCC的浅层理解
- Android之WebView与原生js之间的相互调用
- C语言背景颜色
- SQL Server Replication II
- 【树的重心】 POJ 1655 Balancing Act
- TestNg参数化测试之读取csv文件
- HDU2096 小明A+B
- 腾讯马化腾:云服务的安全问题是我最忧虑的(通过云,180多人能挣了10亿美金的利润)
- Andrid5.0新特性——SVG、VectorDrawable
- 自定义拖拽cell
- 图论专题总结
- [东莞市选2007]最难的问题_纪中1001_spfa
- Linux vmstat命令详解
- C语言中函数传递(实参 形参)
- 7_4_N题 Til the Cows Come Home 题解[poj 2387] (最短路)
- POJ 2182 Lost Cows
- POJ-2253 Frogger(Dijkstra)(Floyd)
- Java中对List集合的常用操作