Comments (6)
我觉得只能在宿主中使用固定资源id的方法(aaptOption --stable-ids)来规避此问题了,保证宿主中已有的资源id不在变化,这样,插件依赖的时候,就可以保持兼容性
from qigsaw.
CI 上保存上次构建的产物文件,比如 mapping ,res id 等,本次构建时 apply ,理论上可以
不过没实践过 :)
from qigsaw.
这样的话,插件会对宿主有个隐含的依赖,从设计上,插件和宿主分离的就不是那么彻底了
from qigsaw.
问题的具体场景如下:
1、dynamic-feature包依赖了宿主中的一个资源,例如一个layout或者string等(原理类似)2、宿主因为增加功能,例如新增了布局资源,导致这个被依赖的layout的资源id发生了变化
3、那么同一个hynamic-feature包如何同时支持现网老版本的宿主app,以及增加新功能的新版本的宿主app?
因为dynamic-feature包中引用的宿主的那个layout的资源id是跟随宿主编译时,对应的宿主版本layout的id,这个和现网老版本的layout的id是不同的我们业务使用插件化的一个很重要的目的是:通过插件方式为老版本的宿主APP增加功能。
如果这种方式不支持,业务使用插件化的价值就有所降低了。目前看宿主资源id变化的可能性还是很大的,而且不只是自定义资源,android x的资源id,有可能因为宿主修改,也会导致id的变化。
dynamic-feature 是和版本绑定的,如果宿主变了,插件是会重新打包的
from qigsaw.
宿主提供获取资源ID方法, dynamic-feature通过宿主提供的方法获取资源,
或者dynamic-feature通过资源名字获取资源id,然后根据资源id获取资源
from qigsaw.
宿主包变化了,插件包就需要重新构建了吧?插件包和宿主包本来就是有一个依赖关系的呢
from qigsaw.
Related Issues (20)
- splitcore类库里面并没有使用androidx.appcompat:appcompat里的代码,是否可以去掉
- 安装包大小
- 支持flutter 延迟加载吗
- 插件的processDebugResources任务失败,Dependent features configured but no package ID was set
- Qigsaw支持插件动态部署生效吗?还是说需要重启?aab貌似支持资源的动态部署生效,但是代码我试了下好像是要重启生效
- Qigsaw兼容Gradle 插件 4.1.0吗? HOT 2
- qigsaw支持AGP7.0吗 HOT 3
- 支持AGP4.2? HOT 1
- NPE NdkHandler找不到? HOT 2
- com.google.android.play.core的源码在哪下? HOT 1
- 并不支持 AGP 4.1.0+; 经测试,最多支持到 4.0.0 HOT 2
- 已经依赖了com.google.android.play.core的项目,报Duplicate class
- short类型传值出错!
- 配置文件的json(qigsaw.json)为啥要放assets下呢?
- 插件加载后,应该如何释放啊? HOT 1
- 还更新吗? HOT 2
- 插件化数据传递和通信的问题
- 竖屏转换为横屏后,报资源找不到错误 HOT 1
- AAPT error resource not found
- 不支持DataBinding吗
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from qigsaw.