tiann / FreeReflection

A library that lets you use reflection without any restriction above Android P
MIT License
2.88k stars 533 forks source link

测试在反射调用 dalvik.system.DexPathList失败 #13

Closed WangYinuo closed 5 years ago

WangYinuo commented 5 years ago

Class dexPathListClass = Class.forName("dalvik.system.DexPathList"); Constructor con = dexPathListClass.getConstructor(ClassLoader.class, String.class, String.class, File.class); Log.i("looog", "name:" + con.getName()); Object dexPaths = con.newInstance(context.getClassLoader(), path, path, dir_path); 在newInstace时抛异常

日志如下 01-22 23:49:59.241 10339 10339 D OpenGLRenderer: Skia GL Pipeline 01-22 23:49:59.264 10339 10339 I FreeReflect: runtime ptr: 0xf072d400, vmExtPtr: 0xf071d3e0 01-22 23:49:59.264 10339 10339 I FreeReflect: found offset: 360 01-22 23:49:59.264 10339 10339 I FreeReflect: offsetOfVmExt: 360 01-22 23:49:59.264 10339 10339 I FreeReflect: found offset: 796 01-22 23:49:59.264 10339 10339 I FreeReflect: target: 796 01-22 23:49:59.264 10339 10339 I FreeReflect: is_java_debuggable: 1, is_native_debuggable: 0, safe_mode: 0 01-22 23:49:59.264 10339 10339 I FreeReflect: hidden api policy before : 2 01-22 23:49:59.264 10339 10339 I FreeReflect: fingerprint: google/sailfish/sailfish:9/PPR1.180610.009/4898911:user/release-keys 01-22 23:49:59.264 10339 10339 I FreeReflect: hidden api policy after: 0 01-22 23:49:59.266 10339 10339 I looog : dexPath:/data/user/0/com.example.sdktesthost/app_dex/plug_dex.jar 01-22 23:49:59.267 10339 10361 I looog : name:dalvik.system.DexPathList 01-22 23:49:59.268 10339 10361 W System.err: java.lang.IllegalAccessException: java.lang.Class<dalvik.system.DexPathList> is not accessible from java.lang.Class<com.example.sdktesthost.Reflect> 01-22 23:49:59.268 10339 10361 W System.err: at java.lang.reflect.Constructor.newInstance0(Native Method) 01-22 23:49:59.269 10339 10361 W System.err: at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 01-22 23:49:59.269 10339 10361 W System.err: at com.example.sdktesthost.Reflect.run(Reflect.java:31)

WangYinuo commented 5 years ago

sorry 排了版还是很乱

WangYinuo commented 5 years ago

sorry 误报 设置setAccessible(true)后就可以了