【问题标题】:Android Studio: Difference in size between Build APK vs Run APKAndroid Studio:构建 APK 与运行 APK 之间的大小差异
【发布时间】:2016-04-27 19:31:59
【问题描述】:

我注意到使用这 2 个选项生成的 apk 的大小有所不同。

为什么会这样?

使用 Build -> Build APK 选项:

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

使用运行应用选项:

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

谢谢。

【问题讨论】:

    标签: android android-studio gradle build apk


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我的即时运行已关闭。

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

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

      11MB 大小的 APK 拥有更多资源,因此最好在 Play-store 上上传。

      我使用Build->Analyze Apk... 分析了这两个 APK,因此我发现 v4 和 v17 库中的一些额外可绘制对象导致 res 有 5.7mb 的差异。

      【讨论】:

        【解决方案3】:

        如果向 Android Studio 团队提出 issue,这可能会得到更好的回答。我的猜测是您在 Android Studio (AS) 中使用Instant Run。这可以解释更大的大小,因为 Instant Run 会为更改的代码生成代理类。

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 好的,那么如何让我的旧apk缩小尺寸,同时将附加代码打包到APK中
          • 如何弄清楚 android studio 究竟做了什么来过滤资源,以便在 android studio 之外构建自动化?
          猜你喜欢
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-17
          • 2022-10-25
          • 2018-07-07
          • 2015-06-15
          相关资源
          最近更新 更多