8000 MNN TaoAvatar mnn_avatar_0_0_1.apk 开始闪退 · Issue #3631 · alibaba/MNN · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
MNN TaoAvatar mnn_avatar_0_0_1.apk 开始闪退 #3631
Open
@nmww

Description

@nmww

android
版本 : mnn_avatar_0_0_1.apk

设备1: https://www.oppo.com/cn/smartphones/series-k/k12x/specs/
手机信息: Image

设备2:

设备2Image

报错信息分析 adb logcat

日志信息来看,com.taobao.meta.avatar 应用在启动过程中出现了闪退问题。

关键日志分析

  1. 输入事件分发超时

    Input dispatching timed out (bae8044 com.taobao.meta.avatar/com.taobao.meta.avatar.MainActivity (server) is not responding. Waited 5001ms for MotionEvent...
    
    • 分析:这表明应用的 MainActivity 在处理触摸事件时响应过慢,导致系统认为应用无响应(ANR,Application Not Responding)。
    • 可能原因:主线程被阻塞,例如执行了耗时操作(如网络请求、数据库操作等)。
  2. 应用被系统杀死

    Killing 6495:com.taobao.meta.avatar/u0a346 (adj 0): user request after error
    
    • 分析:系统检测到应用无响应后,主动杀死了该应用的进程。
  3. 日志压缩与异常记录

    LogCompress start compress with exception Info: {"app_list":["com.taobao.meta.avatar"],"collect_path":"/data/persist_log/olc/com.oplus.crashbox/temp_6","error_time":1750121219452,"error_type":"anr_start",...
    
    • 分析:系统记录了与应用无响应相关的异常日志,并尝试进行压缩处理。
  4. Activity 停止超时

    Activity pause timeout for ActivityRecord{9d2dcdb u0 com.taobao.meta.avatar/.MainActivity t488 f}}
    
    • 分析:应用的 MainActivity 在被系统请求暂停时,未能在规定时间内完成暂停操作,导致系统认为应用无响应。

可能的原因

  1. 主线程阻塞

    • 应用在启动时可能在主线程中执行了耗时操作,导致界面无法及时响应用户的触摸事件。
    • 例如,可能在 MainActivityonCreate()onResume() 方法中进行了复杂的计算、网络请求或数据库操作。
  2. 资源加载问题

    • 应用可能在启动时尝试加载大量资源(如图片、视频等),导致主线程卡顿。
  3. 系统资源不足

    • 如果设备内存不足,系统可能会频繁回收应用的资源,导致应用启动失败。
  4. 代码中的异常

    • 应用代码中可能存在未捕获的异常,导致应用崩溃。
  5. 权限问题

    • 应用可能需要某些权限(如网络、存储等),但未正确申请或未被授予。

解决方法

1. 检查主线程操作

  • 打开 MainActivity 的代码,检查 onCreate()onResume()onStart() 方法。
  • 确保没有在主线程中执行耗时操作。例如:
    // 错误示例:在主线程中执行耗时操作
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        longRunningOperation(); // 耗时操作
    }
    
    private void longRunningOperation() {
        // 模拟耗时操作
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    • 解决方法:将耗时操作移到后台线程,例如使用 AsyncTaskHandler
      new Thread(new Runnable() {
          @Override
          public void run() {
              longRunningOperation();
          }
      }).start();

2. 优化资源加载

  • 如果应用在启动时加载了大量资源,可以尝试以下优化方法:
    • 延迟加载资源,例如在用户需要时再加载。
    • 使用异步加载方式,避免阻塞主线程。

3. 检查异常

  • MainActivity 的代码中添加异常捕获,打印详细的错误信息:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            setContentView(R.layout.activity_main);
            // 其他初始化代码
        } catch (Exception e) {
            Log.e("MainActivity", "Error in onCreate", e);
        }
    }
  • 这可以帮助你定位代码中的问题。

4. 检查权限

  • 确保应用在 AndroidManifest.xml 中正确声明了所需的权限。例如:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 如果应用需要动态申请权限,确保在运行时正确申请。

5. 使用日志工具分析

  • 使用 Android Studio 的日志工具(Logcat)或 Systrace 工具,分析应用的性能瓶颈。
  • 查看是否有其他日志信息提示具体的错误原因。

6. 检查设备状态

  • 确保设备有足够的内存和存储空间。
  • 如果设备资源不足,可以尝试清理缓存或关闭其他占用资源的应用。

进一步排查

日志

LogCompress start compress with exception Info: {"app_list":["com.taobao.meta.avatar"],"collect_path":"/data/persist_log/olc/com.oplus.crashbox/temp_6","error_time":1750121219452,"error_type":"anr_start",...

Metadata

Metadata

Assignees

No one assigned

    Labels

    app-transformerbug for app of llm and diffusion

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0