因为里面的东西基本上都写死了,没什么可玩性,就咕咕了,感兴趣可以自己去反编译一下,学习下实现的原理。

本文章,咕咕咕,不再完善了。

序言

因为华子的平板手写功能还算可以,在国内的平板里算是好的,价格也能接受,于是买了一个 Matepad11 2021 款。桌面上默认有一个 WPS for PC 图标,也就是所宣传的:自研PC引擎,打造PC级办公软件。打开后可以看到,是Linux下WPS的界面,在关于里面也确实写着是 WPS for Linux

那么PC引擎是怎么实现的呢?

切入点

要想研究它的原理,肯定是找到相关的代码实现最为靠谱。不妨简单分析一下:

  1. 桌面上的图标被点击后是通过Intent调起应用,那么必定会先由Java层处理(即使是Native方法也是由JVM调起的),既然由Java层处理,那么在Android下必然会存在一个app来包含此操作;

2.同理,既然WPS for PC有桌面图标,则必定存在相关功能APP。

之后,打开应用管理,可以搜索到一个相关应用:《华为 PC 应用引擎》。

华为 PC 应用引擎 的APK分析

话不多说,apktool伺候,简单的java -jar apktool.jar d pc_engine.apk

实现原理简单分析

实际上就是在根目录下建了个文件夹,通过iSula容器引擎实现了一个Linux容器,在里面利用Remote Desktop Procotol实现界面的展示。

相关代码

启动 HslDaemon

1
2
3
4
5
6
7
Intent intent2 = new Intent();
intent2.setFlags(268435456);
intent2.setComponent(new ComponentName("com.huawei.hsl", "com.huawei.hsl.MainActivity"));
Bundle bundle = new Bundle();
bundle.putString("com.huawei.hsldaemon.appName", "HslDaemon");
intent2.putExtras(bundle);
activity.startActivity(intent2)