10

所以我最近注意到我的 Phonegap/Android 项目 (project/bin/dexedLibs) 中有一个文件夹,这个文件夹包含两个 .jar 文件。在浏览了互联网之后,我发现了一个网站,其中作者说 ADT 版本 21 将“预索引库”放入项目中以加快构建时间。

我最近确实升级到了 ADT 21,只是想知道是否有人可以给我更多关于这些“预索引库”真正做什么的信息?我无法在网上找到任何其他有用的信息。

4

3 回答 3

10

我有一个包含大约 20 个外部库的 Android 项目。在 ADT 21 之前,每次我更改源代码都需要很长时间来重建应用程序。现在速度相当快!

我猜原因是,在 ADT 21 之前,每次在 Eclipse 中点击“运行”按钮时,它都会将外部库编译成 dex 代码。现在它将只为外部库编译一次 dex 代码(直到它们改变),并将预构建库用于以后的“运行”。

我喜欢这个功能!

于 2012-11-30T13:35:34.023 回答
5

意识到!我刚刚花了一个小时来找出为什么会出现异常:

Caused by: java.lang.NoSuchMethodError: 

原因是因为我用工作方法将我的lib jar更改为新的jar(同名),而ADT 21没有在dexedLibs中准备新的。

所以只需删除 bin 目录,Eclipse 就会重新创建它。

于 2013-03-12T20:36:44.227 回答
0

这个问题大约有 2 年的历史,但仍然很有趣。

对于稍后浏览这里的人:我只是遇到了麻烦,因为我将 Cordova 项目从my.name.a3eto重命名my.name.A3E,然后构建过程崩溃了。发现 ant-build 中的 dexed 文件没有刷新(区分大小写)。删除ant-build文件夹后它工作正常,但第一次构建需要更长的时间。

一个dex文件是一个Dalvik EXecutable文件,一些编译后的字节码可以被Dalvik虚拟机执行。Dalvik 是 Android 的核心组件,这就是它存在的原因。

http://sourceforge.net/projects/dexer/ http://developer.android.com/reference/dalvik/system/DexFile.html http://fileinfo.com/extension/dex

请注意,Eclipse 项目 clean 不会删除 dexed 库。

于 2015-03-01T13:32:37.633 回答