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.