Отладка экрана-заставки Android

Мой экран-заставка работает в эмуляторе, но на физическом устройстве происходит сбой. В чем может быть дело?

styles.xml

<resources>

<!-- Base application theme. -->
<style name = "AppTheme" parent = "Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
</style>

<style name = "SplashTheme" parent = "AppTheme">
    <item name = "android:windowBackground">@drawable/splash_screen</item>
</style>

</resources>

splash.xml

<?xml version = "1.0" encoding = "utf-8"?>
<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">

    <item
            android:drawable = "@drawable/splash_screen"/>

    <item>
        <bitmap
                android:gravity = "center"
                android:src = "@mipmap/ic_launcher"/>
    </item>

</layer-list>

Это все, что я добавил для заставки, которая работает в эмуляторе. Как отладить сбой на физическом устройстве (Samsung S8).

AndroidManifest.xml

<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    package = "com.koolbusiness">

    <uses-permission android:name = "android.permission.INTERNET" />
    <uses-permission android:name = "android.permission.SYSTEM_ALERT_WINDOW"/>

    <application
      android:name = ".MainApplication"
      android:label = "@string/app_name"
      android:icon = "@mipmap/ic_launcher"
      android:allowBackup = "false"
      android:theme = "@style/AppTheme">
        <activity
                android:name = ".MainActivity"
                android:label = "@string/app_name"
                android:theme = "@style/SplashTheme"
                android:configChanges = "keyboard|keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name = "android.intent.action.MAIN" />
                <category android:name = "android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
      <activity android:name = "com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

Мне удалось создать эту трассировку стека (не теряя рассудка в поисках драйвера USB) из консоли приложения Google.

37 minutes ago on app version 7
Samsung Galaxy S8 (dreamlte), 4096MB RAM, Android 8.0
Report 1
java.lang.RuntimeException: 

  at android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:229)

  at android.view.RecordingCanvas.drawBitmap (RecordingCanvas.java:97)

  at android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:529)

  at android.view.View.getDrawableRenderNode (View.java:20627)

  at android.view.View.drawBackground (View.java:20563)

  at android.view.View.draw (View.java:20343)

  at com.android.internal.policy.DecorView.draw (DecorView.java:979)

  at android.view.View.updateDisplayListIfDirty (View.java:19297)

  at android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:686)

  at android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:692)

  at android.view.ThreadedRenderer.draw (ThreadedRenderer.java:800)

  at android.view.ViewRootImpl.draw (ViewRootImpl.java:3447)

  at android.view.ViewRootImpl.performDraw (ViewRootImpl.java:3234)

  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2769)

  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1738)

  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7745)

  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:911)

  at android.view.Choreographer.doCallbacks (Choreographer.java:723)

  at android.view.Choreographer.doFrame (Choreographer.java:658)

  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)

  at android.os.Handler.handleCallback (Handler.java:789)

  at android.os.Handler.dispatchMessage (Handler.java:98)

  at android.os.Looper.loop (Looper.java:164)

  at android.app.ActivityThread.main (ActivityThread.java:6938)

  at java.lang.reflect.Method.invoke (Native Method)

  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Вставка аварийного журнала / stacktrace не показалась вам очевидным шагом1?

Shark 20.03.2018 15:16

@Shark У меня нет информации, где это.

Niklas R. 20.03.2018 15:17

Если у вас нет трассировки стека (аварийного журнала), тогда это может быть что угодно и, возможно, совершенно не связанное с тем, что вы вставили.

Shark 20.03.2018 15:18

@Shark Если я удалю, все заработает. Если я его использую, он вылетает. Очевидно, что этот код вызывает сбой.

Niklas R. 20.03.2018 15:18

Прошлый код ошибки Logcat

Ali 20.03.2018 15:19

@MohammadAli Но у меня нет Logcat с моим физическим устройством. С эмулятором код работает. Сбой только с физическим устройством.

Niklas R. 20.03.2018 15:20

В вашем java файле выберите этот код new Handler().postDelayed(new Runnable() { public void run() { // This method will be executed once the timer is over // Start your app main activity Intent i = new Intent(splashScreen.this, MainActivity.class); startActivity(i); // close this activity finish(); } }, SPLASH_TIME_OUT); и отладьте код

Ali 20.03.2018 15:25

@NiklasRosencrantz пробовали ли вы подключить физическое устройство к компьютеру через USB? Если на вашем физическом устройстве включены параметры разработчика, вы увидите эти журналы в разделе «Logcat» Android Studio.

muminers 20.03.2018 15:25

@muminers Я собираюсь попробовать это сейчас, но это очень большая работа для чего-то, что может быть очень простой проблемой. Я просто пытаюсь добавить заставку.

Niklas R. 20.03.2018 15:26

@NiklasRosencrantz Уверяю вас - это очень просто. Просто включите параметры разработчика (USB-отладка) и подключитесь к ПК. Без logcat мы просто не сможем помочь.

muminers 20.03.2018 15:28

@muminers Теперь у меня две проблемы. (1) Заставка. (2) Среда отладки.

Niklas R. 20.03.2018 15:32

@NiklasRosencrantz: извините, но если вам сложно включить отладку на вашем устройстве, то я просто желаю вам удачи. Более того, даже не пытаться облегчить отладку - это просто неуважительно по отношению ко всем людям, пытающимся вам помочь. Я закончил ... kingoapp.com/root-tutorials/…

muminers 20.03.2018 15:35

@muminers Я могу включить отладку по USB. Это не заставка. Я могу включить отладку по USB, но это ничего не меняет. Я даже не могу запустить Logcat с физического устройства. Не существует «usb_driver», и никто не понимает, означает ли «Android SDK» загрузить что-то еще, кроме Android Studio.

Niklas R. 20.03.2018 15:46
2
13
532
1

Ответы 1

Я использовал тот же метод в своем приложении для создания заставки, и это сработало для меня, попробуйте эти изменения и дайте мне знать.

styles.xml - удалите часть parent = "AppTheme", чтобы она выглядела так

<style name = "SplashTheme">
<item name = "android:windowBackground">@drawable/splash_screen</item>
</style>

splash.xml

<?xml version = "1.0" encoding = "utf-8"?>
<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">

   // use a color here instead like the line below
  <item android:drawable = "@color/white"/>

  <item>
    <bitmap
            android:gravity = "center"
            android:src = "@mipmap/ic_launcher"/>
  </item>

</layer-list>

manifest - используйте "@style/SplashTheme" в качестве темы приложения и удалите строку android:theme = "@style/SplashTheme" из основного действия.

<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
package = "com.koolbusiness">

<uses-permission android:name = "android.permission.INTERNET" />
<uses-permission android:name = "android.permission.SYSTEM_ALERT_WINDOW"/>

<application
  android:name = ".MainApplication"
  android:label = "@string/app_name"
  android:icon = "@mipmap/ic_launcher"
  android:allowBackup = "false"
  android:theme = "@style/SplashTheme">
    <activity
            android:name = ".MainActivity"
            android:label = "@string/app_name"

  android:configChanges = "keyboard|keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  <activity android:name = "com.facebook.react.devsupport.DevSettingsActivity" 
  />
 </application>

</manifest>

Ошибка: не найден ресурс, соответствующий заданному имени (в 'drawable' со значением '@ drawable / white').

Niklas R. 20.03.2018 16:56

на самом деле это белый цвет, и вам нужно будет создать ресурс цвета под названием white или просто использовать существующий, который находится в файле colors.xml для целей тестирования.

Jude Fernandes 20.03.2018 17:37

Решено этим stackoverflow.com/questions/39111248/…

Niklas R. 20.03.2018 20:04

Другие вопросы по теме