"Unknown bits set in runtime_flags: 0x8000" Logcat 在 Android Q 模拟器上的警告

"Unknown bits set in runtime_flags: 0x8000" warning in Logcat on Android Q emulator

我在 logcat 中收到此警告作为我的应用程序的第一行,我不知道它指的是什么以及我应该如何修复它。 Google 没有提供太多这方面的信息(事实上,none 根本没有)。请指教。这可能是关于什么样的旗帜?有没有办法找出指定的位可能指的是什么(或者,也许,在旧的 Android 版本中指的是什么,但在 Android 10 中变得无效)? Android 9 或更早版本的日志中没有这样的行。

我搜索了一下,给你一些建议。

首先看看这个链接:

hexadecimal-0x8000

difference between constants 32768 and 0x8000

现在这个链接可能对你有帮助:

Android Fragment no view found for ID

FLAG_ACTIVITY_CLEAR_TOP

addFlags(0x8000)

最后一件事是:

再次从模拟器和运行项目中卸载应用程序。

第一次编辑:

我再次搜索,我认为我们接近回答了,所以请查看此链接并说出您的看法?他们无关紧要吗?或者我们走对了。

...

AConfiguration

org.robolectric.res.android

Class配置

ACONFIGURATION_SCREEN_ROUND

public static final int ACONFIGURATION_SCREEN_ROUND

...

\sdk\ndk-bundle\sysroot\usr\include\android

configuration.h

   * Bit mask for
   * <a href="@dacRoot/guide/topics/resources/providing-resources.html#LayoutDirectionQualifier">layout direction</a>
   * configuration.

   ACONFIGURATION_LAYOUTDIR = 0x4000,
   ACONFIGURATION_SCREEN_ROUND = 0x8000

...

https://developer.android.com/ndk/reference/group/configuration

android_ndk_sys

 Constant : ACONFIGURATION_SCREEN_ROUND
 ->
 Constant android_ndk_sys::ACONFIGURATION_SCREEN_ROUND
 pub const ACONFIGURATION_SCREEN_ROUND: _bindgen_ty_3
 ->
 Type Definition android_ndk_sys::_bindgen_ty_3

 type _bindgen_ty_3 = u32;

...

ACAMERA_VENDOR = 0x8000

 ACAMERA_VENDOR = 0x8000
 ACAMERA_DISTORTION_CORRECTION << 16,
   ACAMERA_HEIC_START = ACAMERA_HEIC << 16,
   ACAMERA_HEIC_INFO_START = ACAMERA_HEIC_INFO << 16,
   ACAMERA_VENDOR_START = ACAMERA_VENDOR << 16

在我的情况下至少会发生,因为当另一个 activity 已经 运行 时片段试图更新视图(或类似的东西)所以只是

@Override
public void onStop() {
    super.onStop();
    getActivity().finish();
}

片段内部解决了这个错误

我带了一块石头到大楼。我回溯错误消息的代码。它位于 C++ 文件中的第 345 行 dalvik_system_ZygoteHooks.cc 至少,如果 (runtime_flags!= 0) 则将打印错误消息。 0x8000 也对应于 USE_APP_IMAGE_STARTUP_CACHE 标志(见第 157 行)。 USE_APP_IMAGE_STARTUP_CACHE 标志的测试在第 340 行完成。通常,runtime_flags 不应该再有 USE_APP_IMAGE_STARTUP_CACHE 的高位,但由于打印了错误,情况似乎并非如此.

不过最后报错好像对申请没有影响

不确定这是否对其他人有帮助,但我发现我只在模拟器上遇到这个奇怪的错误! 所以可能是模拟器 ‍♂️ 的错误。

无论如何,我建议在真实设备上进行测试,因为这是第二次浪费我大量时间进行调查的这类问题,我不会再相信模拟器,尤其是当它们没有给出明确的错误时日志。