Android Studio:Build APK vs Run APK之间的大小差异

时间:2016-01-21 13:54:05

标签: android android-studio gradle build apk

我注意到使用这两个选项生成的apk之间的大小不同。

为什么会这样?

使用构建 - >构建APK 选项:

MyProject \ app \ build \ outputs \ apk \ app-debug.apk(Size 2.997 KB)

使用运行应用选项:

MyProject \ app \ build \ outputs \ apk \ app-debug.apk(Size 3.300 KB)

感谢。

4 个答案:

答案 0 :(得分:10)

当您通过Build-> Build APK创建构建时,apk将包含所有设备的所有资源。 即ldpi,mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi。

但是如果您在设备/模拟器上运行应用程序,它将检测到手机的分辨率是什么,并将仅将具有该分辨率的资源添加到apk文件中。例如,如果您的设备是xhdpi,它将丢弃所有其他屏幕分辨率,并且仅包含xhdpi资源。

答案 1 :(得分:5)

构建APK是运行:app:assembleDebug Gradle任务的快捷方式(假设您在 Build Variants 窗口中激活了调试变体)。

运行应用程序时,我们首先询问您要定位的设备,然后将信息传递给Gradle。除此之外,这可以让我们过滤掉不必要的资源。如果您启用了即时运行,我们还会将其他代码打包到APK中。

答案 2 :(得分:5)

我的即时跑步已关闭。

我使用Run->Run 'App'获得6MB APK大小,使用Build->Build APK选项获得11MB用于签名和未签名APK。 Build->Generate Signed APK...选项也为我的应用提供了11MB APK。

我认为Android Studio会放弃一些资源来加快构建速度。

具有11MB大小的APK拥有更多资源,因此在游戏商店上传是更好的选择。

我使用Build->Analyze Apk...来分析两个APK,因此我发现了来自v4和v17库的一些额外的drawable,因为我发现了5.7mb的差异。

enter image description here

答案 3 :(得分:3)

如果将issue作为Android Studio团队提出,这可能会更好。我的猜测是你在Android Studio(AS)中使用Instant Run。这可以解释更大的尺寸,因为Instant Run会为更改的代码生成代理类。

编辑Run配置以使用gradle build构建,您应该能够删除额外的代码......但是这将带来更大的构建/部署时间...如果大小调试版本对你来说非常重要然后好的,但是对于大多数人来说这将破坏Android团队最近为DSL提高速度所做的所有改进