最近我开始收到Android原生崩溃(在谷歌播放生命周期中报道).它们只发生在配备Android 8的三星Galaxy S8或S8 +手机上.
根据堆栈跟踪,它与UI呈现器线程相关.但是我不知道如何修复它,甚至不知道它在应用程序中的确切位置.
任何想法如何找出应用程序在哪里发生这种情况?为什么只有Android 8的Galaxy S8会受到影响?谢谢.
backtrace:
#00 pc 0000000000071854 /system/lib64/libc.so (tgkill+8)
#01 pc 000000000001e058 /system/lib64/libc.so (abort+88)
#02 pc 0000000000008248 /system/lib64/liblog.so (__android_log_assert+328)
#03 pc 0000000000052430 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread10EglManager11damageFrameERKNS1_5FrameERK6SkRect+320)
#04 pc 000000000004f9dc /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread14OpenGLPipeline4drawERKNS1_5FrameERK6SkRectS8_RKNS0_12FrameBuilder13LightGeometryEPNS0_16LayerUpdateQueueERKNS0_4RectEbRKNS0_15BakedOpRenderer9LightInfoERKNSt3__16vectorINS_2spINS0_10RenderNodeEEENSM_9allocatorISQ_EEEEPNS0_19FrameInfoVisualizerE+76)
#05 pc 000000000004d7e0 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread13CanvasContext4drawEv+176)
#06 pc 00000000000511e8 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread13DrawFrameTask3runEv+184)
#07 pc 0000000000058494 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+356)
#08 pc 0000000000011c58 /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+280)
#09 pc 00000000000fd688 /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+136)
#10 pc 000000000006de44 /system/lib64/libc.so (_ZL15__pthread_startPv+36)
#11 pc 000000000001f9a4 /system/lib64/libc.so (__start_thread+68)
Run Code Online (Sandbox Code Playgroud) 我的应用程序使用Android 6.0指纹API来保护Android KeyStore中的AES密钥.只有当用户通过指纹传感器进行身份验证时,才能使用存储的密钥,因为KeyGenParameterSpec已初始化setUserAuthenticationRequired(true).
当用户触摸传感器时,我从回调中获得初始化的密码,并将onAuthenticationSucceeded(Cipher)其用于解密.
除了搭载Android 6的三星手机外,这种方法效果很好.当我尝试使用返回的密码时,三星手机有时会抛出android.security.KeyStoreException: Key user not authenticated.因此,即使onAuthenticationSucceeded(Cipher)Android KeyStore 返回密码认为用户未被指纹传感器验证.
当应用程序长时间不使用时,似乎发生了崩溃.当应用程序崩溃时,通常都能正常工作.
因为这个错误是随机发生的,而且只发生在三星手机上...这似乎是由Android 6.0 KeyStore和FingerPrint API的三星实现中的一些内部计时问题引起的.
编辑:此问题也在OnePlus和Acer手机中体验过.
encryption android fingerprint android-keystore android-6.0-marshmallow
当使用android:drawableLeft时,Android 4.2无法正确显示RadioButton.drawableRight没问题.
左侧的drawable与Radio按钮图形重叠.并且至少Android 2.2-4.1似乎可以使用drawableLeft.
你知道解决方法吗?以编程方式设置drawableLeft无法解决此问题.
4.2 Android问题

4.1 Android正确渲染(至少Android 2.2-4.0也正确渲染)

Android XML布局代码:
<RadioButton
android:id="@+id/radio_cloud_dropbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:drawableLeft="@drawable/dropbox_logo"
android:checked="true"
android:text="@string/lbl_cloud_dropbox" />
Run Code Online (Sandbox Code Playgroud) 我们正在实现一个圆形图标(带有前景和背景)和图标。
<application
android:allowBackup="false"
tools:replace="android:allowBackup"
android:label="@string/app_name"
android:supportsRtl="true"
android:icon="@mipmap/logo" //normal logo
android:roundIcon="@mipmap/logo_o" //Our logo with foreground and background
android:name=".MyApplication"/>
Run Code Online (Sandbox Code Playgroud)
适用于每个版本,但不适用于 API 25
我们的前景和背景代码是下一个
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/logo_background"/>
<foreground android:drawable="@mipmap/logo_foreground"/>
</adaptive-icon>
Run Code Online (Sandbox Code Playgroud) 我想提示用户给我的iOS应用评分。如果用户已经对我的应用程序进行了评级(无论是在App Store中还是在应用程序内查看提示中),我都无法确定是否会显示应用程序内查看提示—有人知道吗?
此外,在本文档中,Apple建议我们允许两次或两次之间的尝试来进行应用内审核提示。这是在操作系统级别上施加的硬性限制,可以阻止应用程序内审阅请求的发生吗?或者仅仅是准则?
android ×4
encryption ×1
fingerprint ×1
ios ×1
objective-c ×1
radio-button ×1
swift ×1
xcode ×1