Android 打印堆栈日志的几种方法

2023-05-16

在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。

验证的方法相关简单,在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么

public void ThrowException() {
        // 调试打印堆栈而不退出
        Log.d(TAG, Log.getStackTraceString(new Throwable()));
 
        // 创建异常打印堆栈
        Exception e = new Exception("this is a log");
        e.printStackTrace();
 
        // 获取当前线程的堆栈
        for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
            Log.i(TAG, i.toString());
        }
 
        RuntimeException re = new RuntimeException();
        re.fillInStackTrace();
        Log.i(TAG, "stackTrace", re);
 
        // 主动抛出异常调试
        try {
            Log.i(TAG,
                    "--------------------------------NullPointerException-----------1");
            throw new NullPointerException();
        } catch (NullPointerException e1) {
            // TODO: handle exception
            Log.i(TAG, "--------------------------------NullPointerException");
            Log.e(TAG, Log.getStackTraceString(e1));
            // e1.printStackTrace();
        }
        Log.i(TAG,
                "--------------------------------NullPointerException-----------end");
    }


1、Log.d(TAG, Log.getStackTraceString(new Throwable()));

04-09 14:19:51.764 D/dzt_test(26317): java.lang.Throwable
04-09 14:19:51.764 D/dzt_test(26317):     at com.dzt.testapp.MainActivity.ThrowException(MainActivity.java:69)
04-09 14:19:51.764 D/dzt_test(26317):     at com.dzt.testapp.MainActivity.onCreate(MainActivity.java:63)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.Activity.performCreate(Activity.java:5343)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
04-09 14:19:51.764 D/dzt_test(26317):     at android.os.Handler.dispatchMessage(Handler.java:110)
04-09 14:19:51.764 D/dzt_test(26317):     at android.os.Looper.loop(Looper.java:193)
04-09 14:19:51.764 D/dzt_test(26317):     at android.app.ActivityThread.main(ActivityThread.java:5333)
04-09 14:19:51.764 D/dzt_test(26317):     at java.lang.reflect.Method.invokeNative(Native Method)
04-09 14:19:51.764 D/dzt_test(26317):     at java.lang.reflect.Method.invoke(Method.java:515)
04-09 14:19:51.764 D/dzt_test(26317):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
04-09 14:19:51.764 D/dzt_test(26317):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
04-09 14:19:51.764 D/dzt_test(26317):     at dalvik.system.NativeStart.main(Native Method)


2、
Exception e = new Exception("this is a log");
        e.printStackTrace();

04-09 14:19:51.764 W/System.err(26317): java.lang.Exception: this is a log
04-09 14:19:51.765 W/System.err(26317):     at com.dzt.testapp.MainActivity.ThrowException(MainActivity.java:72)
04-09 14:19:51.765 W/System.err(26317):     at com.dzt.testapp.MainActivity.onCreate(MainActivity.java:63)
04-09 14:19:51.765 W/System.err(26317):     at android.app.Activity.performCreate(Activity.java:5343)
04-09 14:19:51.765 W/System.err(26317):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
04-09 14:19:51.765 W/System.err(26317):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
04-09 14:19:51.766 W/System.err(26317):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
04-09 14:19:51.766 W/System.err(26317):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
04-09 14:19:51.766 W/System.err(26317):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
04-09 14:19:51.766 W/System.err(26317):     at android.os.Handler.dispatchMessage(Handler.java:110)
04-09 14:19:51.766 W/System.err(26317):     at android.os.Looper.loop(Looper.java:193)
04-09 14:19:51.766 W/System.err(26317):     at android.app.ActivityThread.main(ActivityThread.java:5333)
04-09 14:19:51.766 W/System.err(26317):     at java.lang.reflect.Method.invokeNative(Native Method)
04-09 14:19:51.766 W/System.err(26317):     at java.lang.reflect.Method.invoke(Method.java:515)
04-09 14:19:51.766 W/System.err(26317):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
04-09 14:19:51.766 W/System.err(26317):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
04-09 14:19:51.767 W/System.err(26317):     at dalvik.system.NativeStart.main(Native Method)


3、
// 获取当前线程的堆栈
        for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
            Log.i(TAG, i.toString());
        }

04-09 14:19:51.767 I/dzt_test(26317): dalvik.system.VMStack.getThreadStackTrace(Native Method)
04-09 14:19:51.768 I/dzt_test(26317): java.lang.Thread.getStackTrace(Thread.java:579)
04-09 14:19:51.768 I/dzt_test(26317): com.dzt.testapp.MainActivity.ThrowException(MainActivity.java:76)
04-09 14:19:51.768 I/dzt_test(26317): com.dzt.testapp.MainActivity.onCreate(MainActivity.java:63)
04-09 14:19:51.768 I/dzt_test(26317): android.app.Activity.performCreate(Activity.java:5343)
04-09 14:19:51.769 I/dzt_test(26317): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
04-09 14:19:51.769 I/dzt_test(26317): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
04-09 14:19:51.769 I/dzt_test(26317): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
04-09 14:19:51.769 I/dzt_test(26317): android.app.ActivityThread.access$800(ActivityThread.java:151)
04-09 14:19:51.770 I/dzt_test(26317): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
04-09 14:19:51.770 I/dzt_test(26317): android.os.Handler.dispatchMessage(Handler.java:110)
04-09 14:19:51.770 I/dzt_test(26317): android.os.Looper.loop(Looper.java:193)
04-09 14:19:51.770 I/dzt_test(26317): android.app.ActivityThread.main(ActivityThread.java:5333)
04-09 14:19:51.771 I/dzt_test(26317): java.lang.reflect.Method.invokeNative(Native Method)
04-09 14:19:51.771 I/dzt_test(26317): java.lang.reflect.Method.invoke(Method.java:515)
04-09 14:19:51.771 I/dzt_test(26317): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
04-09 14:19:51.771 I/dzt_test(26317): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
04-09 14:19:51.771 I/dzt_test(26317): dalvik.system.NativeStart.main(Native Method)


4、
RuntimeException re = new RuntimeException();
        re.fillInStackTrace();
        Log.i(TAG, "stackTrace", re);

04-09 14:19:51.773 I/dzt_test(26317): stackTrace
04-09 14:19:51.773 I/dzt_test(26317): java.lang.RuntimeException
04-09 14:19:51.773 I/dzt_test(26317):     at com.dzt.testapp.MainActivity.ThrowException(MainActivity.java:81)
04-09 14:19:51.773 I/dzt_test(26317):     at com.dzt.testapp.MainActivity.onCreate(MainActivity.java:63)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.Activity.performCreate(Activity.java:5343)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
04-09 14:19:51.773 I/dzt_test(26317):     at android.os.Handler.dispatchMessage(Handler.java:110)
04-09 14:19:51.773 I/dzt_test(26317):     at android.os.Looper.loop(Looper.java:193)
04-09 14:19:51.773 I/dzt_test(26317):     at android.app.ActivityThread.main(ActivityThread.java:5333)
04-09 14:19:51.773 I/dzt_test(26317):     at java.lang.reflect.Method.invokeNative(Native Method)
04-09 14:19:51.773 I/dzt_test(26317):     at java.lang.reflect.Method.invoke(Method.java:515)
04-09 14:19:51.773 I/dzt_test(26317):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
04-09 14:19:51.773 I/dzt_test(26317):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
04-09 14:19:51.773 I/dzt_test(26317):     at dalvik.system.NativeStart.main(Native Method)


5、
// 主动抛出异常调试
        try {
            Log.i(TAG,
                    "--------------------------------NullPointerException-----------1");
            throw new NullPointerException();
        } catch (NullPointerException e1) {
            // TODO: handle exception
            Log.i(TAG, "--------------------------------NullPointerException");
            Log.e(TAG, Log.getStackTraceString(e1));
            // e1.printStackTrace();
        }
        Log.i(TAG,
                "--------------------------------NullPointerException-----------end");

04-09 14:19:51.773 I/dzt_test(26317): --------------------------------NullPointerException-----------1
04-09 14:19:51.773 I/dzt_test(26317): --------------------------------NullPointerException
04-09 14:19:51.774 E/dzt_test(26317): java.lang.NullPointerException
04-09 14:19:51.774 E/dzt_test(26317):     at com.dzt.testapp.MainActivity.ThrowException(MainActivity.java:88)
04-09 14:19:51.774 E/dzt_test(26317):     at com.dzt.testapp.MainActivity.onCreate(MainActivity.java:63)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.Activity.performCreate(Activity.java:5343)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
04-09 14:19:51.774 E/dzt_test(26317):     at android.os.Handler.dispatchMessage(Handler.java:110)
04-09 14:19:51.774 E/dzt_test(26317):     at android.os.Looper.loop(Looper.java:193)
04-09 14:19:51.774 E/dzt_test(26317):     at android.app.ActivityThread.main(ActivityThread.java:5333)
04-09 14:19:51.774 E/dzt_test(26317):     at java.lang.reflect.Method.invokeNative(Native Method)
04-09 14:19:51.774 E/dzt_test(26317):     at java.lang.reflect.Method.invoke(Method.java:515)
04-09 14:19:51.774 E/dzt_test(26317):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
04-09 14:19:51.774 E/dzt_test(26317):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
04-09 14:19:51.774 E/dzt_test(26317):     at dalvik.system.NativeStart.main(Native Method)
04-09 14:19:51.775 I/dzt_test(26317): --------------------------------NullPointerException-----------end


虽然以上方法不尽一样,但打印出来的堆栈是一样的。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 打印堆栈日志的几种方法 的相关文章

  • Android - 保存动态更改布局的状态

    我有一个布局 用户可以在其中添加按钮并将其放置在他们想要的位置 我想允许用户保存他们的布局 以便下次打开应用程序时加载它 有谁知道我是否可以将文件保存到 SD 卡上 或者 我可以使用某种layout getXml 方法并将其放入我的应用程序
  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 如何将安卓手机从睡眠状态唤醒?

    如何以编程方式将 Android 手机从睡眠状态唤醒 挂起至内存 我不想获取任何唤醒锁 这意味着手机在禁用 CPU 的情况下进入 真正的 睡眠状态 我想我可以使用某种RTC 实时时钟 机制 有人有例子吗 Thanks 为了让Activity
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • Android - 将 ImageView 保存到具有全分辨率图像的文件

    我将图像放入 ImageView 中 并实现了多点触控来调整 ImageView 中的图像大小和移动图像 现在我需要将调整大小的图像保存到图像文件中 我已经尝试过 getDrawingCache 但该图像具有 ImageView 的大小 我
  • SharedFlow 和 StateFlow 的主要区别

    两者有什么区别共享流 and 状态流 以及如何使用这些MVI建筑学 使用简单更好吗Flow或者这些作为状态和事件 Flow 是冷的 意味着它仅在收集数据时才发出数据 另外Flow不能保存数据 可以把它看成是水在里面流动的管道 Flow中的数
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项

随机推荐

  • 将本地项目上传到远程Git服务器

    1 先进入项目文件夹 通过命令 git init 把这个目录变成git可以管理的仓库 git init 2 把文件添加到版本库中 xff0c 使用命令git add 添加到暂存区里面去 xff0c 小数点 34 34 意为添加文件夹下的所有
  • 解决Manifest merger failed : Attribute application@appComponentFactory

    在将butterknife升级到10 0 0的时候遇到问题 xff0c 编译无法通过 Manifest merger failed Attribute application 64 appComponentFactory value 61
  • bindService不能触发onServiceConnected方法的原因

    在android项目中用到AIDL xff0c bindService service connection BIND AUTO CREATE 之后一直不调用 connection中的onServiceConnected方法 可能原因1 1
  • Android应用被浅杀和深杀

    onTaskRemoved 方法在当用户移除应用的一个Task栈时被调用 也就是当用户在最近任务界面把该应用的一个task划掉时 xff0c 或者在最近任务界面进行清理时 这两种情况下onTaskRemoved 都会被调用 xff0c 但在
  • java.lang.OutOfMemoryError: Could not allocate JNI Env

    最近有一些OOM的错误上报 java lang OutOfMemoryError Could not allocate JNI Env 极少量的 java lang OutOfMemoryError pthread create 1040K
  • RecycleView4种定位滚动方式演示

    概述 相信大家在项目中使用RecyclerView时 xff0c 经常会遇到这样的需求 xff1a 将RecyclerView滑动到指定位置 xff0c 或者检索RecyclerView的某一项 xff08 各个项的高度不确定 xff09
  • Java/Android中的引用类型及WeakReference应用实践

    一 背景 一般意义上而言 xff0c Java Android中的引用类型包括强引用 软引用 弱引用 虚引用 不同的引用类型具有各自适用的应用场景 xff0c 并与JVM的GC直接相关 作为Java Android中的引用类型之一 xff0
  • Android 网络切换 发送多次广播问题

    最近发现做项目监听网络切换广播 xff0c 根据网络条件切换一些设置 测试发现每次3G WIFI 或者WIFI到3G xff0c 网络切换的广播都会发出多次 比如3G gt WIFI 会发送三个广播 1 连接wifi 2 关闭手机网络 3
  • 在draw.io中创建容器形状

    draw io中的任何形状都可以变成容器 包含其他多个形状的形状 在绘图区域上移动容器时 xff0c 位于其中的形状将随容器移动 容器可用于指示流程图中的步骤或子过程组 xff0c 数据集合 xff0c 树形图或任何其他具有层次结构的图中的
  • H264基础及RTP分包解包

    一 H 264基础概念 SODB 数据比特串 xff0d xff0d xff1e 最原始的编码数据 RBSP 原始字节序列载荷 xff0d xff0d xff1e 在SODB的后面填加了结尾比特 xff08 RBSP trailing bi
  • Mac App Store中的开发预览版软件更新如何关闭(如Safari 12.0 seed)

    这段时间莫名其妙App Store中出现Safari 12 0 seed开发预览版更新 xff0c 这个是针对开发者提供的 xff0c 作为普通用户 xff0c 不希望接触到这种bug不断的产品 xff0c 那么 xff0c 该如何关闭呢
  • 在VMware-player中安装 VMware Tools的步骤

    1 用root身份登录ubuntu后 xff0c player 管理 安装VMware Tools 3 把上述文件复制到 home 用户为名的文件夹中 例如本人把上述文件复制到 home tgl tglFile中了 4 xff09 首先我进
  • ubuntu18.04编译问题

    1 没有安装curl fantasy 64 fantasy All Series my dev android AOSP prebuilts sdk tools jack admin start server prebuilts sdk t
  • VMware 扩展Ubuntu虚拟机的磁盘空间

    1 准备工作 使用 df h 指令查看一下磁盘空间的使用情况 可以看到 xff0c 现在挂载的磁盘空间为40G xff0c 用了16G xff0c 还剩22G 下面开始扩展磁盘空间 2 编辑虚拟机设置 打开虚拟机 xff0c 找到待扩展的虚
  • 解决Android Studio 无法通过gradle 下载https://dl.google.com/android/repository/addons_list-3.xml 解决办法

    安卓gradle的时候 xff0c 会弹出来这样报错 Task prepareKotlinBuildScriptModel UP TO DATE IOException https dl google com android reposit
  • libGL error: MESA-LOADER: failed to open vmwgfx (search paths /usr/lib/x86_64-linux-gnu/dri)

    使用emulator use system libs 命令 Using the libstdc 43 43 so 6 that is available in your system instead of the one bundled w
  • Java内部类详解

    一 内部类基础 在Java中 xff0c 可以将一个类定义在另一个类里面或者一个方法里面 xff0c 这样的类称为内部类 广泛意义上的内部类一般来说包括这四种 xff1a 成员内部类 局部内部类 匿名内部类和静态内部类 下面就先来了解一下这
  • 使用Ubuntu18.04编译android8.1

    使用虚拟机中的Ubuntu18 04编译android8 1 1 软硬件要求 1 1 硬件 16G的内存 xff1b 200G的存储盘 1 2 软件 Ubuntu18 04 这样的软硬件要求并非必须 xff0c 但是经过测试这样的配置刚好能
  • Android 8 细分版本 分支 以及支持的设备

    Android 8 细分版本 分支 以及支持的设备 细分版本分支版本支持的设备OPM8 181005 003android 8 1 0 r48OreoPixel COPM7 181005 003android 8 1 0 r47OreoNe
  • Android 打印堆栈日志的几种方法

    在Android调试过程中经常会出现程序出现的结果不是我们预期的结果 xff0c 那就需要加Log打印调试 xff0c 看调用过程是否正确 xff0c 此时就需要打印程序的调用栈 xff0c 特别是Android代码相当庞大 xff0c 打