0

在我SplashActivity使用retrofiteventbus.

我必须等待开始改造请求,或者可能APP至少开始40 秒

在那之前只是显示一个白页。

每秒我得到两个这样的日志系列:

01-04 09:36:08.104 5217-5217/? W/dex2oat: Unexpected CPU variant for X86 using defaults: x86
01-04 09:36:08.104 5217-5217/? W/dex2oat: Mismatch between dex2oat instruction set features (ISA: X86 Feature string: smp,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,-lock_add,-popcnt) and those of dex2oat executable (ISA: X86 Feature string: smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2,-lock_add,-popcnt) for the command line:
01-04 09:36:08.104 5217-5217/? W/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg & --debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2,-lock_add,-popcnt --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/data/com.idek_2.titrefarsi/files/instant-run/dex/slice-com.android.support-cardview-v7-25.0.1_1baeb40f31cb26daebad20328eaaeda07318001c-classes.dex --oat-fd=35 --oat-location=/data/user/0/com.idek_2.titrefarsi/cache/slice-com.android.support-cardview-v7-25.0.1_1baeb40f31cb26daebad20328eaaeda07318001c-classes.dex --compiler-filter=speed
01-04 09:36:08.106 5217-5217/? I/dex2oat: /system/bin/dex2oat --debuggable --dex-file=/data/data/com.idek_2.titrefarsi/files/instant-run/dex/slice-com.android.support-cardview-v7-25.0.1_1baeb40f31cb26daebad20328eaaeda07318001c-classes.dex --oat-fd=35 --oat-location=/data/user/0/com.idek_2.titrefarsi/cache/slice-com.android.support-cardview-v7-25.0.1_1baeb40f31cb26daebad20328eaaeda07318001c-classes.dex --compiler-filter=speed
01-04 09:36:08.618 5217-5217/? I/dex2oat: dex2oat took 514.000ms (threads: 2) arena alloc=259KB (266112B) java alloc=86KB (88464B) native alloc=830KB (850408B) free=1729KB (1771032B)

我该怎么办 ?

谢谢。

4

2 回答 2

1

禁用即时运行,并从文件-> 设置禁用即时运行中的部署

于 2017-01-04T08:31:36.370 回答
0

特别是,可能导致延迟的Mismatch between dex2oat instruction set features警告可能是由于正在运行的模拟器已配置为使用ABI(例如 x86、x86_64)运行,而相关 APK 中的本机库不可用。

例如,模拟器可能正在运行一个x86_64CPU/ABI,而 APK 仅包含用于x86和 (maybe)的本机库armeabi-v7a

使用 Android Studio 检查模拟器的 ABI 很容易:

Android Studio 中的 AVD 对话框

(这里的模拟器是 a x86)。

使用 Android Studio 也很容易检查包含了哪些原生库的风格。通过在项目文件树视图中双击它来打开 APK 文件,或者从外部拖放它。然后,展开内容树的“lib”部分:

APK内容:库

(在这里您可以看到所有常见的 ABI 都已包含在内,即x86_64x86armeabi-v7a

因此,为了尝试解决此类问题(这对我有用),您可以尝试重新创建正确的 AVD,或者重新访问您的应用程序的splits配置。这是标准的单一风味 APK 的典型配置:

android {
    // ...

    splits {
        abi {
            reset()
            enable false
            universalApk false
            include 'armeabi-v7a', 'x86', 'x86_64'
        }
    }
}

你可以在这部分下控制APK的这方面的内容include。但是请注意,如果不拆分 APK,它的整体大小会增加。

如果你有更复杂的 APK 拆分配置,你仍然可以得到这个结果,但最好先参考官方文档

于 2019-12-23T12:13:24.677 回答