У нас было приложение в магазине игр в течение короткого времени, но никто из наших разработчиков не использовал устройства Samsung, поэтому мы не смогли протестировать их. Сегодня мы поделились с некоторыми пользователями Samsung, и когда они устанавливают приложение, оно сразу же вылетает без открытия. Я получил несколько сообщений о сбоях через Crashlytics по этому поводу, но после расследования я не могу найти решение. Все найденные решения указывают на то, что имя класса должно быть написано заглавными буквами, но наше уже есть.
Вот обзор журналов аварий:
Exception java.lang.RuntimeException: Unable to start activity
ComponentInfo {com.zonderstudios.zonder/com.zonderstudios.zonder.MainActivity}:
android.content.res.Resources$NotFoundException: Drawable
com.zonderstudios.zonder:layout/launch_screen with resource ID
#0x7f04002d
Caused by android.content.res.Resources$NotFoundException: Drawable
com.zonderstudios.zonder:layout/launch_screen with resource ID #0x7f04002d
Caused by android.content.res.Resources$NotFoundException: File
res/layout/launch_screen.xml from drawable resource ID #0x7f04002d
Caused by android.view.InflateException: Class not found LinearLayout
Caused by java.lang.ClassNotFoundException: Didn't find class
"LinearLayout" on path: DexPathList[[zip file
"/data/app/com.zonderstudios.zonder-
R0tFS_4BNjS6q0znS27jPw==/base.apk"],nativeLibraryDirectories= .
[/data/app/com.zonderstudios.zonder-R0tFS_4BNjS6q0znS27jPw==/lib/arm,
/data/app/com.zonderstudios.zonder-
R0tFS_4BNjS6q0znS27jPw==/base.apk!/lib/armeabi-v7a, /system/lib,
/system/vendor/lib]]
По существу: Не найден класс "LinearLayout" по пути: DexPathList для экрана запуска.
Заставка отлично работает на всех наших эмуляторах и других физических устройствах, которые мы тестировали до сих пор. Но эта проблема до сих пор проявляется в Galaxy S6, S8 и S8 +.
Вот файл launch_screen.xml
. @ drawable / launch_screen относится к png-изображению, которое мы используем в качестве заставки.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/launch_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/launch_screen"
/>
</LinearLayout>
Мы показываем экран запуска, установив начальную тему приложения на AppTheme.Launcher
, которая определяется следующим образом:
styles.xml
:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowLightStatusBar" tools:targetApi="23">false</item>
<!-- Customize your theme here. -->
</style>
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@layout/launch_screen</item>
<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>
</style>
</resources>
Кто-нибудь знает, что вызывает эту проблему или почему определенный встроенный класс не может быть найден только на одном устройстве?