Skip to content

【作者求助/公开讨论】❗ 更好的安卓源兼容方案 ❗ #100

@kknifer7

Description

@kknifer7

问题背景

对于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 Priorityenhancement新的特性或请求 / New feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions