Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

Instrumentation detected, disabling framework #48

Open
fashioncj opened this issue Aug 8, 2016 · 10 comments
Open

Instrumentation detected, disabling framework #48

fashioncj opened this issue Aug 8, 2016 · 10 comments

Comments

@fashioncj
Copy link

fashioncj commented Aug 8, 2016

Hi,

I'm trying to run Monkey along with Emma to measure code coverage of the test cases. Emma is a tool which instrument applications in order to compute coverage criteria. In addition, I developed an Xposed module to record path information in log file. However, when I run the instrumented app using Monkey, I get the following message in the log file:

Instrumentation detected, disabling framework for "name of the app".

Is there any way to resolve this issue? Is this something general that I'm missing? That Xposed does not work on instrumented apps?

I appreciate your helps

Environment
Android 5.1.0 on Genymotion with Xposed Framework 86


I also test it on Android 4.4 with both divilk and art with Xposed Framework 33
It show that a lot of Class ref in pre-verified class resolved to unexpected implementation Error

such as:

08-08 05:44:43.537 1507-1507/? W/ClassPathPackageInfoSource: Cannot load class. Make sure it is in your apk. Class name: 'com.example.helloworld.TabsActivity'. Message: com.example.helloworld.TabsActivity
                                                             java.lang.ClassNotFoundException: com.example.helloworld.TabsActivity
                                                                 at java.lang.Class.classForName(Native Method)
                                                                 at java.lang.Class.forName(Class.java:251)
                                                                 at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:88)
                                                                 at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:39)
                                                                 at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50)
                                                                 at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:47)
                                                                 at android.test.SimpleCache.get(SimpleCache.java:31)
                                                                 at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:72)
                                                                 at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48)
                                                                 at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61)
                                                                 at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55)
                                                                 at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:156)
                                                                 at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:117)
                                                                 at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:102)
                                                                 at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:366)
                                                                 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4319)
                                                                 at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
                                                                 at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:631)
                                                                 at android.app.ActivityThread.handleBindApplication(Native Method)
                                                                 at android.app.ActivityThread.access$1500(ActivityThread.java:135)
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                 at android.os.Looper.loop(Looper.java:136)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                                 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 de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
                                                                 at dalvik.system.NativeStart.main(Native Method)
                                                              Caused by: java.lang.NoClassDefFoundError: com/example/helloworld/TabsActivity
                                                                 at java.lang.Class.classForName(Native Method) 
                                                                 at java.lang.Class.forName(Class.java:251) 
                                                                 at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:88) 
                                                                 at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:39) 
                                                                 at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50) 
                                                                 at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:47) 
                                                                 at android.test.SimpleCache.get(SimpleCache.java:31) 
                                                                 at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:72) 
                                                                 at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48) 
                                                                 at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61) 
                                                                 at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55) 
                                                                 at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:156) 
                                                                 at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:117) 
                                                                 at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:102) 
                                                                 at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:366) 
                                                                 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4319) 
                                                                 at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method) 
                                                                 at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:631) 
                                                                 at android.app.ActivityThread.handleBindApplication(Native Method) 
                                                                 at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                 at android.os.Looper.loop(Looper.java:136) 
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                                 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 de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
                                                                 at dalvik.system.NativeStart.main(Native Method) 
                                                              Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
                                                                 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.DexPathList.findClass(DexPathList.java:322)
                                                                 at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
                                                                 at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                                                                 at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                                                                 at java.lang.Class.classForName(Native Method) 
                                                                 at java.lang.Class.forName(Class.java:251) 
                                                                 at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:88) 
                                                                 at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:39) 
                                                                 at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50) 
                                                                 at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:47) 
                                                                 at android.test.SimpleCache.get(SimpleCache.java:31) 
                                                                 at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:72) 
                                                                 at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48) 
                                                                 at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61) 
                                                                 at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55) 
                                                                 at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:156) 
                                                                 at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:117) 
                                                                 at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:102) 
                                                                 at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:366) 
                                                                 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4319) 
                                                                 at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method) 
                                                                 at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:631) 
                                                                 at android.app.ActivityThread.handleBindApplication(Native Method) 
                                                                 at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                 at android.os.Looper.loop(Looper.java:136) 
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                                 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 de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
                                                                 at dalvik.system.NativeStart.main(Native Method)

Regards,
Fashioncj

@wanam
Copy link

wanam commented Aug 8, 2016

Ignoring how Xposed will behave with instrumented apps, you can still disable this check (i already disabled it for Samsung Roms): https://github.com/rovo89/XposedBridge/blob/art/app/src/main/java/de/robv/android/xposed/XposedInit.java#L72

@rovo89
Copy link
Owner

rovo89 commented Aug 8, 2016

OK... I still haven't checked though why this was added initially. Also not sure if Dalvik is behaving in the same way.

@fashioncj
Copy link
Author

I will try disable it first.

@rovo89 Maybe you can get some information from the error log

@rovo89
Copy link
Owner

rovo89 commented Aug 8, 2016

The error in the log might be related to instrumentation, not sure. Anyway, Xposed version 33 is ancient, please try it with the latest version (XposedBridge 58, I think).

@fashioncj
Copy link
Author

@rovo89
I test XposedBridge 54, it also have same problem.
Where is the XposedBridge 58 download url?
Which task in gradle to general jar in project XposedBridge?

@rovo89
Copy link
Owner

rovo89 commented Aug 8, 2016

The latest Xposed version for KitKat is included in the 2.7 installer: http://repo.xposed.info/module/de.robv.android.xposed.installer
It can't be built via Gradle, you have to use this branch and rename the APK to JAR: https://github.com/rovo89/XposedBridge/tree/master

@fashioncj
Copy link
Author

@rovo89 I use Android Studio to build https://github.com/rovo89/XposedBridge/tree/master . How to general APK?

@rovo89
Copy link
Owner

rovo89 commented Aug 8, 2016

No idea, I always used Eclipse, but haven't built it since 2014.

You'll probably better off trying it on Lollipop/Marshmallow first. You can then build the default ("art") branch using "./gradlew app:assembleRelease".

@fashioncj
Copy link
Author

@rovo89 I build art branch using that gradle command, But I just find an APK in \app\build\outputs\apk ,this APK is REALLY apk without sign.
I have question that:

I flash the newest release xposed-v86-sdk22-x86.zip in 5.1.0 genymotion. It notice that Instrumentation detected, disabling framework ...., wanam said that Ignore it. So what should I do?

  1. Rebuild XposedBridge like XposedBridgeApi-54.jar and using it on my module?
  2. Rebuild XposedBridge as an APK install to genymotion
  3. Rebuild XposedBridge like XposedBridge.jar replace it in xposed-v86-sdk22-x86.zip and refresh it?

@fashioncj
Copy link
Author

fashioncj commented Aug 8, 2016

@rovo89 Can you help me to build an XposedBridge jar File or xposed-v86-sdk22-x86.zip zip file with art which comment two line at Line 75/76 in file XposedInit :
//XposedBridge.disableHooks = true;
//return;

Send it to me in anyway, or my emali is [email protected]
Thank you very much!!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants