【问题标题】:Android Studio NDK app performance difference between RUN and BUILDAndroid Studio NDK 应用在 RUN 和 BUILD 之间的性能差异
【发布时间】:2021-12-28 10:36:27
【问题描述】:

我正在尝试使用 C++、SDL2 和 Android Studio NDK 创建数独应用程序。
理论上它已经运行良好,除非我手动构建和安装应用程序。
当我在 Android Studio 中使用 RUN 按钮运行应用程序时,我得到大约 50-60 FPS,但当我通过 BUILD -> GENERATE SIGNED BUNDLE / APK ... -> APK 安装应用程序并放置应用程序时,性能会大幅下降它在实际 Android 设备上的 SD 卡上(我已经在小米 Mi A1、三星 Tab S3 和一些旧设备上测试过)。手动安装应用程序时,我得到大约 9-11 FPS。

为了创建项目,我使用了 SDL2 包(版本 2.0.18)中的模板项目。
我对这两种情况都使用相同的(发布-)构建变体。
该应用程序是通过 NDK-Build 构建的。

我的结论是,虽然我的渲染代码可能不是最有效的,但这并不是导致这个巨大性能问题的问题。

Screenshot: build with RUN
Screenshot: build with BUILD -> GENERATE SIGNED BUNDLE / APK... -> APK

我已经尝试更改几个构建设置,包括在调试和发布模式之间切换,在 Application.mk 文件中添加优化(C 和 C++ -)标志,使用未压缩资产构建。两种情况下的性能保持不变。

我的问题是:构建 APK 和单击 RUN 之间可能有什么区别,这会导致此性能问题? 我希望有人可以在这里帮助我,因为我现在很无能为力。提前谢谢你。

【问题讨论】:

    标签: c++ performance android-studio android-ndk ndk-build


    【解决方案1】:

    RUN 和 BUILD 的区别在于我的运行配置
    Installation Options -> Deploy 我选择了“APK from app bundle”。经过数小时的研究和尝试后,我将其更改为“默认 APK”,这导致了与上述问题中所述的构建和手动安装相同的性能问题。
    虽然我仍然不知道为什么会这样,但我找到了一种获取 APK 文件的方法,至少目前它对我有用:

    而不是使用 BUILD -> GENERATE SIGNED BUNDLE / APK... -> APK 我现在选择 BUILD -> GENERATE SIGNED BUNDLE / APK... -> ANDROID APP BUNDLE 并将应用程序包转换为通过 bundletool (https://developer.android.com/studio/command-line/bundletool) 的 APK。转换后的 APK 在我的 Android 设备上运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-08
      • 2010-11-21
      • 2012-05-26
      • 2013-09-02
      • 2014-03-15
      • 2010-12-07
      • 2017-06-05
      • 2011-12-03
      相关资源
      最近更新 更多