Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同Android版本的应用程序大小不同_Java_Android_Libgdx_Apk_Android Install Apk - Fatal编程技术网

Java 不同Android版本的应用程序大小不同

Java 不同Android版本的应用程序大小不同,java,android,libgdx,apk,android-install-apk,Java,Android,Libgdx,Apk,Android Install Apk,我读了很多关于安装后不同应用程序大小的文章。例如: 但有些事我还是不明白。我有一个应用程序(com.onhost.skuska用LibGDX制作)和安卓4.3。安装完成后(例如,没有额外数据),需要17.54 MB,在Android 5.0上,Galaxy S6需要30.73 MB 起初我认为这是关于不同的硬件或屏幕分辨率。我曾尝试在Android版本4.3的S4 Genymotion emulator上安装该应用程序,其大小约为17.5MB。当我用Android 5.0在我的S4上安装应用程序

我读了很多关于安装后不同应用程序大小的文章。例如:

但有些事我还是不明白。我有一个应用程序(com.onhost.skuska用LibGDX制作)和安卓4.3。安装完成后(例如,没有额外数据),需要17.54 MB,在Android 5.0上,Galaxy S6需要30.73 MB

起初我认为这是关于不同的硬件或屏幕分辨率。我曾尝试在Android版本4.3的S4 Genymotion emulator上安装该应用程序,其大小约为17.5MB。当我用Android 5.0在我的S4上安装应用程序时,安装后的应用程序大小增加到29.21MB

安装后,我调查了实际文件(在终端上使用find-name“skuska”)。在Android 5.0上,Galaxy S6(Genymotion)的主要文件夹和文件如下:

  • 文件,22 MiB,/data/dalvik cache/x86/data@app@com.onhost.skuska-1@base.apk@类.dex
  • 文件夹,912 KiB,/data/data/com.onhost.skuska/lib/包含:
    • 文件,668 KiB,libgdx-freetype.so
    • 文件,244 KiB,libgdx.so
  • 文件夹,8.8 MiB,data/app/com.onhost.skuska-1/包含:
    • 文件,8120kib,base.apk
    • 文件夹,920 KiB,lib/x86/再次包含:libgdx-freetype.so和libgdx.so
Android 4.3上的文件如下:

  • 文件,8924kib,/data/dalvik缓存/data@app@com.onhost.skuska-2。apk@classes.dex
  • 文件,8120kib,/data/app/com.onhost.skuska-2.apk
  • 文件夹,912 KiB,/data/app lib/com.onhost.skuska-2/包含:
    • 文件,668 KiB,libgdx-freetype.so
    • 文件,244 KiB,libgdx.so
正如我们所看到的,主要区别在于.dex文件。我想问你,是否有办法使.dex文件的大小与安卓4.3上的相同?或者为什么Android 5.0中有两个times*.so文件

非常感谢您对解决此问题提出的任何建议

编辑:我确实使用Proguard进行收缩(没有优化或混淆)。
编辑2:我还检查了一些未在LibGDX中编程的其他应用程序,它们的5.0版本更大,但没有那么引人注目。

它们大小不同的原因是因为Android 5.0具有附加功能,出于兼容性原因,这些功能包含在classes.dex中(即使您没有使用它们)。这有时也称为样板代码。此外,如果您有两个不同的安装,它们的签名不同,但使用相同的应用程序名(com.onhost.skuska),那么android将同时安装这两个应用程序,而不是覆盖第一个,而是在末尾添加-1(com.onhost.skuska-1)等

/数据/dalvik缓存/x86/data@app@com.onhost.skuska-1@base.apk@类.dex
是一个缓存文件,用于加速常用应用程序的加载,这样就不必每次提取apk文件。

非常感谢您的回复。你觉得我能做些什么吗?我在6.0中也进行了检查,它似乎恢复了正常。我还检查了其他一些没有在LibGDX中编程的应用程序,它们的5.0版本更大,但没有那么引人注目。