Tag: 仪器

使用ClassFileTransformer.transform的字节码检测

我已经编写了一个带有premain方法的类,在该方法中我已经将一个ClassFileTransformer添加到Instrumentation ( Instrumentation.addTransformer() )。 我已经调用了一个应用程序 java -javaagent: 但是,未调用ClassFileTransformer.transform()方法。 我观察到premain正在被调用。 我还观察到,如果我调用Instrumentation.retransformClasses() ,则调用ClassFileTransformer.transform() 。 在第一个定义( Classloader.defineClass() )上,不调用transform()方法。 有什么可能是错的线索? 注意:如果有任何帮助,我可以发布源代码。 此致,Rejeev。

无法解决以下活动:在检测Android活动的仪器时意图

当我试图在android上运行insturmentation测试时,我遇到了错误。 我写了一个名为AudioPlayerActivity的Activity,它位于com.mycompany.mobile.android.gui包中,现在我正在尝试测试该项目的GUI,并且我正在运行以下错误: java.lang.RuntimeException:无法解析以下活动:Intent {act = android.intent.action.MAIN flg = 0x10000000 cmp = com.mycompany.mobile.android.gui / .AudioPlayerActivity} 我已经阅读了这个问题 ,并遵循了那里的建议,但无济于事。 我也搜索了错误,但没有找到任何帮助。 这是我测试项目的AndroidManifest.xml的样子: 这是我的仪器测试。 包com.mycompany.mobile.android.gui; import android.test.ActivityInstrumentationTestCase2; import com.mycompany.mobile.android.gui.AudioPlayerActivity; public class TestMusicPlayerActivityTest extends ActivityInstrumentationTestCase2 { public TestMusicPlayerActivityTest() { super(“com.mycompany.mobile.android.gui”, AudioPlayerActivity.class); } public TestMusicPlayerActivityTest(String name) { super(“com.mycompany.mobile.android.gui”, AudioPlayerActivity.class); } public TestMusicPlayerActivityTest(String pkg, Class activityClass) { super(“com.mycompany.mobile.android.gui”, AudioPlayerActivity.class); } public void testSomething() […]

如何检测java系统类?

我正在尝试向系统类添加自定义行为(FileInputStream / FileOutputStream)。 我使用以下转换方法编写了自定义ClassFileTransformer: public byte[] transform(ClassLoader arg0, String arg1, Class arg2, ProtectionDomain arg3, byte[] arg4) throws IllegalClassFormatException { System.out.println(“class name: ” + arg1); return arg4; } 当我运行示例程序时: public static void main(String[] args) throws Exception { new FileOutputStream(“file”); } 我看到没有系统类没有传递给转换。 有没有办法修改系统类? 提前致谢!

如何使用java方法?

我想编写一个简单的java代理,它可以打印由java程序调用的方法的名称。 例如,我想要的java程序是: public class TestInstr { public static void sayHello() { System.out.println(“Hello !”); } public static void main(String args[]) { sayHello(); sayHello(); sayHello(); } } 我想展示这样的东西: method sayHello has been called Hello ! method sayHello has been called Hello ! method sayHello has been called Hello ! 谢谢你的帮助!