java 插件式架构,java-通过服务替代方案的插件体系结构

Are there better ways to approach this problem?

您必须以源形式发送AIDL.那是一个接口.然后,您不必分别拥有另一层接口. AIDL中引用的Java类的实现可以在JAR中.

话虽这么说,由于版本管理,野马无法让我做您正在做的事情.

除非您计划用枪口手段阻止第三方,否则您不能强迫他们升级其JAR版本.因此,您要么:

>永远不能更改这些类别,或者

>必须非常仔细地管理版本控制,例如每个版本具有单独的IPC端点,以便您的核心代码可以处理具有JAR任意版本的第三方代码的任意版本

Are there demo projects out there that have already addressed this challenge (i.e. all 3 goals outlined above) successfully and can be used as a reference or tutorial?

您可以通过Android的任何IPC机制来实现您的目标:

>提议使用自定义类的绑定服务

>仅使用股票类的绑定服务,例如String和List and Bundle

>具有服务的命令模式(即,通过startService()发送命令)

>广播意图

>内容提供商

>活动

您遇到困难的关键在于以下假设:

I need to return my own classes

我将完全翻转为:您应该坚持用于实际IPC的标准Android类,您和第三方代码都可以识别并可以使用的类.

它仍然具有您需要执行的版本管理,但取决于更常规的“清理输入”逻辑,即您对任何Web服务或其他公开API进行处理的方式.而且,如果您想在源代码或JAR中附带一些“帮助程序”代码以简化API的使用,那很酷,因为您不再依赖于JAR中这些类的特定版本.

就“演示项目”而言,这完全取决于您要创建哪种API.