0

我有一个小型 Android 应用程序,它根据手头的特定任务使用不同的文件集(几个图像、一个小型 SQLite DB 和几个 XML 文件)。

我知道我可以使用资源或资产将我的文件包含到主应用程序 APK 中,但我很乐意将它们分发到单独的 APK 中。

如何创建纯数据 APK 文件?

我该如何分发它?特别是,我是否必须为纯数据包做任何特别的事情(例如,以某种方式将其与主应用程序包相关联)?

(我打算给用户一个数据包的链接,让他安装。不需要自动安装。)

如何将我的文件安装到应用程序的内部或外部存储区域?是否可以将文件安装到主应用程序安装程序创建的内部存储区域?我是否必须为此设置任何特定权限?

4

2 回答 2

1

我的方法是创建一个包装应用程序,它只是一个内容提供者,并根据您的主应用程序的请求提供文件。这将允许您为用户提供不同的数据包——您甚至可以相对轻松地让您的主应用程序在这些数据包之间进行选择。

于 2012-11-28T19:14:02.613 回答
1

看起来,让同一个应用程序具有不同内容(或样式或配置)的普遍接受的方式是使用 Android 库项目的公共代码(即:整个应用程序、“引擎”、“应用程序框架”)和内容的标准 Android 应用程序项目(即:实际上只包含数据的应用程序)。有点混乱,只是因为这里的“库”实际上是整个“应用程序”,但这似乎是要走的路。

更详细:

  1. 创建一个 Android 库应用程序并在其中放入尽可能多的代码(所有不变的东西)。请注意,此库无法启动,也无法单独分发。它必须包含在托管应用程序中。
  2. 创建一个标准的 Android 应用程序。将您的库包含到此项目中。将所有数据(文件、XML 等)放入 /res 和 /asset 中。
  3. 编译一切并分发。

每次需要不同版本时重复此循环。由于数据、样式、配置或其他任何因素而有所不同。使用新名称发布生成的应用程序。

至于我,我对这种方法并不完全满意。

一种可能的替代方法是使用 Ruby、Python、Perl、GIT、bash、Ant、Maven、Rake 或任何其他能够从此处读取文件、在此处和此处进行一些更改并在此处写入文件的工具对源代码进行预处理.

大致的轮廓是这样的:

  1. 制作一个“模板”应用程序。将您的 /res 和 /asset 留空。
  2. 运行自定义脚本。该脚本读取配置文件,将 /res 和 /asset 文件从存储库复制到项目 /res 和 /asset 目录,更改一些 Java 源文件并创建/更改一些 XML 文件。
  3. 编译和分发(当然用一个新名称)。

使用 GIT 或其他 SCM,您只需为每个新版本创建一个新分支并编译它。不是很优雅(因为它会强烈干扰 SCM 的正常使用)但是......

在网络上有一些这些方法的例子。我对他们也不完全满意。

坦率地说,为了解决这个问题,Android 生态系统应该提供某种“应用内包管理器”。类似于 Eclipse 更新管理器。这将允许我们使用相同的应用程序框架来处理不同的场景。

作为替代方案,一个可靠的、官方支持的、基于模板的代码生成机制会很好。本着“软件生产线”精神的东西:https ://en.wikipedia.org/wiki/Software_production_line 。查看 fw4spl,例如:http ://code.google.com/p/fw4spl/ 。

于 2012-11-29T16:50:08.257 回答