Eclipse/ADT在Android库项目方面有多聪明?

cam*_*ave 11 eclipse android adt android-library

所以,我的"Utility"一些项目中有一些样式类.我很好奇我是否可以将它们移动到包含我所有或大部分非特定应用胶水代码(主要是包装和接口)的Android库项目.

所以,我的问题是该库中不需要的文件会发生什么.我知道Android Library Projects基本上只是将他们的代码复制到另一个项目中,所以如果我说在我的"通用"库中使用25%的代码,我的应用程序实际上是否包含所有100%的字节码,或者它是否正确剥离这只是我需要的东西.

我过去在Proguard中遇到了一些未使用过的课程的问题,所以我现在只是曾经被咬过一次,两次因为ADT而害羞......

mre*_*elt 4

不幸的是,当库变得更大时,你的所有项目都会增长 - 即使该库的大部分内容都没有被使用。我自己通过创建应用程序 A 和库 L 进行了测试。如果 L 是 A 中使用的库,则如果我添加更多类,classes.dex 文件(因此 A.apk 文件)也会增长 - 即使它们不是用过的。

总结一下:现在,我会为某些较小且可能被许多项目使用的东西创建一个基本库,并为每个将更大且仅由某些项目使用的新组件创建一个新库。新库的一个很好的候选者是一个在资源中定义了多个图像的新 UI 组件。基础库的一个很好的候选者是常用的方法和文件缓存之类的东西。Dalvik 的编译代码被严重压缩,您可以在此处看到。(整个演示实际上很有趣:-)

编辑:如果激活了 ProGuard,它还会为您删除未使用的代码。默认的 proguard.cfg 就足够了。它不会在(默认)调试构建时运行,而是在编译最终的 .apk 时运行。所以这实际上是可能的!