我应该扩展这个问题,询问Android服务是否可以从.jar文件中执行,就像在.apk中创建时一样? 此外,如果从.jar运行,它是否拥有自己的应用程序空间......它是自己的PID? 它会使用自己的包名生成logcat条目吗?
这是背景。 目前的实施: serviceA是一个仅提供Android服务的.apk。 libA是一个.jar,它为serviceA提供整个接口。它提供API来启动/停止服务,从服务检索数据,将数据发送到服务。 libA和serviceA通过Intents进行通信。
将libA和serviceA分发给其他开发人员以编写前端Android活动应用程序。 因此,开发人员将创建一个使用libA接口作为serviceA服务接口的Android应用程序,让我们称之为前端应用程序appA。 对于运行时,这需要安装两个apks,即appA和serviceA。
启动时,appA和libA位于同一个应用程序空间,并共享相同的PID。 当服务启动时,serviceA获得它自己的应用程序空间,它是自己的PID。
请求实施: 现在我们有一个团队,不想安装两个apk,appA和serviceA(不要问 - 我们必须遵守这个)。 所以我们需要将serviceA移动到jar文件中。 但是我们的初始测试导致serviceA和appA现在具有相同的PID。 如果appA崩溃或被强制停止,服务就会消失,这对我们不利。 我们希望服务再次位于自己的应用空间中,如果前端消失则不会受到影响。
因此,serviceA可以存在于分布式的.jar中,并且服务本身仍在其自己的应用程序空间中运行,并且所有这些都打包在一个apk中吗?