【发布时间】:2012-05-31 10:43:16
【问题描述】:
我正在编写一个仪器库,我想在桌面和移动设备 (Android) 上工作。
它的作用是:
- 公开一个采用单个参数的 main,即目标类的 main
- 安装一个类加载器,它会在加载所有类时拦截它们并检测它们
像这样:
// Expects args[0] to contain the name of the INNER main
public static void main(String[] args) throws Throwable {
String className = args[0];
String [] newArgs = new String[0];
if(args.length > 1) {
newArgs = Arrays.copyOfRange(args, 1, args.length-1);
}
System.out.println("Bootstrapping " + className);
Loader s = new Loader(ClassLoader.getSystemClassLoader().getParent());
Class<?> c = s.loadClass(className);
c.getDeclaredMethod("main", new Class[] { String[].class }).invoke(
null, new Object[] { newArgs });
}
问题是这样的:
我怎样才能为安卓应用做大致相同的事情?
一个想法是修改 android 清单以用“包装”活动替换现有活动,然后安装类加载器并调用原始底层活动。有没有更好的办法?
【问题讨论】:
标签: java android reflection mobile javassist