影响.apk文件大小的因素

时间:2014-08-21 17:41:41

标签: android

这可能听起来像一个愚蠢的问题,但我在开发Android应用程序时遇到了异常,我想与更有经验和知识渊博的Android开发人员讨论它。

我正在开发Android应用程序。我有一个私人仓库,在我进行更改时我会推送代码。不足之处是,Android Packaged File(apk)在两台不同的计算机上的大小差别不到50%。在计算机1上,.apk文件大小为1,037 KB,在计算机2上为541 KB。我在两台计算机上使用相同版本的Eclipse,并且在计算机1上使用完全相同的代码。 所以,

  • 到底发生了什么事?
  • 是否有一些影响apk文件大小的秘密因素?如果是的话,他们是什么?

我们将不胜感激。

更新 正如@CommonsWare所建议的那样,我通过WinRar提取了这两个apk文件的内容。我现在列出了apk中的文件数和特定目录/文件大小。让我们将大小为1,037 KB的apk文件称为Bigger_APK.apk,将大小为541 KB的apk文件称为Smaller_APK.apk。

  

Bigger_APK.apk

META-INF(目录)。 3个档案。总大小:84.8 KB

res(目录)。 413个文件,12个文件夹。总大小:435 KB

AndroidManifest.xml(文件)。总大小:2.61 KB

classes.dex(文件)。总大小:1.48 MB

resources.arsc(文件)。总大小:116 KB

  

Smaller_APK.apk

META-INF(目录)。 3个档案。总大小:16 KB

res *(目录)。 82个文件,8个文件夹。总大小:230 KB

AndroidManifest.xml(文件)。总大小:2.61 KB

classes.dex(文件)。总大小:851 KB

resources.arsc(文件)。总大小:14 KB

比较后要考虑的要点:

  • 如果较大文件中的对象数与较小文件中的对象数相同,为什么res目录文件大小会有所不同?
  • 为什么classes.dex文件的大小不同,尽管我在同一版本的IDE上编译相同的代码?

1 个答案:

答案 0 :(得分:1)

没有太多细节,我会去玩猜猜游戏。到目前为止,我已经提出了两个可能的答案:

1-)您正在使用proguard或其他混淆器,并且混淆器配置在计算机之间是不同的。如果您使用的是proguard,则配置文件位于project.properties中,通常指向${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

2-)你指向相似但不同的依赖。

无论哪种方式,我只能想象问题出在您的版本控制之外。这两个答案是我能想到的。应该有更多。