-
Notifications
You must be signed in to change notification settings - Fork 110
Open
Labels
P0首要任务 / Highest Priority首要任务 / Highest Priorityenhancement新的特性或请求 / New feature or request新的特性或请求 / New feature or request
Description
问题背景
对于Java源来说,安卓端的源是主流,但由于环境差异,安卓源要简单、无痛地兼容到PC端极为困难,这个需求还是挺重要的,本人能力有限,非常希望有路过的大佬们来参与讨论。
为什么要兼容安卓源
- 安卓源是主流,虽然不难迁移到PC端,但指望大家全都这样做毕竟不现实;
- 为以后要开发的功能做准备。
我观察到的安卓源现状
- 绝大多数基于CatVodSpider安卓项目;
- 绝大多数使用proguard进行了混淆;
- 部分在播放时存在解析行为;
- 部分较多依赖android环境,体现为在app内弹出通知、弹出二维码、弹出输入框等。
我尝试过/正在考虑的兼容方案
1. 改壳
修改现有的影视壳,加入与FreeBox连接的代码,让用户自己在手机上装一个app加载安卓源:
这个方案已经实现(TVBox-K),但效果不好,后面还准备去改其他的壳。- 已基于FongMi TV移动端开发了“影视-K”,目前还存在一些兼容问题,正在逐步完善。
2. jar包反编译+动态代理
通过自定义类加载器,反编译jar包,通过jadx、dexlib2、asm等库将jar包里面的classes.dex转换为JVM字节码,通过替换类加载路径的方式,对少量不痛不痒的android代码进行桥接,从而直接支持安卓源:
- 由于大部分jar包都存在混淆,加上其他一些对android环境有强依赖的源,导致实现难度极高,不好操作。
3. 虚拟化 + 容器
通过虚拟化 + 容器技术,在用户PC上拉取安装docker/podman,再拉取完整的android运行环境,让容器作为后端与FreeBox进行通信:
- 好处:可以彻底解决兼容问题,且足够稳定;
- 坏处:安装繁琐,很难实现用户无感知;体积庞大,吃内存;虽然比起直接安装市面上的模拟器还是要好一些,但需要为易用性耗费很多工作量。
Metadata
Metadata
Assignees
Labels
P0首要任务 / Highest Priority首要任务 / Highest Priorityenhancement新的特性或请求 / New feature or request新的特性或请求 / New feature or request