Comments (3)
不管是loader还是什么部分,它能动态化完全是基于classloader查找类的原理实现的。不同classloader加载的同名类压根就不是一个类。宿主和插件或者loader等都是不同classloader加载的,它们各自打包了什么类根本不相关。让它们协作起来就是设计好跨classloader查找类的方案,典型的例子就是双亲委派机制。
多个loader之类的问题有很多种解决方案。如果多个插件的loader总是同一份代码,那它们似乎就是同一个uuid发布的一套插件,只是partkey不同。uuid主要是标识各部分是同一个版本,可以协同工作。如果是不同版本或业务总是复用同一个part,那可以在下载和打包层面复用文件,为相同文件分配新的uuid就可以了。插件管理这块和业务相关性比较大,自己完全重新实现也是可以的,不会和shadow的主要代码有什么冲突。我其实想把manager删掉,引入一个开源的管理库来代替这块功能。但没找到合适的。
from shadow.
感谢指教,明白了您说的了,谢谢。
from shadow.
你们是每个插件.apk、Loader.apk、Runtime.apk都放到zip包里吗?感觉维护起来很麻烦,每次都要打3个apk。
我想把把Loader 和 Runtime 直接集成到Host里面。 如果zip包里没有Loader.apk就默认使用Host的,如果有,则使用zip包里的,不知这种方案是否可行呢?
from shadow.
Related Issues (20)
- 已知问题:IDE中直接Run sample-host会失败
- Android12(API = 31) 在 loadPlugin 时出现Runtime::Abort, 猜测异常与 dex 创建有关 HOT 3
- 最近在研究Shadow,建了个wx群,方便沟通 HOT 2
- 项目里引用了插件化,在应用市场上架的时候需要规避那些问题?有没有大佬指导一下,非常感谢
- ./gradlew packageDebugPlugin HOT 1
- 请教下:运行test-none-dynamic-host模块,启动的插件还是在宿主进程的问题。 HOT 4
- 插件manager中的view如果有ProgressBar,但是宿主不显示ProgressBar HOT 4
- 插件apk没有用到四大组件,有必要弄成多进程吗? HOT 2
- 宿主获取插件Fragment可显示,宿主跳转到插件FragmenActivity报错,请指教 HOT 2
- 执行sample-app报错,要怎么解决? HOT 2
- 插件内可以调用qq分享吗?
- androidx.profileinstaller.ProfileVerifier安全校验失败? HOT 1
- 请问 normalImplementation 是只有Shadow才有的吗? HOT 2
- 宿主启动多插件 HOT 1
- Caused by: java.lang.ClassCastException: androidx.appcompat.widget.ContentFrameLayout cannot be cast to androidx.appcompat.widget.ContentFrameLayout HOT 2
- java.lang.VerifyError: Rejecting class com.demo.pluginmanager.UpPluginManager that attempts to sub-type erroneous class com.demo.pluginmanager.FastPluginManager (declaration of 'com.demo.pluginmanager.UpPluginManager' appears in /data/user/0/com.demo/files/upshadowmanager-release-1.3.4.2023070701.apk) HOT 3
- Caused by: java.lang.UnsupportedOperationException: Can't convert to color state list: type=0x1 at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2718) at android.content.res.Resources.loadColorStateList(Resources.java:2699) at android.content.res.TypedArray.getColorStateList(TypedArray.java:485) at android.widget.TextView.<init>(TextView.java:746) at android.widget.TextView.<init>(TextView.java:671) at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:102) at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:97)
- shadow经过线上上亿用户的检验,想咨询下
- 希望添加 jni 调用的演示示例 HOT 2
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 shadow.