当我在Eclipse中编译一个Android项目时,它不会生成任何Ant脚本或任何内容,所以我假设它使用Eclipse编译器生成.class文件,并使用dx
将这些文件翻译为.dex。所以这很好,我知道Eclipse编译器与javac
不同,不能更改。Android使用什么编译器,我可以改变它吗?
但是,当我使用android
生成build.xml
文件时,我看到它引用了其他Ant文件,最终我能够追踪到javac
的实际调用。所以我对此有几个问题。
- 我是一个蚂蚁新手。
<javac>
Ant命令是否对应于由我的JAVA_HOME
env变量引用的javac
?或者是别的什么? - 当您在Eclipse中使用“导出应用程序”选项时,它是否仍然使用Eclipse编译器?我会一直被迫在Ant和Eclipse中使用不同的编译器吗?
- 如果我更改
build.xml
文件并更改“编译”目标,我可以指定我想要的任何编译器吗?
我真的不太关心我使用的编译器,我只是好奇。我所追求的主要目的是确保我使用的是现代编译器,并且我可以期待所有常见的优化(例如字符串文字的实习)。 我是否正确地承认这一点?
P.S.谈到优化,dx
做什么比仅仅将一个字节码转换为另一个更花哨?
源文件首先编译为java字节码。据我所知,这是用你安装的任何JDK完成的,而不是通过eclipse本身。然后通过android sdk工具(可能是dx)将java字节码转换为Dalvik字节码。 – 2010-11-23 18:25:46
通常的做法是设置%JAVA_HOME%ant%ANT_HOME%的环境变量并将%JAVA_HOME%\ bin和%ANT_HOME%\ bin添加到您的路径。据我所知,Eclipse没有单独的'javac'。它只是一个支持多种语言的IDE。您将%JAVA_HOME%设置为您的JDK,而不是JRE – NickT 2010-11-23 18:31:12