If I want to add my own View Descriptor, I have to remove the default one via reflection:
Stetho.InitializerBuilder initializerBuilder = Stetho.newInitializerBuilder(application);
DescriptorProvider descriptorProvider = descriptorRegistrar -> {
if (descriptorRegistrar instanceof DescriptorMap){
try{
DescriptorMap descriptorMap = (DescriptorMap) descriptorRegistrar;
//Remove previous View descriptor, because there can only be one per (View) type
Field fMap = DescriptorMap.class.getDeclaredField("mMap");
fMap.setAccessible(true);
Map map = (Map) fMap.get(descriptorMap);
map.remove(View.class);
} catch (IllegalAccessException | NoSuchFieldException e){
System.err.println(e);
}
}
descriptorRegistrar.registerDescriptor(View.class, new CustomViewDescriptor());
};
AndroidDocumentProviderFactory factory = new AndroidDocumentProviderFactory(application, Collections.singletonList(descriptorProvider));
InspectorModulesProvider inspectorModulesProvider = () -> {
Stetho.DefaultInspectorModulesBuilder inspectorModulesBuilder = new Stetho.DefaultInspectorModulesBuilder(application);
inspectorModulesBuilder.documentProvider(factory);
return inspectorModulesBuilder.finish();
};
initializerBuilder.enableWebKitInspector(inspectorModulesProvider);
Stetho.initialize(initializerBuilder.build());
It would be nice if there would be a AndroidDocumentProviderFactory that allows to skip adding of specified classes. Another approach would be to allow multiple Descriptors for the same type
If I want to add my own View Descriptor, I have to remove the default one via reflection:
It would be nice if there would be a AndroidDocumentProviderFactory that allows to skip adding of specified classes. Another approach would be to allow multiple Descriptors for the same type