非Root手机导出libart.so等系统库

命令行导出Android库文件

使用命令行导出

adb pull /apex/com.android.art/lib64/libart-compiler.so

会导出到 C:\Users\用户名

MB5732A 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] "main" prio=6 tid=1 Runnable MB5732A 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] | group="" sCount=1 ucsCount=0 flags=9 obj=0x735bd478 self=0xb400007aa3e947b0 MB5732A 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] | sysTid=1459 nice=-2 cgrp=foreground sched=0/0 handle=0x7c02220118 MB5732A 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] | state=R schedstat=( 856803667224 2471977389241 1659020 ) utm=28376 stm=57303 core=7 HZ=100 MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] | stack=0x7fd918d000-0x7fd918f000 stackSize=8188KB MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] | held mutexes= "abort lock" "mutator lock"(shared held) MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] native: #00 pc 004ca2ec /apex/com.android.art/lib64/libart.so (art::DumpNativeStack+108) (BuildId: 80d2ab18f9d259d8e546c1e6bae752b1) MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] native: #01 pc 004342b4 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack const+436) (BuildId: 80d2ab18f9d259d8e546c1e6bae752b1) MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] native: #02 pc 00433fd0 /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run+120) (BuildId: 80d2ab18f9d259d8e546c1e6bae752b1) MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] native: #03 pc 00487cec /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint+2612) (BuildId: 80d2ab18f9d259d8e546c1e6bae752b1) MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] native: #04 pc 004c99e8 /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump+232) (BuildId: 80d2ab18f9d259d8e546c1e6bae752b1) MB5732B 11-08 16:10:31.195 1459 1459 F system_server: runtime.cc:709] native: #05 pc 008a4b9c /apex/c
最新发布
11-12
Cmd line: com.ddu.astrology Build fingerprint: 'UMIDIGI/G100_Pro/G100_Pro:15/AP3A.240905.015.A2/1753929606:user/release-keys' ABI: 'arm64' Build type: optimized Debug Store: 1,0,85528573:: suspend all histogram: Sum: 19.513ms 99% C.I. 0.007ms-15.743ms Avg: 1.300ms Max: 16.752ms DALVIK THREADS (41): "main" prio=5 tid=1 Native | group="main" sCount=1 ucsCount=0 flags=1 obj=0x71f899d8 self=0xb4000073368847b0 | sysTid=26886 nice=-10 cgrp=top-app sched=0/0 handle=0x752ee25d20 | state=S schedstat=( 1463771336 633009323 2711 ) utm=89 stm=57 core=1 HZ=100 | stack=0x7fd55b9000-0x7fd55bb000 stackSize=8188KB | held mutexes= native: #00 pc 00086c2c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) (BuildId: cbe22ca05e685f937423c07537887fb8) native: #01 pc 0022a220 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks+136) (BuildId: 629e0ffca501d809c29dbbeef2f512d3) native: #02 pc 007505f0 /apex/com.android.art/lib64/libart.so (art::JNI<false>::CallObjectMethodV+1216) (BuildId: 629e0ffca501d809c29dbbeef2f512d3) native: #03 pc 000d72c8 /system/lib64/libandroid_runtime.so (_JNIEnv::CallObjectMethod+120) (BuildId: 446475c21ccba32dedd924c1fc6be3cf) native: #04 pc 0015b270 /system/lib64/libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync+64) (BuildId: 446475c21ccba32dedd924c1fc6be3cf) native: #05 pc 000de534 /system/lib64/libgui.so (android::DisplayEventDispatcher::handleEvent+580) (BuildId: 8f73ca0bad2e5f16091c1287a6f1294e) native: #06 pc 00013598 /system/lib64/libutils.so (android::Looper::pollOnce+1528) (BuildId: 9a2d718d33b2e2507f00741c21ca05c4) native: #07 pc 0018e0bc /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce+44) (BuildId: 446475c21ccba32dedd924c1fc6be3cf) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:346) at android.os.Looper.loopOnce(Looper.java:189) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8758) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:962) DumpLatencyMs: 85.9148 "ReferenceQueueDaemon" daemon prio=5 tid=5 Waiting | group="system" sCount=1 ucsCount=0 flags=1 obj=0x140004f8 self=0xb40000733688b6f0 | sysTid=26891 nice=4 cgrp=top-app sched=0/0 handle=0x7232346730 | state=S schedstat=( 7912770 1146924 9 ) utm=0 stm=0 core=5 HZ=100 | stack=0x7232243000-0x7232245000 stackSize=1037KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x0b73e308> (a java.lang.Class<java.lang.ref.ReferenceQueue>) at java.lang.Object.wait(Object.java:405) at java.lang.Object.wait(Object.java:543) at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:251) - locked <0x0b73e308> (a java.lang.Class<java.lang.ref.ReferenceQueue>) at java.lang.Daemons$Daemon.run(Daemons.java:131) at java.lang.Thread.run(Thread.java:1012) DumpLatencyMs: 143.96 "FinalizerWatchdogDaemon" daemon prio=5 tid=6 Sleeping | group="system" sCount=1 ucsCount=0 flags=1 obj=0x14000618 self=0xb400007336886380 | sysTid=26893 nice=4 cgrp=top-app sched=0/0 handle=0x7230126730 | state=S schedstat=( 1233927 5179845 12 ) utm=0 stm=0 core=7 HZ=100 | stack=0x7230023000-0x7230025000 stackSize=1037KB | held mutexes= at java.lang.Thread.sleep(Native method) - sleeping on <0x0fb44aa1> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:450) - locked <0x0fb44aa1> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:355) at java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos(Daemons.java:517) at java.lang.Daemons$FinalizerWatchdogDaemon.waitForProgress(Daemons.java:580) at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:448) at java.lang.Daemons$Daemon.run(Daemons.java:131) at java.lang.Thread.run(Thread.java:1012) DumpLatencyMs: 148.609 "FinalizerDaemon" daemon prio=5 tid=8 Waiting | group="system" sCount=1 ucsCount=0 flags=1 obj=0x14000588 self=0xb40000733688d2c0 | sysTid=26892 nice=4 cgrp=top-app sched=0/0 handle=0x7232236730 | state=S schedstat=( 2246770 1108615 10 ) utm=0 stm=0 core=7 HZ=100 | stack=0x7232133000-0x7232135000 stackSize=1037KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x080704c6> (a java.lang.Object) at java.lang.Object.wait(Object.java:405) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:207) - locked <0x080704c6> (a java.lang.Object) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:228) at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:331) at java.lang.Daemons$Daemon.run(Daemons.java:131) at java.lang.Thread.run(Thread.java:1012) DumpLatencyMs: 155.683 "GmsDynamite" prio=5 tid=19 Waiting | group="dynamiteLoader" sCount=1 ucsCount=0 flags=1 obj=0x14055998 self=0xb4000073368c30f0 | sysTid=26905 nice=19 cgrp=top-app sched=0/0 handle=0x71cec3a730 | state=S schedstat=( 359462 524308 1 ) utm=0 stm=0 core=4 HZ=100 | stack=0x71ceb37000-0x71ceb39000 stackSize=1037KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x05958c87> (a com.google.android.gms.dynamite.zza) at java.lang.Object.wait(Object.java:405) at java.lang.Object.wait(Object.java:543) at com.google.android.gms.dynamite.zza.run(unavailable:6) - locked <0x05958c87> (a com.google.android.gms.dynamite.zza) DumpLatencyMs: 173.528 "Measurement Worker" prio=5 tid=34 TimedWaiting | group="main" sCount=1 ucsCount=0 flags=1 obj=0x140faa58 self=0xb4000073368e7900 | sysTid=26925 nice=10 cgrp=top-app sched=0/0 handle=0x71c01e6730 | state=S schedstat=( 258300527 766020993 1179 ) utm=20 stm=4 core=7 HZ=100 | stack=0x71c00e3000-0x71c00e5000 stackSize=1037KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x08e827b4> (a java.lang.Object) at java.lang.Object.wait(Object.java:405) at m7.px.run(:com.google.android.gms.dynamite_measurementdynamite@252834035@25.28.34 (260400-0):67) - locked <0x08e827b4> (a java.lang.Object) DumpLatencyMs: 187.593
08-02
从错误日志来看,**崩溃确实发生在 `libart.so`(Android Runtime 的核心库)中**,但 **根本原因可能并 `libart.so` 自身的问题**,而是由 **应用层或系统环境触发的异常** 导致 ART 执行失败。以下是详细分析: --- ### **1. `libart.so` 的角色** - **ART(Android Runtime)** 是 Android 的虚拟机,负责执行 Java/Kotlin 字节码、管理内存和线程等。 - `libart.so` 是 ART 的核心动态库,当应用出现 **未处理的异常、内存错误或 JNI 调用违规** 时,ART 可能会在内部抛出 SIGSEGV。 --- ### **2. 为什么崩溃会出现在 `libart.so`?** #### **(1) 应用层代码触发了 ART 的保护机制** - **Java 代码的未捕获异常**(如 `NullPointerException`)可能被 ART 转换为底层信号(SIGSEGV)。 - **JNI 调用违规**(如错误使用 `jobject` 引用)导致 ART 的引用管理失败。 #### **(2) 系统环境问题** - **内存不足**:ART 无法分配所需内存(如加载 Dex 或类时)。 - **HarmonyOS 兼容性差异**:某些 ART 行为可能与标准 Android 不同。 #### **(3) 日志中的关键线索** - 你的日志显示崩溃发生在 **应用初始化阶段**(`LoadedApk.makeApplication`),说明可能是: - 应用主类(`Application` 子类)的构造函数或 `onCreate()` 抛出了异常。 - 动态加载的 Dex 或资源(如 `assets`)损坏。 --- ### **3. 如何判断是否是 `libart.so` 的自身缺陷?** - **复现范围**: - 如果 **仅此应用崩溃**,其他应用正常 → 问题在应用层。 - 如果 **多个应用随机崩溃** → 可能是系统或 ART 缺陷(需检查系统更新)。 - **崩溃堆栈**: - 若堆栈指向 ART 内部函数(如 `art::ClassLinker::LoadClass`),可能是 **类加载失败**(应用 Dex 问题)。 - 若指向 `art::JavaVMExt::JNI` → **JNI 调用错误**(如 Native 代码传入了无效参数)。 --- ### **4. 解决方案** #### **(1) 应用层修复** - **检查 Java 代码**:确保主类(`Application`)和无参构造函数无异常。 - **验证 JNI 代码**: ```c // 示例:正确管理 GlobalRef jobject globalRef = env->NewGlobalRef(obj); // ...使用后必须释放 env->DeleteGlobalRef(globalRef); ``` - **测试纯净环境**:清除应用数据或卸载重装。 #### **(2) 系统/ART 层面** - **更新系统**:修复可能的 ART 缺陷(尤其是 HarmonyOS 的补丁版本)。 - **降级应用目标 SDK**:某些 ART 版本对高 SDK 兼容性较差。 #### **(3) 调试工具** - **AddressSanitizer (ASan)**:检测 Native 内存错误。 - **ART 日志**:启用详细日志定位类加载问题: ```bash adb shell setprop dalvik.vm.extra-opts "-Xlog:verifier,classloader" adb logcat | grep art ``` --- ### **5. 典型场景示例** - **案例 1**:应用在 `onCreate()` 中访问了未初始化的静态变量 → ART 转换为 SIGSEGV。 - **案例 2**:JNI 层未正确处理 `jstring` 转换 → ART 引用表溢出。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昆仑双开分身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值