Shadow Versions Save

零反射全动态Android插件框架

2.1.2

1 year ago

通过cherry-pick向2.1.1版本补充两个bug fix。

Full Changelog: https://github.com/Tencent/Shadow/compare/2.1.1...2.1.2

2.3.0

2 years ago

What's Changed

Bug Fixes

  • coding.code-generator: PluginActivity声明ComponentCallbacks2接口 3d8a6d9
  • core.gradle-plugin: 修复AGP 3.1.0及更高版本的兼容性 5a3227b, closes #757
  • core.gradle-plugin: 支持从低版本AGP中获取Manifest b040630, closes #747
  • core.loader: ShadowApplication初始化setShadowApplication 5b95a0a
  • core.manager: 查询最新安装的插件时以改为自增ID为依据 bb5dd60
  • core.manager: 判断zip插件包是否已解压时不再依赖tag文件 522071a, closes #691
  • core.manager: 修复插件解压so的错误逻辑 307800c, closes #724 #729
  • core.manager: API 26保留odex过程 6895eef, closes #828
  • core.manager: partKey不正确时及时抛出异常 4a2542d, closes #114
  • core.runtime: 修复Receiver的actions为空的NPE 68d54d9, closes #755
  • core.runtime: ActivityLifecycleCallbacks与其Wrapper映射Map采用弱引用实现 bbf317f
  • core.runtime: BroadcastReceiver与BroadcastReceiverWapper映射Map采用弱引用实现 d2f3995
  • core.runtime: ReceiverWrapperMap改为由ShadowApplication持有的单例 061e4aa, closes #865
  • core.transform-kit: 忽略根目录的module-info.class cecc4ce, closes #704

Features

  • 升级compileSdkVersion到31 72ce18c, closes #868
  • 支持消费Shadow时使用Gradle 7.2与AGP 7.1.1 1caa475, closes #799
  • core.gradle-plugin: 不再需要设置apkName d0d0b92, closes #725
  • core.gradle-plugin: 当Shadow dimension被覆盖时报错提示 3283216, closes #811 #871
  • core.gradle-plugin: 对kotlin-android插件应用顺序要求作出提示 669f8b5, closes #745
  • core.loader: 从宿主复制PackageInfo.permission到插件 7d99d76, closes #824
  • core.loader: 找不到PluginManifest时提示应用插件 445f4d9, closes #734
  • core.loader: 支持Context.getPackageCodePath 50678f5, closes #816
  • core.manager: 固定getAbi实现 97b1d84
  • core.manager: 支持extractNativeLibs="false"时不解压so b4dc172, closes #739
  • core.manager: API 26以上跳过odex相关逻辑 f777cae
  • core.manifest-parser: 实现编译期解析插件Manifest生成java类 8a99c4f, closes #696
  • core: 支持插件ProviderInfo读取grantUriPermissions字段 11a71f0
  • core: 支持PackageManager#getProviderInfo方法 e41153d
  • dynamic-loader-impl: PluginLoader接口支持跨进程抛出异常 d26ced6, closes #802

Performance Improvements

  • 优化主线程判断代码 7b366f5
  • core: 去除加载插件对getPackageArchiveInfo的依赖 c8185fd, closes #696

New Contributors

Full Changelog: https://github.com/Tencent/Shadow/compare/2.2.1...2.3.0

2.2.1

2 years ago

2021-11-18

Build System / Dependencies
  • 去掉对ANDROID_HOME环境变量的依赖 (f80ece3a)
  • 去掉所有jar-wrapper工程 (089e026f)
  • 添加CommonAarSettingsPlugin (c6399458)
  • 添加AarToJarPlugin (bf339709)
  • 升级Gradle到7.0.2,AGP到7.0.3,kotlin到1.5.31 (87ba9690)
Chores
  • 去掉AutoMakeMissingClassPool的测试用例 (9575fcdb)
  • 升级maven sample依赖Shadow版本到2.1.1 (9de3cdce)
New Features
  • core.gradle-plugin: 自动创建Flavor,并只在plugin上应用Transform (e38755ec)
  • 从AndroidManifest中解析Receiver的action信息 (d27e984a)
  • 支持NativeActivity (b3c9a9e9)
  • core: support PackageManager getServiceInfo and resolveService (cf8a22f9)
  • core.transform: ShadowTransform声明为支持build cache (7aa65f71)
Bug Fixes
  • core:
    • 支持Fragment override getContext方法 (ea59e394)
    • 插件Activity在getSystemService时默认委托给宿主Activity (80bc328f)
    • 插件的LayoutInflater改为总是从Context取单例 (10ce0228)
  • transform-kit: debugWriteJar时忽略META-INF/目录文件 (55283721)
  • core.loader: 像普通ClassLoader一样优先findLoadedClass (a335b190)
  • core.transform: newMethod引用当前类名时使用Placeholder (d4b6e9e8)
  • core.runtime:
    • 补全Service的3参startForeground方法 (85c80f52)
    • 支持Application.getProcessName()方法 (a75c81cd)
  • core.transform-kit: Transform启动前清空debug用的临时目录 (d9fd8cdb)
  • core.manager: 提供释放db接口,去掉getLastPlugins中关闭db的操作 (a499e0d5)
Performance Improvements
  • core.loader: 插件ClassLoader白名单采用前缀树进行匹配 (cc8f6d09)
Refactors
  • dynamic: 抽出dynamic-apk模块以便复用于其他动态加载apk的场景 (159ab134)
Tests
  • 修复API 29以上虚拟机自动化测试 (352561d6)

2.1.0

3 years ago