You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android极简启动器开机启动RealDash异常:设备持续重启排查

问题描述

我想开发一款无图形界面的Android极简启动器,实现手机开机后立即启动RealDash应用。但将其设置为默认启动器后,设备持续重启,RealDash并未启动。以下是我的代码及Logcat日志,请问是否需要指定应用完整路径,或是我遗漏了其他配置?


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        tools:targetApi="31">
        <activity android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <receiver android:name=".BootReceiver"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

MainActivity.kt

package com.example.customlauncher

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Launch RealDash app
        val launchIntent = packageManager.getLaunchIntentForPackage("com.napko.RealDash")
        if (launchIntent != null) {
            startActivity(launchIntent)
        }
        finish() // finish the launcher activity
    }
}

Logcat日志

---------------------------- PROCESS STARTED (22037) for package com.example.customlauncher ----------------------------
2024-02-25 22:34:59.522 22037-22037 .customlauncher         com.example.customlauncher           W  Redefining intrinsic method java.lang.Thread java.lang.Thread.currentThread(). This may cause the unexpected use of the original definition of java.lang.Thread java.lang.Thread.currentThread()in methods that have already been compiled.
2024-02-25 22:34:59.522 22037-22037 .customlauncher         com.example.customlauncher           W  Redefining intrinsic method boolean java.lang.Thread.interrupted(). This may cause the unexpected use of the original definition of boolean java.lang.Thread.interrupted()in methods that have already been compiled.
2024-02-25 22:34:59.525 22037-22037 Compatibil...geReporter com.example.customlauncher           D  Compat change id reported: 171979766; UID 10197; state: ENABLED
2024-02-25 22:34:59.525 22037-22037 Compatibil...geReporter com.example.customlauncher           D  Compat change id reported: 242716250; UID 10197; state: ENABLED
2024-02-25 22:34:59.566 22037-22037 ziparchive              com.example.customlauncher           W  Unable to open '/data/data/com.example.customlauncher/code_cache/.overlay/base.apk/classes3.dm': No such file or directory
2024-02-25 22:34:59.566 22037-22037 ziparchive              com.example.customlauncher           W  Unable to open '/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/base.dm': No such file or directory
2024-02-25 22:34:59.566 22037-22037 ziparchive              com.example.customlauncher           W  Unable to open '/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/base.dm': No such file or directory
2024-02-25 22:34:59.615 22037-22037 nativeloader            com.example.customlauncher           D  Configuring clns-6 for other apk /data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/base.apk. target_sdk_version=34, uses_libraries=, library_path=/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/lib/x86_64, permitted_path=/data:/mnt/expand:/data/user/0/com.example.customlauncher
2024-02-25 22:34:59.651 22037-22037 GraphicsEnvironment     com.example.customlauncher           V  Currently set values for:
2024-02-25 22:34:59.651 22037-22037 GraphicsEnvironment     com.example.customlauncher           V    angle_gl_driver_selection_pkgs=[]
2024-02-25 22:34:59.655 22037-22037 GraphicsEnvironment     com.example.customlauncher           V    angle_gl_driver_selection_values=[]
2024-02-25 22:34:59.668 22037-22037 GraphicsEnvironment     com.example.customlauncher           V  ANGLE GameManagerService for com.example.customlauncher: false
2024-02-25 22:34:59.668 22037-22037 GraphicsEnvironment     com.example.customlauncher           V  com.example.customlauncher is not listed in per-application setting
2024-02-25 22:34:59.668 22037-22037 GraphicsEnvironment     com.example.customlauncher           V  Neither updatable production driver nor prerelease driver is supported.
2024-02-25 22:34:59.883 22037-22312 libEGL                  com.example.customlauncher           D  loaded /vendor/lib64/egl/libEGL_emulation.so
2024-02-25 22:34:59.908 22037-22312 libEGL                  com.example.customlauncher           D  loaded /vendor/lib64/egl/libGLESv1_CM_emulation.so
2024-02-25 22:34:59.909 22037-22312 libEGL                  com.example.customlauncher           D  loaded /vendor/lib64/egl/libGLESv2_emulation.so
2024-02-25 22:35:02.335 22037-22037 AndroidRuntime          com.example.customlauncher           D  Shutting down VM
2024-02-25 22:35:02.350 22037-22037 AndroidRuntime          com.example.customlauncher           E  FATAL EXCEPTION: main
                                                                                                    Process: com.example.customlauncher, PID: 22037
                                                                                                    java.lang.RuntimeException: Unable to instantiate receiver com.example.customlauncher.BootReceiver: java.lang.ClassNotFoundException: Didn't find class "com.example.customlauncher.BootReceiver" on path: DexPathList[[dex file "/data/data/com.example.customlauncher/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/base.apk"],nativeLibraryDirectories=[/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/lib/x86_64, /system/lib64, /system_ext/lib64]]
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4435)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2256)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:205)
                                                                                                        at android.os.Looper.loop(Looper.java:294)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8177)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
                                                                                                    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.customlauncher.BootReceiver" on path: DexPathList[[dex file "/data/data/com.example.customlauncher/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/base.apk"],nativeLibraryDirectories=[/data/app/~~mrf1UK2bf5ChJHWL4Pfr7Q==/com.example.customlauncher-4HwPQ03pDZ8cgYftNU_W6g==/lib/x86_64, /system/lib64, /system_ext/lib64]]
                                                                                                        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
                                                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                                                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                                                        at android.app.AppComponentFactory.instantiateReceiver(AppComponentFactory.java:110)
                                                                                                        at androidx.core.app.CoreComponentFactory.instantiateReceiver(CoreComponentFactory.java:59)
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4428)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0) 
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2256) 
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                        at android.os.Looper.loopOnce(Looper.java:205) 
                                                                                                        at android.os.Looper.loop(Looper.java:294) 
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8177) 
                                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) 
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 
2024-02-25 22:35:02.495 22037-22037 Process                 com.example.customlauncher           I  Sending signal. PID: 22037 SIG: 9
---------------------------- PROCESS ENDED (22037) for package com.example.customlauncher ----------------------------

问题分析与解决方法
  1. 核心崩溃原因:BootReceiver类缺失
    Logcat明确报错ClassNotFoundException: com.example.customlauncher.BootReceiver,你在Manifest中注册了该广播接收器,但未创建对应的BootReceiver.kt文件,导致应用启动即崩溃,进而触发系统重复重启启动器。

    • 解决:直接删除Manifest中<receiver>相关配置即可——作为默认启动器,系统会自动在开机后启动它的MainActivity,完全不需要监听BOOT_COMPLETED广播。
  2. 循环重启问题修复
    当你的启动器作为默认HOME应用时,若MainActivity直接finish但未成功启动目标应用,系统会判定启动器崩溃,反复尝试重启它,形成循环。

    • 验证目标应用包名:通过adb shell pm list packages | grep RealDash命令确认RealDash的真实包名是否为com.napko.RealDash,避免包名错误导致启动失败。
    • 添加错误兜底逻辑:如果获取不到RealDash的启动Intent,不要直接finish,显示一个简单的错误提示界面,阻止系统重复启动:
      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          val launchIntent = packageManager.getLaunchIntentForPackage("com.napko.RealDash")
          if (launchIntent != null) {
              startActivity(launchIntent)
              finish()
          } else {
              // 显示错误提示,避免系统循环重启
              setContentView(android.widget.TextView(this).apply {
                  text = "RealDash未安装或包名错误"
                  textSize = 20f
                  gravity = android.view.Gravity.CENTER
              })
          }
      }
      
  3. 无图形界面优化
    若要实现完全无界面启动,可给MainActivity设置透明主题,避免启动时闪屏:
    在Manifest的<activity>标签中添加:

    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    
  4. 冗余配置清理
    删除Manifest中的RECEIVE_BOOT_COMPLETED权限,因为默认启动器无需该权限即可被系统自动启动。


内容的提问来源于stack exchange,提问作者Juhász Tamás

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:43:10