【问题标题】:How to create multiple Android apps from one code base如何从一个代码库创建多个 Android 应用程序
【发布时间】:2010-11-15 19:55:50
【问题描述】:

我有一个 Android 代码库,它使用带有设置的 API 来获取多个应用程序的不同数据。所有应用程序都使用相同的代码库,但只有一两个设计调整。那么如何重复使用主代码库,而不必每次都复制整个 Android 项目呢?

iPhone 在同一个项目中使用多个目标,效果很好。如果 android 无法做到这一点,我是否需要在一个项目中编译代码库的二进制文件,然后导入到每个新的应用程序项目中?如果有怎么办?我正在使用 Eclipse,并且是一名中级 Java 开发人员。

非常感谢任何帮助!

道格

【问题讨论】:

  • 查看 developer.android.com 上的井字游戏库示例

标签: android eclipse


【解决方案1】:

查看 Android 文档中的“使用库项目”。这应该正是您要查找的内容:http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

【讨论】:

    【解决方案2】:

    如果您将 Android Studio 与 Gradle 一起使用,当前解决此问题的方法是使用 Gradle,构建类型 + 产品风格

    http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants

    构建变体

    新构建系统的一个目标是支持创建同一应用程序的不同版本。

    有两个主要用例:

    同一应用程序的不同版本 例如,免费/演示版与“专业”付费应用程序。

    同一应用程序在 Google Play 商店中为多 apk 以不同方式打包。

    这一新概念旨在帮助在差异非常小的情况下提供帮助。如果回答“这是同一个应用程序吗?”是的,那么这可能是遍历图书馆项目的方式。

    【讨论】:

      【解决方案3】:

      注意:现在可以使用资源创建 .aar 库,这个答案基本上已经过时了。不过,它仍然有效,而且有时可能需要 .jar 的可移植性,所以我将其留在这里。

      Blumer 的回答很好,您绝对应该研究一下 Android 对库项目的想法。但是,还有另一种选择。如果您的模块仅包含 Java 代码,但不包含任何类型的资源(图像、布局等),您可以将其单独编译为 .jar 文件并在多个应用程序项目中使用生成的 .jar。它的工作原理是这样的:

      • 在 Eclipse 中创建一个新的 Java 项目(不是 Android 项目)并将模块的源代码移到那里。
      • 如果您的模块引用了 SDK 中的任何类,您需要将 Android SDK .jar 添加到项目的类路径(项目 > 属性 > Java 构建路径 > 库 > 添加 JAR)。
      • 当您的模块准备好使用时,将其 .class 文件捆绑到一个 .jar 中。您可以手动执行此操作,也可以四处寻找如何让 Eclipse 为您执行此操作。
      • 将模块 .jar 文件复制到应用主项目的“libs”目录中。
      • 将模块 .jar 添加到项目的类路径(再次,项目 > 属性 > Java 构建路径 > 库 > 添加 JAR)。

      现在您应该能够使用同一个 .jar 构建多个应用程序,同时只保留模块源代码的一份副本。

      根据您的具体情况,这可能比标准 Android 库机制更适合您,也可能不会更好。但值得考虑作为替代方案。

      【讨论】:

      • 这不是“使用图书馆项目”所做的(但没有手动步骤)吗?
      • @user1697575:是的。我编辑了我的答案,说现在我们有真正的 Android 库项目,它基本上已经过时了。
      【解决方案4】:

      如果没有使用太多“不同的 API”,Android 文档会推荐另一种方法。

      这个想法是使用反射而不是对代码进行方向引用。确保每次都使用优化反射而不是查找。

      参考文献

      【讨论】:

        【解决方案5】:

        您可能需要考虑使用像 Subversion(或 GIT)这样的源代码控制系统。将您功能最完整的版本保留在主干中,并为使用不同数据源或需要较小布局更改等的单独版本创建分支。

        【讨论】:

        • 不知道为什么人们不赞成这个。如果您有多个基于模板代码库构建的应用程序,并且并非所有应用程序都必须基于最新的模板构建,这可能是合适的。 (例如,考虑这样一种情况,您有一个模板授权给外部客户,但如果他们想升级到最新模板,您会向他们收费。并非所有客户都会为升级付费。)
        • 我建议使用一个库,而不是我 2 年前写的。库更简单,更易于维护。
        • 问题是关于从相同的代码库开发构建 2 个应用程序。不是允许多个开发人员为多个版本构建应用程序。你问错了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-09-24
        • 2011-09-30
        • 1970-01-01
        • 2015-05-16
        • 1970-01-01
        • 2011-03-13
        • 2013-01-10
        相关资源
        最近更新 更多