Comments (6)
feature模块编译时R文件只从当前模块里面找,这个改当项目缺失比较恶心了
from qigsaw.
除了这个问题之外,你可能还会遇到 feature module单独依赖的 library module在引用宿主资源时候,能编译过但会触发运行时崩溃。这两种问题都能通过改R文件路径来解决。
除了改为全路径外,还可以从生成完的R文件下手,有两种策略:
- 第一种是将 feature module 里生成的所有 R.java 类都继承 base module里面的 packageName/R.java 类
- 第二种是手动将 base module里的 packageName/R.java 文件和 feature module 目录下所有生成的R文件全部合并
from qigsaw.
除了这个问题之外,你可能还会遇到 feature module单独依赖的 library module在引用宿主资源时候,能编译过但会触发运行时崩溃。这两种问题都能通过改R文件路径来解决。
除了改为全路径外,还可以从生成完的R文件下手,有两种策略:
- 第一种是将 feature module 里生成的所有 R.java 类都继承 base module里面的 packageName/R.java 类
- 第二种是手动将 base module里的 packageName/R.java 文件和 feature module 目录下所有生成的R文件全部合并
==================================================
这个方案在gradle 3.4的时候可行,但在gradle 3.6后,没有R.java这个中间产物了,会直接生成R.jar,这个时候有什么好的策略吗
from qigsaw.
对于没有R.java直接生成R.jar的编译,这边尝试着修改字节码,移除base module的final,让feature module R.class继承base R.class。
测试可行
from qigsaw.
对于没有R.java直接生成R.jar的编译,这边尝试着修改字节码,移除base module的final,让feature module R.class继承base R.class。
测试可行
请问具体怎么实现呢,我在feature module里面 用asm让 feature modue的R继承了base module的R 但是编译期间还是提示找不到符号
from qigsaw.
对于没有R.java直接生成R.jar的编译,这边尝试着修改字节码,移除base module的final,让feature module R.class继承base R.class。
测试可行请问具体怎么实现呢,我在feature module里面 用asm让 feature modue的R继承了base module的R 但是编译期间还是提示找不到符号
用ASM也可以,我是用Javassist,添加个修改R.jar的task,对于base模块,先解压原本的R.jar,然后移除class的final,不然没法继承,再重新打包成R.jar,替换。对于feature模块,就直接修改为继承base的R就好
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.