我注意到使用这两个选项生成的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)
感谢。
答案 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的差异。
答案 3 :(得分:3)
如果将issue
作为Android Studio团队提出,这可能会更好。我的猜测是你在Android Studio(AS)中使用Instant Run
。这可以解释更大的尺寸,因为Instant Run会为更改的代码生成代理类。
编辑Run
配置以使用gradle build
构建,您应该能够删除额外的代码......但是这将带来更大的构建/部署时间...如果大小调试版本对你来说非常重要然后好的,但是对于大多数人来说这将破坏Android团队最近为DSL提高速度所做的所有改进