加载皮肤包(APK),通过反射获取皮肤包中的资源 包名 skinResources本应用与外部皮肤包资源ID需一一对应
// 创建资源管理器(此处不能用:application.getAssets())
AssetManager assetManager = AssetManager.class.newInstance();
// 由于AssetManager中的addAssetPath和setApkAssets方法都被@hide,目前只能通过反射去执行方法
Method addAssetPath = assetManager.getClass().getDeclaredMethod(ADD_ASSET_PATH, String.class);
// 设置私有方法可访问
addAssetPath.setAccessible(true);
// 执行addAssetPath方法
addAssetPath.invoke(assetManager, skinPath);
// 如果还是担心@hide限制,可以反射addAssetPathInternal()方法,参考源码366行 + 387行
// 创建加载外部的皮肤包(net163.skin)文件Resources(注:依然是本应用加载)
skinResources = new Resources(assetManager,
appResources.getDisplayMetrics(),