gpt4 book ai didi

android - Android App Check :JNI 启动时间太慢

转载 作者:行者123 更新时间:2023-12-04 04:13:42 25 4
gpt4 key购买 nike

根据 ActivityManager,我的 android 应用程序的启动时间约为 3.6 秒:

I/ActivityManager: Displayed app.com.app/.Activity.MainActivity: +3s653ms

我承认我的应用程序可能没有完全优化,因为根布局层次结构和 fragment 在启动时膨胀,但我不认为代码优化会让我赢 2s,我已经尽可能地缩短代码可以根据我的需要。

然后,在 logcat 中,我发现启动时的 Check:JNI 令人不安。从我的应用程序来看,JNI 的设置时间很长:

2020-04-12 22:14:04.324 12724-12724/? I/.com.socialtec: Late-enabling -Xcheck:jni
2020-04-12 22:14:04.376 12724-12724/? I/.com.socialtec: report jit thread pid = 12730
2020-04-12 22:14:05.848 12724-12757/socialtech.com.socialtech W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
2020-04-12 22:14:05.890 12724-12759/socialtech.com.socialtech W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.

JNI 开始需要 4.3 秒,结束需要 5.8 秒,因此执行时间约为 1.5 秒。

为了确定问题不是代码优化或 View 膨胀,我注释了我的 MainActivity 中的所有 onCreate() 以便清空它。在没有任何调用的情况下,应用程序是空的,并在 2.5 秒后启动,但 JNI 仍约为 1.5 秒。

2.5 - 1.5 = 1s,这是我的空应用程序的持续时间。

所以我假设 JNI 运行时间取决于应用程序,但即使应用程序内部没有运行代码,运行时间怎么会这么长?

JNI 究竟依赖于什么?有没有办法缩短它的运行速度以加快我的启动速度?

我可以在应用程序中将其关闭吗?

我希望我的应用在大约 +/- 2 秒内完成启动

最佳答案

Late-enabling -Xcheck:jni 是调试构建的默认设置,请参阅 documentation .

调试构建一般运行明显比完全优化的发布构建慢 - 由于 JIT 编译/调试(否则您无法设置任何与人类可读源代码匹配的断点,但只能设置 JVM 字节-代码)。获得一台高端计算机(或智能手机,或两者兼而有之)可能会稍微加快速度;这也将提高 Gradle 和模拟器的性能。坦率地说 - 你会得到你付出的代价。


仍然可以使用 adb 禁用 debug.checkjni:

adb shell setprop debug.checkjni 0

或者在模块的 build.gradle 中禁用 JNI 调试:

android {
buildTypes {
debug {
jniDebuggable false
}
}
}

关于android - Android App Check :JNI 启动时间太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61177802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com