温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
知识 2024-02-02 36 次阅读

安卓10兼容性如何?如何以适应Shadow开发?

在安卓10的研发过程中,Shadow团队致力于打造兼容性强的开发环境,以保障设备在各种场景下的稳定运行。我们专为安卓10进行了深度适配,优化了系统性能,提高了兼容性,让更多应用在Shadow设备上得以顺畅运行。通过不断优化和改进,我们期待为全球用户带来更优质的使用体验。

Shadow是一个轻量级的Java库,可以用于将安卓应用程序的代码转换为可以运行在远程服务器上的Java代码,通过远程服务器执行代码来提高安卓应用程序的性能和安全性。在安卓10系统中,由于安卓平台的变化和加强的安全限制,可能会影响Shadow的正常运行,需要进行一些兼容性处理。本文将介绍如何在安卓10上使用Shadow进行兼容。

安卓10对安全限制的加强主要体现在以下方面

1.更严格的应用程序权限控制。

2.更严格的后台处理限制。

3.对非SDK接口的限制。

这些变化使得Shadow在安卓10中运行时可能会存在一些问题。

Shadow的工作原理是利用了Java Reflection机制,首先需要在安卓客户端应用程序中引入Shadow的库文件,在启动应用程序时,使用Shadow的库文件读取自己的DEX文件,并将程序的类加载器替换为Shadow的自定义类加载器。接着,将代码转换为可以被网络传输的数据,并发送到服务端执行。服务端执行完毕后,将结果返回,客户端将结果解码,并通过Shadow的自定义类加载器执行数据。

但是,在安卓10上,由于Shadow需要使用Java Reflection进行方法调用,因此有可能出现以下问题

1.应用程序权限控制问题安卓10引入了Scoped Storage,该特性限制了应用程序对本地文件系统的访问,程序无法在外部存储设备上执行文件读写操作。所以呢,Shadow需如果要把JAR文件放在应用资产中,如劫持类名需要用到的类文件和所有第三方依赖项。

2.后台处理限制问题在安卓10中,应用程序被限制在后台的活动时间,这使得在后台执行的Shadow代码被杀死了。为了解决这个问题,需要使用WorkManager或JobScheduler组件来促进应用程序的前台通知。

3.限制非SDK接口问题安卓10推出了Adaptive Battery和Adaptive Brightness特性,限制了如WidgetProvider等非SDK接口的使用,这也可能影响到Shadow的正常运行。

所以呢,要在安卓10上使用Shadow

1.Shadow需要重新打包成一个包含所有依赖项和类文件的jar包,并把它放在应用程序的资产文件夹中。

2.由于Shadow现在需要使用前台服务,因此需如果要实现前台服务通知以保持服务不会被杀死。最好使用JobService组件来实现这一点。

3.在安卓 SDK 28及更高版本中,需要明确声明非SDK接口,才能在应用中使用它们。所以呢,应该在安卓Manifest.xml文件中包含这些声明。

最后,当您完全解决了以上三个问题,您就可以成功地在安卓10上使用Shadow进行操作,提高应用程序的性能和安全性。