package com.custom.wangzhi.myapp;
import android.util.Log;
public class TestUtil {
public void print(Class clazz, int t) {
try {
Log.i("print 1 ", "result " + R.layout.class.equals(clazz)
+ " " + R.layout.class.getClassLoader().equals(clazz.getClassLoader())
);
Log.i("print 2 ", R.layout.act1 + " " + clazz.getDeclaredField("act1").get(null)+" "+t);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.custom.wangzhi.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.latzc1);
Log.i("MainActivity1", "wangzhi app " + R.layout.act1);
new TestUtil().print(R.layout.class, R.layout.act1);
}
Log:
11-26 10:07:23.097 7999-7999/com.custom.dynamic.layoutcastdemo I/MainActivity1: wangzhi app 2130968577
11-26 10:07:23.097 7999-7999/com.custom.dynamic.layoutcastdemo I/print1 : result true true
11-26 10:07:23.097 7999-7999/com.custom.dynamic.layoutcastdemo I/print2 : 2130968576 2130968577 2130968577
MainActivity1是一个库模块
如果我在android studio中使用默认设置运行是可以的,但是当我使用layoutcast(我在此进行一些更改)运行时,则打印上面的日志
做什么布局工作:
1.它将找到更改的代码(比较" projectdir / build / outputs / **。apk"' s time)
2.使用aapt包所有资源生成res.zip和R.java
3.use javac,dex all change java file生成dex
4.然后翻译res。 zip和dex到android手机,
5。使用DexClassloader加载dex并生成一个新的Resource,它添加res.zip来替换系统Resource。
6.最后,重新启动应用程序。
我的英语很差,先在stackoverflow中询问,所以如果有人不了解我的意思,请与我联系。非常感谢