GithubHelp home page GithubHelp logo

alibaba / andfix Goto Github PK

View Code? Open in Web Editor NEW
7.0K 450.0 1.6K 15.52 MB

AndFix is a library that offer hot-fix for Android App.

License: Other

Makefile 0.67% C++ 61.97% C 10.49% Java 26.87%
android hotfix

andfix's People

Contributors

cmzy avatar drakeet avatar lirenlong avatar supern avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

andfix's Issues

升级构建

用的老Gradle 2.1

> Failed to apply plugin [id 'com.android.library']
   > Gradle version 2.1 is required. Current version is 2.6. If using the gradle wrapper, try editing the distributionUrl in /Users/jerry/Croods/AndroidStudioProjects/AndFix/gradle/wrapper/gradle-wrapper.properties to gradle-2.1-all.zip

用的是com.android.tools.build:gradle:0.13.0

新的是 com.android.tools.build:gradle:1.3.0

上面的问题导致不能直接用Android Studio打开

把A方法中的getI()方法copy到Fix中生成apatch,MainActivity中调用new Fix().getI();应用patch崩溃

E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: com.euler.andfix, PID: 6964
E AndroidRuntime: java.lang.NoSuchMethodError: No virtual method getI()I in class Lcom/euler/test/Fix_CF; or its super classes (declaration of 'com.euler.test.Fix_CF' appears in /data/user/0/com.euler.andfix/files/apatch/out.apatch)
E AndroidRuntime: at com.euler.andfix.MainActivity_CF.onCreate(MainActivity.java:45)
E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6237)
E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
E AndroidRuntime: at android.app.ActivityThread.-wrap11(ActivityThread.java)
E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
E AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I Process : Sending signal. PID: 6964 SIG: 9
I ActivityManager: Process com.euler.andfix (pid 6964) has died

关于sample的疑惑

我这边跑demo的时候打出来如下日志(增加patch包后):
10-09 06:21:39.693 457-457/? D/euler: inited.
10-09 06:21:39.697 457-457/? D/euler: apatch loaded.
10-09 06:21:39.697 457-457/? D/euler: apatch:/storage/emulated/0/out.apatch added.
10-09 06:21:39.699 457-457/? I/euler: fix succes
10-09 06:21:39.699 457-457/? E/euler: b
10-09 06:21:39.699 457-457/? E/euler: s1
10-09 06:21:39.699 457-457/? E/euler: 10==a
10-09 06:21:39.699 457-457/? I/euler: fix success
10-09 06:21:39.699 457-457/? I/euler: a
10-09 06:21:39.699 457-457/? E/euler: 0
10-09 06:21:39.699 457-457/? E/euler: i=10

i变量并没有更改为11,这是怎么回事?静态变量更改无效么?

sd卡加入 patch后 mPatchManager.init("1.0")后出现这个问题

java.util.zip.ZipException: File too short to be a zip file: 0
at java.util.zip.ZipFile.readCentralDir(ZipFile.java:355)
at java.util.zip.ZipFile.(ZipFile.java:151)
at java.util.zip.ZipFile.(ZipFile.java:115)
at java.util.jar.JarFile.(JarFile.java:166)
at java.util.jar.JarFile.(JarFile.java:152)
at com.alipay.euler.andfix.patch.Patch.init(Patch.java:75)
at com.alipay.euler.andfix.patch.Patch.(Patch.java:67)
at com.alipay.euler.andfix.patch.PatchManager.addPatch(PatchManager.java:125)
at com.alipay.euler.andfix.patch.PatchManager.initPatchs(PatchManager.java:111)
at com.alipay.euler.andfix.patch.PatchManager.init(PatchManager.java:104)

apkpatch-1.0.3 无法生成补丁

java.lang.NullPointerException
at com.euler.patch.build.PatchBuilder.(PatchBuilder.java:5)
at com.euler.patch.Build.build(Build.java:74)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
at com.euler.patch.Main.main(Main.java:97)
java.lang.NullPointerException
at com.euler.patch.build.PatchBuilder.writeMeta(PatchBuilder.java:33)
at com.euler.patch.Build.build(Build.java:76)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
at com.euler.patch.Main.main(Main.java:97)
java.lang.NullPointerException
at com.euler.patch.build.PatchBuilder.sealPatch(PatchBuilder.java:43)
at com.euler.patch.Build.build(Build.java:77)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
at com.euler.patch.Main.main(Main.java:97)

只能打一次补丁吗?

版本1 版本2 版本3
版本1可以打版本2的补丁包,打完之后无论是打版本2升级到版本3的补丁包还是版本1升级到版本3的补丁包都不行.还是版本2的内容了.

1------2(可以)
1-------3(可以)
1------2(可以)----3(不行)

java.util.zip.ZipException: File too short to be a zip file: 0

the sample reported an error:
java.util.zip.ZipException: File too short to be a zip file: 0
E at java.util.zip.ZipFile.readCentralDir(ZipFile.java:355)
E at java.util.zip.ZipFile.(ZipFile.java:151)
E at java.util.zip.ZipFile.(ZipFile.java:115)
E at java.util.jar.JarFile.(JarFile.java:166)
E at java.util.jar.JarFile.(JarFile.java:152)
E at c

om.alipay.euler.andfix.patch.Patch.init(Patch.java:75)
E at com.alipay.euler.andfix.patch.Patch.(Patch.java:67)
E at com.alipay.euler.andfix.patch.PatchManager.addPatch(PatchManager.java:126)
E at com.alipay.euler.andfix.patch.PatchManager.initPatchs(PatchManager.java:112)
E at com.alipay.euler.andfix.patch.PatchManager.init(PatchManager.java:105)
E at com.euler.andfix.MainApplication.onCreate(MainApplication.java:48)
E at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
E at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4394)
E at android.app.ActivityThread.access$1500(ActivityThread.java:141)
E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1273)
E at android.os.Handler.dispatchMessage(Handler.java:102)
E at android.os.Looper.loop(Looper.java:136)
E at android.app.ActivityThread.main(ActivityThread.java:5072)
E at java.lang.reflect.Method.invokeNative(Native Method)
E at java.lang.reflect.Method.invoke(Method.java:515)
E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
E at dalvik.system.NativeStart.main(Native Method)

The generated out.apatch looks like this:
SnowMacBookPro:AndFix snow$ ll -R out
total 8
drwxr-xr-x 6 snow staff 204 10 8 19:14 META-INF
-rwxr-xr-x@ 1 snow staff 1396 10 8 19:03 classes.dex

out/META-INF:
total 32
-rwxr-xr-x@ 1 snow staff 1200 10 8 19:03 CERT.RSA
-rwxr-xr-x@ 1 snow staff 169 10 8 19:03 CERT.SF
-rwxr-xr-x@ 1 snow staff 117 10 8 19:03 MANIFEST.MF
-rwxr-xr-x@ 1 snow staff 190 10 8 19:03 PATCH.MF
SnowMacBookPro:AndFix snow$

and no entry's size is 0

How to generate apatch

Can anyone please show a working example to generate apatch file in windows.

It is giving me this error

C:\Users\Hamza Mirza\AndroidStudioProjects\apkpatch>apkpatch -f 2.apk -t 1.apk -
a mykey -e mykey -p mykey -k C:\Users\Hamza Mirza\AndroidStudioProject
s\apkpatch
Exception in thread "main" java.lang.IllegalArgumentException: does not exist
at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1637)
at com.euler.patch.Build.(Build.java:50)
at com.euler.patch.ApkPatch.(ApkPatch.java:40)
at com.euler.patch.Main.main(Main.java:95)

C:\Users\Hamza Mirza\AndroidStudioProjects\apkpatch>

设备名称:Galaxy S5 型号:SM-G9006V Android版本:5.0 加载补丁崩溃

加载补丁崩溃

设备名称:Galaxy S5
型号:SM-G9006V
Android版本:5.0

AndFix引入方式为gradle:
dependencies {
compile 'com.alipay.euler:andfix:0.3.1@aar'
}

确定不是混淆引起。

按照文档步骤,
第一步,打一个apk包命名为1.apk,安装到设备上,运行正常;
第二步,修改代码,打一个新包,命名为2.apk;
第三步,用补丁工具apkpatch生产一个补丁文件,重命名为out.apatch放入sdcard,重新启动应用,触发补丁方法调用的时候崩溃。

后来我新建了一个Galaxy Nexus,Android4.2系统,补丁正常,测试通过

AndFix设备兼容性测试,发现目前仅在Android 4.x平台运行正常

测试设备

通过Android Studio建立各个系统版本的模拟器,测试过的模拟器有:
设备名称:Nexus S 系统版本:Android 2.2/2.3 CPU/ABI:x86/arm 测试结果:崩溃
设备名称:Galaxy Nexus 系统版本:Android 4.1/4.2/4.3 CPU/ABI:x86/arm 测试结果:正常
设备名称:Nexus 4 系统版本:Android 4.2/4.3/4.4 CPU/ABI:x86/arm 测试结果:正常
设备名称:Nexus 5 系统版本:Android 5.0/5.1 CPU/ABI:x86/arm 测试结果:崩溃
设备名称:Nexus 5 系统版本:Android 4.4 CPU/ABI:x86/arm 测试结果:正常
设备名称:Nexus 7 系统版本:Android 4.3 CPU/ABI:x86/arm 测试结果:正常
设备名称:Nexus 7 系统版本:Android 5.0 CPU/ABI:x86/arm 测试结果:崩溃

运行apkpatch报nullPointException

很简单的一个补丁, 就是在MainActivity.onCreate中多加了一行Log.i("Andfix", "andfix is loaded."); 但是直接结果出错。

C:\tmp>apkpatch.bat -f C:/tmp/product-release-new.apk -t C:/tmp/product-release-bug.apk -o C:/tmp -k C:/tmp/android.keystore -p xxxxx -a xxxxx -e xxxxx
add modified Method:V  onCreate(Landroid/os/Bundle;)  in Class:Lcom/achievo/vipshop/newactivity/MainActivity;
add modified Method:Z  i(Ljava/lang/String;)  in Class:Lcom/baidu/location/t;
java.lang.NullPointerException
        at com.euler.patch.build.PatchBuilder.<init>(PatchBuilder.java:5)
        at com.euler.patch.Build.build(Build.java:74)
        at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
        at com.euler.patch.Main.main(Main.java:97)
java.lang.NullPointerException
        at com.euler.patch.build.PatchBuilder.writeMeta(PatchBuilder.java:33)
        at com.euler.patch.Build.build(Build.java:76)
        at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
        at com.euler.patch.Main.main(Main.java:97)
java.lang.NullPointerException
        at com.euler.patch.build.PatchBuilder.sealPatch(PatchBuilder.java:43)
        at com.euler.patch.Build.build(Build.java:77)
        at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
        at com.euler.patch.Main.main(Main.java:97)

@supern 能否帮忙定位下, 我的这个项目中有使用multi-dex

安全性!

能在运行时修改代码,这么强大的后门工具,google难道不知道?我对作者技术上很佩服,但是比较担心这个功能可能引起安全隐患。

锤子,三星正常fix 小米ARN

锤子,三星正常fix
小米报错

MI 2C
android版本5.0.2LRX22G
MIUI版本 5.7.16开发板

调试信息

10-10 11:10:29.425 18241-18241/? I/art﹕ Late-enabling -Xcheck:jni
10-10 11:10:29.525 18241-18241/com.euler.andfix D/AndFix﹕ vm is: art , apilevel is: 21
10-10 11:10:29.575 18241-18241/com.euler.andfix D/euler﹕ inited.
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A.s flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 1
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A.o flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A.i flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ replace_5_0: -1326427935 , -1326427935
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.s flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 1
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.o flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.i flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ replace_5_0: 1938464841 , 1938464841
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.s flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 1
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.o flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.i flag:
10-10 11:10:29.685 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.685 18241-18241/com.euler.andfix D/euler﹕ apatch loaded.
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ replace_5_0: -1326427935 , -1326427935
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.s flag:
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 1
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.o flag:
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.i flag:
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ replace_5_0: 1938464841 , 1938464841
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.s flag:
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 1
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.o flag:
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ modify com.euler.test.A_CF.i flag:
10-10 11:10:29.715 18241-18241/com.euler.andfix D/AndFix﹕ setFieldFlag_5_0: 9
10-10 11:10:29.715 18241-18241/com.euler.andfix D/euler﹕ apatch:/storage/emulated/0/out.apatch added.

10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] Thread suspend timeout
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] mutator lock level=46 owner=18446744073709551615 state=1 num_pending_writers=0 num_pending_readers=0
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] DALVIK THREADS (13):
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "main" prio=5 tid=1 Runnable
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="main" sCount=1 dsCount=0 obj=0x75a62e48 self=0xb4f07800
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18241 nice=0 cgrp=apps sched=0/0 handle=0xb6f71ec8
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=R schedstat=( 0 0 0 ) utm=2963 stm=8 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xbe36c000-0xbe36e000 stackSize=8MB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes= "mutator lock"(shared held)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] Not able to dump stack of thread that isn't suspended
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "Heap thread pool worker thread 2" prio=5 tid=2 Native (still starting up)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="" sCount=1 dsCount=0 obj=0x0 self=0xb0d0e400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18250 nice=0 cgrp=apps sched=0/0 handle=0xad1cf080
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb456d000-0xb456f000 stackSize=1020KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 000100f8 /system/lib/libc.so (syscall+28)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 000a8ebf /system/lib/libart.so (art::ConditionVariable::Wait(art::Thread_)+82)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 0022de3f /system/lib/libart.so (art::ThreadPool::GetTask(art::Thread_)+50)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 0022dde5 /system/lib/libart.so (art::ThreadPoolWorker::Run()+52)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 0022e621 /system/lib/libart.so (art::ThreadPoolWorker::Callback(void_)+52)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 000137a3 /system/lib/libc.so (pthread_start(void)+30)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #6 pc 00011883 /system/lib/libc.so (start_thread+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] (no managed stack frames)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "Heap thread pool worker thread 1" prio=5 tid=3 Native (still starting up)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="" sCount=1 dsCount=0 obj=0x0 self=0xb0a0e400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18249 nice=0 cgrp=apps sched=0/0 handle=0xb4fe1080
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb466d000-0xb466f000 stackSize=1020KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 000100f8 /system/lib/libc.so (syscall+28)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 000a8ebf /system/lib/libart.so (art::ConditionVariable::Wait(art::Thread
)+82)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 0022de3f /system/lib/libart.so (art::ThreadPool::GetTask(art::Thread
)+50)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 0022dde5 /system/lib/libart.so (art::ThreadPoolWorker::Run()+52)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 0022e621 /system/lib/libart.so (art::ThreadPoolWorker::Callback(void
)+52)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 000137a3 /system/lib/libc.so (pthread_start(void)+30)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #6 pc 00011883 /system/lib/libc.so (start_thread+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] (no managed stack frames)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "Heap thread pool worker thread 0" prio=5 tid=4 Native (still starting up)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="" sCount=1 dsCount=0 obj=0x0 self=0xb0551800
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18248 nice=0 cgrp=apps sched=0/0 handle=0xad1d6d80
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb476d000-0xb476f000 stackSize=1020KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 000100f8 /system/lib/libc.so (syscall+28)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 000a8ebf /system/lib/libart.so (art::ConditionVariable::Wait(art::Thread
)+82)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 0022de3f /system/lib/libart.so (art::ThreadPool::GetTask(art::Thread
)+50)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 0022dde5 /system/lib/libart.so (art::ThreadPoolWorker::Run()+52)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 0022e621 /system/lib/libart.so (art::ThreadPoolWorker::Callback(void
)+52)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 000137a3 /system/lib/libc.so (_pthread_start(void)+30)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #6 pc 00011883 /system/lib/libc.so (__start_thread+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] (no managed stack frames)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "Signal Catcher" daemon prio=5 tid=5 WaitingInMainSignalCatcherLoop
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=1 dsCount=0 obj=0x12c00080 self=0xb040e400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18251 nice=0 cgrp=apps sched=0/0 handle=0xad1cf300
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb445d000-0xb445f000 stackSize=1012KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 00037a24 /system/lib/libc.so (rt_sigtimedwait+12)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 00014ef5 /system/lib/libc.so (sigwait+24)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 00217ebb /system/lib/libart.so (art::SignalCatcher::WaitForSignal(art::Thread
, art::SignalSet&)+66)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 002199a9 /system/lib/libart.so (art::SignalCatcher::Run(void
)+196)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 000137a3 /system/lib/libc.so (_pthread_start(void)+30)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 00011883 /system/lib/libc.so (start_thread+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] (no managed stack frames)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "JDWP" daemon prio=5 tid=6 Suspended
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=0 dsCount=0 obj=0x12c0d080 self=0xb020e400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18252 nice=0 cgrp=apps sched=0/0 handle=0xad1cf580
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=R schedstat=( 0 0 0 ) utm=1 stm=4 core=3 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb4359000-0xb435b000 stackSize=1012KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 00004640 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext
)+23)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 00002e8d /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext
)+8)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 0023ed8d /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::1::char_traits >&, int, char const, art::mirror::ArtMethod)+68)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 002242df /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+146)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 0022cc5d /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream<char, std::__1::char_traits >&)+104)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 0022d153 /system/lib/libart.so (art::UnsafeLogFatalForThreadSuspendAllTimeout()+206)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #6 pc 0022d4a7 /system/lib/libart.so (art::ThreadList::SuspendAll()+750)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #7 pc 001486c1 /system/lib/libart.so (art::gc::space::RosAllocSpace::InspectAllRosAlloc(void ()(void, void_, unsigned int, void_), void_, bool)+412)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #8 pc 00148c2d /system/lib/libart.so (art::gc::space::RosAllocSpace::GetObjectsAllocated()+24)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #9 pc 0012aee9 /system/lib/libart.so (art::gc::Heap::GetObjectsAllocated() const+20)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #10 pc 000ed5b9 /system/lib/libart.so (art::Dbg::DdmSendHeapInfo(art::Dbg::HpifWhen)+852)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #11 pc 000ed94b /system/lib/libart.so (art::Dbg::DdmHandleHpifChunk(art::Dbg::HpifWhen)+94)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #12 pc 00019d45 /data/dalvik-cache/arm/system@[email protected] (Java_org_apache_harmony_dalvik_ddmc_DdmVmInternal_heapInfoNotify__I+84)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at org.apache.harmony.dalvik.ddmc.DdmVmInternal.heapInfoNotify!(Native method)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at android.ddm.DdmHandleHeap.handleHPIF(DdmHandleHeap.java:118)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at android.ddm.DdmHandleHeap.handleChunk(DdmHandleHeap.java:85)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "ReferenceQueueDaemon" daemon prio=5 tid=7 Waiting
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=1 dsCount=0 obj=0x12c24080 self=0xad19ec00
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18253 nice=0 cgrp=apps sched=0/0 handle=0xad1cf800
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb424f000-0xb4251000 stackSize=1036KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Object.wait!(Native method)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - waiting on <0x1a644636> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:133)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - locked <0x1a644636> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Thread.run(Thread.java:818)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "FinalizerDaemon" daemon prio=5 tid=8 Waiting
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=1 dsCount=0 obj=0x12c240e0 self=0xad19f000
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18254 nice=0 cgrp=apps sched=0/0 handle=0xad1cfa80
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xb08fe000-0xb0900000 stackSize=1036KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Object.wait!(Native method)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - waiting on <0x0dda8937> (a java.lang.ref.ReferenceQueue)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Object.wait(Object.java:422)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - locked <0x0dda8937> (a java.lang.ref.ReferenceQueue)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Thread.run(Thread.java:818)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "FinalizerWatchdogDaemon" daemon prio=5 tid=9 Waiting
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=1 dsCount=0 obj=0x12c24140 self=0xad19f400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18255 nice=0 cgrp=apps sched=0/0 handle=0xad1cfd00
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xa5ff1000-0xa5ff3000 stackSize=1036KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Object.wait!(Native method)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - waiting on <0x3bd7740d> (a java.lang.Daemons$FinalizerWatchdogDaemon)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Daemons$FinalizerWatchdogDaemon.waitForObject(Daemons.java:239)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - locked <0x3bd7740d> (a java.lang.Daemons$FinalizerWatchdogDaemon)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:211)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Thread.run(Thread.java:818)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "HeapTrimmerDaemon" daemon prio=5 tid=10 Waiting
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=1 dsCount=0 obj=0x12c241a0 self=0xad19f800
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18256 nice=0 cgrp=apps sched=0/0 handle=0xad1cff80
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xa5cfe000-0xa5d00000 stackSize=1036KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Object.wait!(Native method)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - waiting on <0x2f268fc2> (a java.lang.Daemons$HeapTrimmerDaemon)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Daemons$HeapTrimmerDaemon.run(Daemons.java:310)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - locked <0x2f268fc2> (a java.lang.Daemons$HeapTrimmerDaemon)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Thread.run(Thread.java:818)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "GCDaemon" daemon prio=5 tid=11 Waiting
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="system" sCount=1 dsCount=0 obj=0x12c24200 self=0xad19fc00
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18257 nice=0 cgrp=apps sched=0/0 handle=0xad1d0200
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xa59fe000-0xa5a00000 stackSize=1036KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Object.wait!(Native method)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - waiting on <0x054481d3> (a java.lang.Daemons$GCDaemon)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Daemons$GCDaemon.run(Daemons.java:341)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] - locked <0x054481d3> (a java.lang.Daemons$GCDaemon)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] at java.lang.Thread.run(Thread.java:818)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "Binder_1" prio=5 tid=12 Native
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="main" sCount=1 dsCount=0 obj=0x12c73080 self=0xa5506400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18258 nice=0 cgrp=apps sched=0/0 handle=0xad1d0480
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xa5606000-0xa5608000 stackSize=1012KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 00036974 /system/lib/libc.so (_ioctl+8)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 0004ed25 /system/lib/libc.so (ioctl+14)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 0001cb43 /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+138)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 0001d033 /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 0001d095 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+48)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 000211fb /system/lib/libbinder.so (???)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #6 pc 0000ef11 /system/lib/libutils.so (android::Thread::threadLoop(void)+112)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #7 pc 0005a3ad /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void
)+72)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #8 pc 0000ea81 /system/lib/libutils.so (???)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #9 pc 000137a3 /system/lib/libc.so (_pthread_start(void)+30)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #10 pc 00011883 /system/lib/libc.so (__start_thread+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] (no managed stack frames)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] "Binder_2" prio=5 tid=13 Native
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | group="main" sCount=1 dsCount=0 obj=0x12c79080 self=0xa5306400
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | sysTid=18259 nice=0 cgrp=apps sched=0/0 handle=0xa5526080
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | stack=0xa5404000-0xa5406000 stackSize=1012KB
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] | held mutexes=
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #00 pc 00036974 /system/lib/libc.so (_ioctl+8)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #1 pc 0004ed25 /system/lib/libc.so (ioctl+14)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #2 pc 0001cb43 /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+138)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #3 pc 0001d033 /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #4 pc 0001d095 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+48)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #5 pc 000211fb /system/lib/libbinder.so (???)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #6 pc 0000ef11 /system/lib/libutils.so (android::Thread::threadLoop(void)+112)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #7 pc 0005a3ad /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void
)+72)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #8 pc 0000ea81 /system/lib/libutils.so (???)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #9 pc 000137a3 /system/lib/libc.so (_pthread_start(void)+30)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] native: #10 pc 00011883 /system/lib/libc.so (__start_thread+6)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172] (no managed stack frames)
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.165 18241-18252/com.euler.andfix A/art﹕ art/runtime/thread_list.cc:172]
10-10 11:11:00.255 18241-18252/com.euler.andfix A/libc﹕ Fatal signal 11 (SIGSEGV), code 1, fault addr 0x65008c in tid 18252 (JDWP)

小米自身报错


Build fingerprint: 'Xiaomi/aries/aries:5.0.2/LRX22G/5.7.16:user/release-keys'
Revision: '0'
ABI: 'arm'
pid: 12571, tid: 12581, name: JDWP >>> com.euler.andfix <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x65008c
Abort message: 'art/runtime/thread_list.cc:172] Thread suspend timeout'
r0 705cd6c0 r1 0065006c r2 00000000 r3 705cd6c1
r4 b4453dc8 r5 12ced420 r6 b6f51e04 r7 ffffffff
r8 b4efac7c r9 b4f07888 sl b4f69300 fp b0f05090
ip b4453c84 sp b4453ce8 lr b4e2b39d pc b4e30c14 cpsr 000d0030

backtrace:
#00 pc 00221c14 /system/lib/libart.so (art::StackDumpVisitor::VisitFrame()+43)
#1 pc 0021c39b /system/lib/libart.so (art::StackVisitor::WalkStack(bool)+250)
#2 pc 0022431f /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+210)
#3 pc 0022cc5d /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream<char, std::__1::char_traits >&)+104)
#4 pc 00214b49 /system/lib/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&)+236)
#5 pc 00214d95 /system/lib/libart.so (art::Runtime::Abort()+72)
#6 pc 000a63d3 /system/lib/libart.so (art::LogMessage::~LogMessage()+1322)
#7 pc 0022d17f /system/lib/libart.so (art::UnsafeLogFatalForThreadSuspendAllTimeout()+250)
#8 pc 0022d4a7 /system/lib/libart.so (art::ThreadList::SuspendAll()+750)
#9 pc 001486c1 /system/lib/libart.so (art::gc::space::RosAllocSpace::InspectAllRosAlloc(void ()(void, void_, unsigned int, void_), void*, bool)+412)
#10 pc 00148c2d /system/lib/libart.so (art::gc::space::RosAllocSpace::GetObjectsAllocated()+24)
#11 pc 0012aee9 /system/lib/libart.so (art::gc::Heap::GetObjectsAllocated() const+20)
#12 pc 000ed5b9 /system/lib/libart.so (art::Dbg::DdmSendHeapInfo(art::Dbg::HpifWhen)+852)
#13 pc 000ed94b /system/lib/libart.so (art::Dbg::DdmHandleHpifChunk(art::Dbg::HpifWhen)+94)
#14 pc 00019d45 /data/dalvik-cache/arm/system@[email protected]

Problem when working with EventBus

I believe, the class name was changed after patched.

test

java.lang.IllegalArgumentException: expected receiver of type com._.activity.MainTabActivity_CF, but got com._.activity.MainTabActivity
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525)
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at
de.greenrobot.event.EventBus.invokeSubscriber(EventBus.java:498)
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at de.greenrobot.event.EventBus.postToSubscription(EventBus.java:433)
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at de.greenrobot.event.EventBus.postSingleEventForEventType(EventBus.java:410)
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at de.greenrobot.event.EventBus.postSingleEvent(EventBus.java:383)
09-24 15:53:29.530 6616-6736/? E/AndroidRuntime: at de.greenrobot.event.EventBus.post(EventBus.java:263)

补丁工具apkpatch的使用

apkpatch -f fix.apk -t old.apk -o G:\AndFixPatchTool\ -k G:\keystore\andfixtest.jks -p 105400 -a andfixtest
执行这个之后 并没有生成.patch文件,求正确的打补丁方式。

代码中有jacoco单元测试覆盖率检查是,无法使用

Crash日志如下:提示Final field cannot be written

java.lang.IllegalAccessError: Final field 'com.myapp.Myapp.$jacocoData' cannot be written to by method 'boolean[] com.myapp.Myapp_CF.$jacocoInit()' (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
            at com.myapp.Myapp_CF.$jacocoInit(Myapp.java)
            at com.myapp.Myapp.<init>(Myapp.java)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.Class.newInstance(Class.java:1572)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

生成的patch的smali文件如下:

# static fields
.field private static final transient synthetic $jacocoData:[Z = null
# direct methods
.method private static synthetic $jacocoInit()[Z
    .locals 4
    .annotation runtime Lcom/alipay/euler/andfix/annotation/MethodReplace;
        clazz = "com.myapp.Myapp"
        method = "$jacocoInit"
    .end annotation

    sget-object v0, Lcom/myapp/Myapp;->$jacocoData:[Z

    if-nez v0, :cond_0

    const-wide v0, 0x28846709982acfa1L

    const-string/jumbo v2, "com/myapp/Myapp"

    const/16 v3, 0xf7

    invoke-static {v0, v1, v2, v3}, Lorg/jacoco/agent/rt/internal_773e439/Offline;->getProbes(JLjava/lang/String;I)[Z

    move-result-object v0

    sput-object v0, Lcom/myapp/Myapp;->$jacocoData:[Z

    :cond_0
    return-object v0
.end method

是否有解决方案,是否只针对jacoco,如果自己写类似的静态final对象引用某个静态方法,是否也不能支持?

java.io.IOException: unable to open DEX file

09-25 15:09:33.845 29850-29850/com.euler.andfix D/euler﹕ inited.
09-25 15:09:33.845 29850-29850/com.euler.andfix D/SecurityChecker﹕ mDebuggable = true
09-25 15:09:33.850 29850-29850/com.euler.andfix I/dalvikvm﹕ Zip is good, but no classes.dex inside, and no valid .odex file in the same directory
09-25 15:09:33.860 29850-29850/com.euler.andfix D/dalvikvm﹕ GC_FOR_ALLOC freed 402K, 3% free 14725K/15160K, paused 13ms, total 13ms
09-25 15:09:33.860 29850-29850/com.euler.andfix E/AndFixManager﹕ pacth
java.io.IOException: unable to open DEX file
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:296)
at dalvik.system.DexFile.(DexFile.java:111)
at dalvik.system.DexFile.loadDex(DexFile.java:151)
at com.alipay.euler.andfix.AndFixManager.fix(AndFixManager.java:147)
at com.alipay.euler.andfix.patch.PatchManager.loadPatch(PatchManager.java:214)
at com.euler.andfix.MainApplication.onCreate(MainApplication.java:52)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1019)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4381)
at android.app.ActivityThread.access$1500(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1295)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5054)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
09-25 15:09:33.860 29850-29850/com.euler.andfix D/euler﹕ apatch loaded.
09-25 15:09:33.865 29850-29850/com.euler.andfix D/PatchManager﹕ patch [/storage/emulated/0/out.apatch] has be loaded.
09-25 15:09:33.865 29850-29850/com.euler.andfix D/euler﹕ apatch:/storage/emulated/0/out.apatch added.

java.util.zip.ZipException: File too short to be a zip file

出现这个异常,好像是patch包太小了?
java.util.zip.ZipException: File too short to be a zip file: 0
10-10 02:33:38.107 4009-4009/? E/PatchManager: at java.util.zip.ZipFile.readCentralDir(ZipFile.java:376)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at java.util.zip.ZipFile.(ZipFile.java:163)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at java.util.jar.JarFile.(JarFile.java:199)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at java.util.jar.JarFile.(JarFile.java:182)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at java.util.jar.JarFile.(JarFile.java:168)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at com.alipay.euler.andfix.patch.Patch.init(Patch.java:75)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at com.alipay.euler.andfix.patch.Patch.(Patch.java:67)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at com.alipay.euler.andfix.patch.PatchManager.addPatch(PatchManager.java:126)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at com.alipay.euler.andfix.patch.PatchManager.initPatchs(PatchManager.java:112)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at com.alipay.euler.andfix.patch.PatchManager.init(PatchManager.java:105)
10-10 02:33:38.107 4009-4009/? E/PatchManager: at com.taobao.andfixtest.MyApp.onCreate(MyApp.java:24)

RuntimeException when use apkpatch

Hi,

Use apkpatch to generate patch file, it will throw RuntimeException, following is log:

add modified Method:V a() in Class:Lcom/trendmicro/safesync/core/provider/bg;
add new Method:V a(Lorg/json/JSONObject;) in Class:Lcom/trendmicro/safesync/core/provider/bw;
add new Method:V c(I) in Class:Lcom/trendmicro/safesync/core/provider/bw;
add modified Method:V a() in Class:Lcom/trendmicro/safesync/core/provider/bw;
java.lang.RuntimeException: can,t add new Field:m(Lcom/trendmicro/safesync/core/provider/ak;), in class :Lcom/trendmicro/safesync/core/provider/bx;
at com.euler.patch.diff.DiffInfo.addAddedFields(DiffInfo.java:77)
at com.euler.patch.diff.DexDiffer.compareField(DexDiffer.java:132)
at com.euler.patch.diff.DexDiffer.compareField(DexDiffer.java:101)
at com.euler.patch.diff.DexDiffer.compareField(DexDiffer.java:95)
at com.euler.patch.diff.DexDiffer.diff(DexDiffer.java:32)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:68)

at com.euler.patch.Main.main(Main.java:97)

0.3.1跑Demo可以跑起来,跑自己的项目直接crash

在Application的oncreate里面执行mPatchManager = new PatchManager(this); 直接crash..
自己的项目调用了很多第三方的库....
日志:

java.lang.UnsatisfiedLinkError: Couldn't load andfix from loader dalvik.system.PathClassLoader
            at java.lang.Runtime.loadLibrary(Runtime.java:358)
            at java.lang.Runtime.loadLibrary(Runtime.java:348)
            at com.alipay.euler.andfix.AndFix.<clinit>(AndFix.java:37)
            at com.alipay.euler.andfix.Compat.isSupport(Compat.java:45)
            at com.alipay.euler.andfix.AndFixManager.<init>(AndFixManager.java:74)
            at com.alipay.euler.andfix.patch.PatchManager.<init>(PatchManager.java:78)

No implementation found for native Lcom/alipay/euler/andfix/AndFix;.setup:(ZI)Z
还有

java.lang.UnsatisfiedLinkError: Native method not found: com.alipay.euler.andfix.AndFix.setup:(ZI)Z
            at com.alipay.euler.andfix.AndFix.setup(Native Method)
            at com.alipay.euler.andfix.AndFix.setup(AndFix.java:113)
            at com.alipay.euler.andfix.Compat.isSupport(Compat.java:45)
            at com.alipay.euler.andfix.AndFixManager.<init>(AndFixManager.java:74)
            at com.alipay.euler.andfix.patch.PatchManager.<init>(PatchManager.java:78)

aar可用吗?

貌似maven central 和jcenter现在搜索不到啊 已经上传了?

需要清除app的数据,才能修复成功

1.在没有out.apatch的情况下,打开adnfixdemo
2.关闭demo
3.将out.apatch放到SD卡中
4.打开demo,还是运行原来的,没有修复成功
5.到应用信息中,清除数据
6.再打开demo,修复成功了

不知道这是为什么,如果每次都需要清除数据,感觉不怎么实用???

兼容测试发现 4.0.4 全跪了 其他基本正常

堆栈是这样的~

#2043   09-30 16:15:43.223  26643   E   Posix    [CDS]Libcore_io_Posix-throwErrnoException, functionName: remove; errno: No such file or directory
#2044   09-30 16:15:43.246  26643   E   AndFix   setup error: dexProtoGetParameterCount_fnPtr
#2045   09-30 16:15:43.246  26643   E   Posix    [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory
#2046   09-30 16:15:43.247  26643   E   Posix    [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory```

主要错误都是这句 =》 #2044 09-30 16:15:43.246  26643   E   AndFix  
**setup error: dexProtoGetParameterCount_fnPtr**  
应该就是拿不到这货的函数指针~

然后跟了一下源码   

    dexProtoGetParameterCount_fnPtr = dvm_dlsym(dvm_hand,
            apilevel > 10 ?
                        "_Z25dexProtoGetParameterCountPK8DexProto" :
                    "dexProtoGetParameterCount");

4.0.4 取的应该是 _Z25dexProtoGetParameterCountPK8DexProto  查阅了aosp源码 里面只有 dexProtoGetParameterCount 这个方法的定义,没有找到_Z25dexProtoGetParameterCountPK8DexProto
在setup 里面有大量这种类似的代码,都是判断apilevel > 10 则用一个看起来比较奇怪的方法名(是链接后的函数名么?)     为什么要这么使用呢?

打debug包没做混淆,能够运行 hot fix也成功了,但是放置一段时间app就自动挂掉了

09-30 16:37:43.375 27672-27672/com.sample.app A/art﹕ art/runtime/mirror/art_method.cc:199] Failed to find Dex offset for PC offset 0xee26399a(PC 0xa1f13c83, entry_point=0xb3cb02e9) in void com.sample.fragment.SampleFragment$TelCallListener_CF.onClick(android.view.View)
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] Runtime aborting...
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] Aborting thread:
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] "main" prio=5 tid=1 Runnable
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] | group="" sCount=0 dsCount=0 obj=0x87369f88 self=0xb4f07800
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] | sysTid=27672 nice=0 cgrp=apps sched=0/0 handle=0xb6fb4ec8
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] | state=R schedstat=( 4357833730 493811479 2310 ) utm=394 stm=41 core=3 HZ=100
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] | stack=0xbe7a3000-0xbe7a5000 stackSize=8MB
09-30 16:37:44.055 27672-27672/com.sample.app A/art﹕ art/runtime/runtime.cc:287] | held mutexes= "abort lock" "mutator lock"(shared held)

patch的修改不能修改acitivity?

我发现只要新包的版本只要修改了activity 的方法 或者实现 或者 在activity新建类 打出来的patch 一运行偶读会报错
举个例子 在更新包中实现 implements View.OnClickListener 然后打patch 一运行 直接报
java.lang.IncompatibleClassChangeError: Class 'com.euler.andfix.MainActivity' does not implement interface 'android.view.View$OnClickListener' in call to 'void android.view.View$OnClickListener.onClick(android.view.View)' (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)

手机是android 5.1 框架是否不支持 art 或者 在打新包的时候不支持修改activity的字段函数和实现集成关系?

java.lang.IllegalAccessError: interface not accessible

java.lang.IllegalAccessError: interface not accessible
at dalvik.system.DexFile.defineClassNative(Native Method)
at dalvik.system.DexFile.defineClass(DexFile.java:222)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215)
at dalvik.system.DexFile.loadClass(DexFile.java:204)
at com.alipay.euler.andfix.AndFixManager.fix(AndFixManager.java:169)
at com.alipay.euler.andfix.patch.PatchManager.loadPatch(PatchManager.java:203)
at com.wecook.common.modules.hotfix.HotFixTools.setup(HotFixTools.java:40)
at com.wecook.common.modules.ModuleManager.registerAllModules(ModuleManager.java:104)
at com.wecook.common.app.BaseApp.onCreate(BaseApp.java:40)
at cn.wecook.app.WecookApp.onCreate(WecookApp.java:38)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4574)
at android.app.ActivityThread.access$1500(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1400)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5332)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
at dalvik.system.NativeStart.main(Native Method)

java.util.zip.ZipException: File too short to be a zip file: 0

When I was run 1.apk, throw this error, but the app not crash, It seem run success. and The repalce patch was also right. So this error has any problem?

09-16 05:07:05.607: E/PatchManager(20395): addPatch
09-16 05:07:05.607: E/PatchManager(20395): java.util.zip.ZipException: File too short to be a zip file: 0
09-16 05:07:05.607: E/PatchManager(20395):  at java.util.zip.ZipFile.readCentralDir(ZipFile.java:376)
09-16 05:07:05.607: E/PatchManager(20395):  at java.util.zip.ZipFile.<init>(ZipFile.java:163)
09-16 05:07:05.607: E/PatchManager(20395):  at java.util.jar.JarFile.<init>(JarFile.java:199)
09-16 05:07:05.607: E/PatchManager(20395):  at java.util.jar.JarFile.<init>(JarFile.java:182)
09-16 05:07:05.607: E/PatchManager(20395):  at java.util.jar.JarFile.<init>(JarFile.java:168)
09-16 05:07:05.607: E/PatchManager(20395):  at com.alipay.euler.andfix.patch.Patch.init(Patch.java:75)
09-16 05:07:05.607: E/PatchManager(20395):  at com.alipay.euler.andfix.patch.Patch.<init>(Patch.java:67)
09-16 05:07:05.607: E/PatchManager(20395):  at com.alipay.euler.andfix.patch.PatchManager.addPatch(PatchManager.java:125)
09-16 05:07:05.607: E/PatchManager(20395):  at com.alipay.euler.andfix.patch.PatchManager.initPatchs(PatchManager.java:111)
09-16 05:07:05.607: E/PatchManager(20395):  at com.alipay.euler.andfix.patch.PatchManager.init(PatchManager.java:104)
09-16 05:07:05.607: E/PatchManager(20395):  at com.euler.andfix.MainApplication.onCreate(MainApplication.java:48)
09-16 05:07:05.607: E/PatchManager(20395):  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
09-16 05:07:05.607: E/PatchManager(20395):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4553)
09-16 05:07:05.607: E/PatchManager(20395):  at android.app.ActivityThread.access$1500(ActivityThread.java:151)
09-16 05:07:05.607: E/PatchManager(20395):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
09-16 05:07:05.607: E/PatchManager(20395):  at android.os.Handler.dispatchMessage(Handler.java:102)
09-16 05:07:05.607: E/PatchManager(20395):  at android.os.Looper.loop(Looper.java:135)
09-16 05:07:05.607: E/PatchManager(20395):  at android.app.ActivityThread.main(ActivityThread.java:5254)
09-16 05:07:05.607: E/PatchManager(20395):  at java.lang.reflect.Method.invoke(Native Method)
09-16 05:07:05.607: E/PatchManager(20395):  at java.lang.reflect.Method.invoke(Method.java:372)
09-16 05:07:05.607: E/PatchManager(20395):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
09-16 05:07:05.607: E/PatchManager(20395):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
09-16 05:07:05.607: D/euler(20395): inited.
09-16 05:07:05.609: D/euler(20395): apatch loaded.
09-16 05:07:05.634: D/SecurityChecker(20395): mDebuggable = true
09-16 05:07:05.768: D/AndFix(20395): modify com.euler.andfix.MainActivity.TAG flag:
09-16 05:07:05.768: D/AndFix(20395): setFieldFlag_m: 1 
09-16 05:07:05.768: D/AndFix(20395): replace_m: -1290452868 , -1290452868
09-16 05:07:05.768: D/AndFix(20395): modify com.euler.andfix.MainActivity_CF.TAG flag:
09-16 05:07:05.768: D/AndFix(20395): setFieldFlag_m: 1 
09-16 05:07:05.768: D/euler(20395): apatch:/storage/emulated/0/out.apatch added.
09-16 05:07:05.792: D/qq(20395): good
09-16 05:07:05.792: I/euler(20395): fix succes
09-16 05:07:05.792: E/euler(20395): b
09-16 05:07:05.792: E/euler(20395): s1
09-16 05:07:05.792: E/euler(20395): 11==a
09-16 05:07:05.792: I/euler(20395): fix success
09-16 05:07:05.792: I/euler(20395): fix
09-16 05:07:05.792: E/euler(20395): 0
09-16 05:07:05.794: E/euler(20395): 10

混淆之后,apkpatch的时候出现java.lang.RuntimeException

没混淆之前是没有问题的,但增加了混淆之后就出现异常

-keep class com.alipay.euler.andfix.AndFix { *; }
-keep class com.alipay.euler.andfix.annotation.MethodReplace { *; }
-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
    native <methods>;
} 

是我操作出现了问题了吗? 这个问题搞了好久,求帮助

异常信息:

java.lang.RuntimeException: can,t add new Field:a(I), in class :Lcom/euler/a/a;
    at com.euler.patch.diff.DiffInfo.addAddedFields(DiffInfo.java:77)
    at com.euler.patch.diff.DexDiffer.compareField(DexDiffer.java:132)
    at com.euler.patch.diff.DexDiffer.compareField(DexDiffer.java:101)
    at com.euler.patch.diff.DexDiffer.compareField(DexDiffer.java:95)
    at com.euler.patch.diff.DexDiffer.diff(DexDiffer.java:32)
    at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:68)
    at com.euler.patch.Main.main(Main.java:97)

能否Hook框架API?

尝试Hook一些Framework的API,有不成功的也有成功的,还有卡死的情况。

NullPointerException at com.euler.patch.build.PatchBuilder.<init>(PatchBuilder.java:5)

正在尝试使用这个工具,刚更新到了 解决 #20 的版本。

但是 apkpatch.sh输出如下:

add modified Method:V onCreate(Landroid/os/Bundle;) in Class:Lcom/_马赛克_*/activity/MainTabActivity;
java.lang.NullPointerException
at com.euler.patch.build.PatchBuilder.(PatchBuilder.java:5)
at com.euler.patch.Build.build(Build.java:74)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
at com.euler.patch.Main.main(Main.java:97)
java.lang.NullPointerException
at com.euler.patch.build.PatchBuilder.writeMeta(PatchBuilder.java:33)
at com.euler.patch.Build.build(Build.java:76)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
at com.euler.patch.Main.main(Main.java:97)
java.lang.NullPointerException
at com.euler.patch.build.PatchBuilder.sealPatch(PatchBuilder.java:43)
at com.euler.patch.Build.build(Build.java:77)
at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:72)
at com.euler.patch.Main.main(Main.java:97)

希望能有价值~

资源文件的更改无法被打入补丁?

测试了一下,代码级别是可以修复的。但是更改的资源文件并没有被打进去。如果某个bug涉及对资源文件的使用,打完补丁后,不就引入找不到资源文件这样新的bug了吗?

是不是不支持方法级别的bug fix,经过测试感觉是class级别的

  • 我按照demo做了测试,只是在demo中A.java类某个方法中加了一行log,报以下错误
    A.java中有私有的O.java对象
09-15 15:41:41.419: E/AndroidRuntime(16526): FATAL EXCEPTION: main
09-15 15:41:41.419: E/AndroidRuntime(16526): Process: com.euler.andfix, PID: 16526
09-15 15:41:41.419: E/AndroidRuntime(16526): java.lang.IllegalAccessError: Field 'com.euler.test.A_CF.o' is inaccessible to class 'com.euler.test.A_CF' (declaration of 'com.euler.test.A_CF' appears in /data/data/com.euler.andfix/files/apatch/out.apatch)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at com.euler.test.A_CF.<clinit>(A.java:32)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at com.euler.andfix.MainActivity.onCreate(MainActivity.java:40)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.Activity.performCreate(Activity.java:5990)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.ActivityThread.access$800(ActivityThread.java:151)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.os.Handler.dispatchMessage(Handler.java:102)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.os.Looper.loop(Looper.java:135)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at android.app.ActivityThread.main(ActivityThread.java:5254)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at java.lang.reflect.Method.invoke(Native Method)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at java.lang.reflect.Method.invoke(Method.java:372)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
09-15 15:41:41.419: E/AndroidRuntime(16526):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
  • 如果将整个A.java文件替换掉就没有问题

可以在patch中新加一个类吗?

我尝试在例子的基础上又加了一个类,在Application和其他类中手动加载,但是并不能找到这个类。而且在打patch的时候 只比较了方法的改变,对于类增加没有显示。

Could not find com.alipay.euler:andfix:0.3.0.

Could not find com.alipay.euler:andfix:0.3.0.
     Searched in the following locations:
         https://repo1.maven.org/maven2/com/alipay/euler/andfix/0.3.0/andfix-0.3.0.pom
         https://repo1.maven.org/maven2/com/alipay/euler/andfix/0.3.0/andfix-0.3.0.aar
         https://jcenter.bintray.com/com/alipay/euler/andfix/0.3.0/andfix-0.3.0.pom
         https://jcenter.bintray.com/com/alipay/euler/andfix/0.3.0/andfix-0.3.0.aar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.