【问题标题】:Provide the code of Parcelable objects to AIDL clients向 AIDL 客户端提供 Parcelable 对象的代码
【发布时间】:2013-05-07 16:10:53
【问题描述】:

文档说明:

如果您想通过 IPC 接口将一个类从一个进程发送到另一个进程,您可以这样做。但是,您必须确保您的类的代码可用于 IPC 通道的另一端,并且您的类必须支持 Parcelable 接口。

如果我向客户提供.java 文件,一切正常。但我想知道是否有办法传递.class 文件,或者任何其他方式来隐藏源代码。

【问题讨论】:

    标签: android ipc parcelable aidl


    【解决方案1】:

    但我想知道是否有办法传递 .class 文件或任何其他方式来隐藏源代码。

    运送一个包含您的 Parcelable 类的 JAR 应该可以,虽然我还没有尝试过。

    另外,请记住版本控制会成为一个问题——如果您更改了这些类,但它们没有更新其 JAR,该怎么办?这种复杂性是我不建议以这种方式在应用程序之间分配 Parcelable 对象的原因。

    【讨论】:

    • 如果他们不更新我提供的.java,我不会有同样的问题吗?
    • @cYrus:是的。这就是为什么我不建议以这种方式在应用程序之间分配 Parcelable 对象的原因。
    • 还有其他选择吗?我定义了一个使用 Parcelable 对象作为参数的 AIDL 接口。这个接口被客户端应用程序使用,你有什么建议部署它?
    • @cYrus:不要使用自定义 Parcelable 定义 AIDL 接口。传递简单值(整数、字符串等)或使用平台提供的Parcelable 类,如Bundle。或者,永远不要更改自定义 Parcelable 类的定义。或者,完全放弃 AIDL 并切换到带有服务的命令模式(startService()Intent extras)。
    • 另一条评论 - 因为您正在定义 Parcelable,您可以并且可能应该在包裹化表示中添加一个版本号。然后至少接收者可以检测到错误,而不是曲解数据和崩溃(或更糟糕的是,暴露安全漏洞)。
    猜你喜欢
    • 2015-01-06
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2018-08-08
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多