如何制作插件数据APK?

时间:2018-05-28 13:50:58

标签: android

我的目标是拥有一个主应用程序和一系列独立的独立数据包,这些数据包可以按需提供为APK,并且每个都在Play商店中有自己的条目。完全取决于用户,他们需要安装哪些以及多少这些用户。想想语言包,键盘布局,词典,这类事情。应用程序将始终检查安装了哪些数据包,并让用户选择使用哪个数据包。

我认为数据APK不会提供任何活动,但会包含允许访问某种Service的{​​{1}}。但这对我来说都是新手,而且很多术语让我感到困惑:这是receiver吗?一个provider?这些似乎都在某种程度上符合我的目的。我是否需要在后台运行此服务(每个数据包一个),等待广播呼叫,或者我可以以某种方式通知Android它存在,所以当这个特定查询来自我的应用程序时它会启动吗?

如果不需要在后台运行任何东西,甚至在列表阶段,可能是理想的。然后将选择一个数据文件,并且只有在访问数据时,相应的APK才会运行。所有数据包都是相同的类别(字典),除了提供一些静态元数据然后提供对原始文件的访问权限之外,不需要提供任何其他功能。

我能找到的所有信息都与"扩展APK" s相关,但这与我想要的正交。

1 个答案:

答案 0 :(得分:1)

  

我认为数据APK不会提供任何活动,但会包含允许访问某种ContentProvider的服务。

您无需Service即可访问ContentProvider

  

这是接收器吗?提供者?

我不知道那句话中的“这个”是什么。 ContentProvider在清单中使用<provider>元素。 Service使用清单中的<service>元素。

  

我是否需要在后台运行此服务(每个数据包一个),等待广播呼叫,或者我可以以某种方式通知Android它存在,所以当这个特定查询来自我的应用程序时它会启动它吗?

以上都不是。您的主应用通过PackageManager了解这些“数据包”APK的存在。例如,您可以对这些“数据包”APK的应用程序ID /包名称使用标准命名约定,然后使用getInstalledPackages()找出安装了哪些“数据包”APK。

从那里,你可以:

  • Use createPackageContext()访问“数据包”中的资源和资源

  • 生成指向“数据包”APK Uri的{​​{1}},然后使用ContentProvider访问由APK发布的内容(例如ContentResolveropenInputStream()

  • 使用其他形式的IPC(广播,已启动服务,绑定服务)与“数据包”进行交互

  

所有数据包都是相同的类别(字典),除了提供一些静态元数据然后提供对原始文件的访问权限之外,无需提供任何其他功能。

我不知道你为什么要通过Play商店以APK文件的形式发布这些资料。只需以一些方便的格式(例如,ZIP存档)从您自己的Web服务器下载资料。