TangLiangs

Results 2 comments of TangLiangs

关键在于这段代码:classpath 'com.android.tools.build:gradle:3.2.1' Replugin在执行的时候反射调用了AppPlugin, BasePlugin中的taskManager属性。 从3.6.1开始,AppPlugin和BasePlugin的位置被移动了。 所以需要保持gradle:tools版本在3.5.x就行了。 当然也可以通过修改Replugin源码中的gradle:tools版本跟自己项目一致来实现

Replugin在打包的时候,会重写attachBaseContext(newBase)方法。这里的newBase原本是ActivityThread给Activity创建的ContextImpl对象,Replugin把它换成了PluginContext。Activity就是通过使用PluginContext中的Resources加载插件中的资源。 你这里修改配置,只是针对原本的ContextImpl的Resources的修改,所以对于插件是无效的。 正确的做法应该从newBase中获取配置,设置给PluginContext的Resource。并且这个操作应该放到super.attachBaseContext(newBase)之后执行,这个时候才能通过getBaseContext获取到PluginContext。 ```java @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); Configuration config = newBase.getResources().getConfiguration(); DisplayMetrics display = newBase.getResources().getDisplayMetrics(); getBaseContext().getResources.updateConfiguration(config, display); } ```