Android 如何开发具有附加组件的应用程序?

Android 如何开发具有附加组件的应用程序?,android,Android,有没有关于你将如何开发一个有“附加组件”的应用程序的大纲或入门书 例如,如何开发某种框架,将“主题”添加到应用程序中 有两个主题的基本应用程序。用户应该能够为某个主题下载另一个应用程序 原始应用程序和新下载的应用程序是如何结合在一起的 您将如何开发原始应用程序以从第二个仅限主题的应用程序中获取主题信息和图形资产 我的理解是,应用程序是完全独立的,因此我不清楚如何实现这一点。我认为,在这种情况下,最干净的设计是在市场上有一个应用程序,并在您自己的服务器上提供主题。然后用户可以从市场上下载一次应用程

有没有关于你将如何开发一个有“附加组件”的应用程序的大纲或入门书

例如,如何开发某种框架,将“主题”添加到应用程序中

有两个主题的基本应用程序。用户应该能够为某个主题下载另一个应用程序

原始应用程序和新下载的应用程序是如何结合在一起的

您将如何开发原始应用程序以从第二个仅限主题的应用程序中获取主题信息和图形资产


我的理解是,应用程序是完全独立的,因此我不清楚如何实现这一点。

我认为,在这种情况下,最干净的设计是在市场上有一个应用程序,并在您自己的服务器上提供主题。然后用户可以从市场上下载一次应用程序,然后应用服务器上可用的主题

但是,如果您希望将它们作为单独的市场条目,您可以在清单上设置android:sharedUserId标志,使它们在相同的用户ID下运行,这将允许您在它们之间共享文件(位图等)。请记住,它们都必须使用相同的证书签名

用户可能会感到困惑的是,他们将能够在下载主应用程序之前下载附加组件。。。在这种情况下,您必须显示一条错误消息,要求他们下载主应用程序

原始应用程序和新下载的应用程序是如何结合在一起的

对于一个主题,谁说他们必须一起讨论

您将如何开发原始应用程序以从第二个仅限主题的应用程序中获取主题信息和图形资产

步骤#1:为包选择命名约定。例如,如果您的基本应用程序是
com.abc.app
,则您的主题可以是
com.abc.app.theme.*

步骤2:当用户选择主题时,使用
PackageManager
getInstalledApplications()
通过检查主题的包名来查找主题

步骤3:当需要使用主题时,在
PackageManager
上调用
getResourcesForApplication()
以获取主题应用程序的
资源,这样您就可以开始使用自己的东西了


我确信有一些策略(例如,主题主要是一个传送带,将其内容部署在外部存储的目录中,您的主应用程序可以从中读取信息),但这是我首先考虑的策略,因为它需要最少的用户干预。

我同意“在您自己的服务器上提供主题”方法——我假设OP出于某种原因考虑并驳回了这一点。然而,
sharedUserId
是有风险的,因为它的任何更改都意味着你的应用程序不能再读取它自己的文件。
sharedUserId
是否也可以制作一个“完整”版本的应用程序,只作为主应用程序的一个键来启用功能?没有“服务器”lol。我同意从外部源下载会很好,但这不是一个选择。我试图模仿市场上的其他应用程序,你会看到“应用程序YYY的主题XXX”。这些不是完整的应用程序,而是它们的附加组件。SharedUserID选项看起来不错。我会尽快研究并接受答案。关于“PackageManager上的getResourcesForApplication(),以获取主题应用程序的资源”…您可以对自己之外的应用程序执行此操作吗?我是否需要实施某种安全功能,以确保只有我的应用程序才能访问这些资源,而没有其他第三方应用程序可以访问这些资源?这将是我开始工作所需要的缺少的部分。@CamilleSévigny:“你可以对自己之外的应用程序执行此操作?”--是的。“我是否需要实施某种安全功能,以确保只有我的应用程序才能访问这些资源,而其他第三方应用程序无法访问?”--所有应用程序的所有资源都可以被所有应用程序读取,无论你喜欢与否。“所有应用程序的所有资源都可以被所有应用程序读取,无论你喜欢与否。”…不是开玩笑。我不知道。谢谢你的回复。@CamilleSévigny:是的,当我第一次意识到这一点时,我感到非常震惊。我已经测试过了(创建了一个包含资源图片的包,等等),然后从主应用程序中读取了包资源。这很有效!:)