android - 当涉及到 Android 库项目时,Eclipse/ADT 有多聪明?

标签 android eclipse adt android-library

所以,我在我的一些项目中有一些"Utility" 风格的类。我很好奇我是否可以将它们移动到一个 Android 库项目,该项目包含我的全部或大部分非应用程序特定的粘合代码(主要是包装器和接口(interface))。

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

我过去在 Proguard 中有一些未使用的类的问题,所以我现在对 ADT 只是一次被咬,两次害羞......

最佳答案

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

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

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

关于android - 当涉及到 Android 库项目时,Eclipse/ADT 有多聪明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952941/

相关文章:

java - 我的应用程序崩溃了,不知道为什么

java - 单击删除按钮时,android从数组列表中删除值

java - 当单选按钮被选中时设置 View 的可见性

eclipse - Eclipse 上的错误

Android Fragments - 如何保留数据?

android - 不同屏幕尺寸的布局,为什么选择默认布局?

python - PyDev 调试器与命令行 django runserver 命令不同

C ADT - 为什么初始化函数通常返回一个指针?

java - 在Eclipse上安装Android ADT时出错

java - 更新安卓图库