【问题标题】:How do I make multiple Android apps from a single code base?如何从一个代码库制作多个 Android 应用程序?
【发布时间】:2012-11-28 06:04:47
【问题描述】:

我已经在 iOS 上完美地做到了这一点,现在我需要在 Android 上使用它。我有一个代码库,可以通过简单的配置文件更改创建无限不同的应用程序

每个应用程序都是基于我包含在资源中的复杂 XML 配置文件创建的。我所做的只是在我的 strings.xml 文件中进行一个简单的更改,它指向所需的配置文件,这反过来又使我的项目成为一个新的独立应用程序。很简单。

<string name="xmlconfig">nike-shoes</string>

但既然我已经这样做了,我该如何进行更改以使每个应用程序都是它自己的 APK?

如何使用一个代码库和一个项目在应用(和可上传的 apk)之间轻松切换。我听说有人说“使用一个库,然后为每个包含它的项目创建一个项目”,但是当您拥有 15 个以上的应用程序并不断增长时,这会变得过于复杂。

而且我还看到人们说“为什么不只制作一个应用程序,你可以在应用程序中在它们之间切换”,但这与我的项目无关,对我的用户也没有意义。不幸的是,我无法解释更多,但简短的回答是这也行不通。

我在 iOS 项目中所做的只是更改 Bundle ID,更改代码签名标识以匹配,更改应用名称,然后从我的主 Info.plist 文件中指向新的 plist。砰!全新的应用程序。几个简单的步骤,我不到一分钟。

如何使用 Eclipse/Java/Android 做到这一点?最简单的方法是什么?

只需几个步骤即可,只要我不会为了完成它而对每个文件都搞砸了。

【问题讨论】:

标签: java android eclipse apk


【解决方案1】:

我想我会在这里使用 Android Studio(在我输入此内容时为 2.2.3)回答我自己的问题,请执行以下操作:

  1. 在您的 AndroidManifest 文件中,单击您的包名称(单击 com.myapp.whateverwhatever 部分),然后按 Shift+F6。选择“重命名包”,然后重命名它(不带com.myapp 部分)。除非需要,否则不要对 cme​​ts、字符串和文本执行此操作。您需要使用 Android Studio 窗口底部的按钮来批准重构。

  2. 检查您的 build.gradle 文件并确保您在 defaultConfig 下的 applicationId 与您更改的内容相匹配。

  3. 在您的 strings.xml 文件中,根据需要更改您的 app_name 和其他字符串,以使您的应用拥有自己的应用。

我大约需要 1-2 分钟才能拥有一个全新的应用程序。希望其他人觉得这很有用。

【讨论】:

  • 哇!我正在考虑创建一些自定义预编译器来自动化这种重构。但是这4个步骤是完美的解决方案!非常感谢!
  • 嗨:首先想说一个很好的答案。我的问题:您有没有一种方法可以轻松地将应用程序部署到 Google Play,而无需上传 apk/aab 的所有麻烦?您使用哪个 CI/CD?它是否有一个控制系统,只是将构建的应用程序发送到 Play 商店?
  • @helenakohan 我总共只为五个应用程序这样做,所以我只是手动一个一个地上传它们并且没有特殊的系统。如果您有 20 多个应用程序,则必须研究如何进一步简化。
【解决方案2】:

您需要做的就是更改清单中的包名称(并且由于基本包名称已更改,在您的代码文件中进行了一些重构),下一次构建将创建一个新的应用程序。 如果您想维护所有应用程序,我还建议为每个包含此更改集的应用程序创建一个分支。通过这种方式,您可以修复某些内容并将其推送到所有版本。

假设您将 com.foo 更改为 com.foo.bar,然后重新构建,您的所有 R 导入现在应该添加 .bar,只需找到将 import com.foo.R 替换为 com.foo.bar.R,就是这样关于它。

【讨论】:

  • “以及由于基本包名称更改而对代码文件进行了一些重构” - 你能详细说明一下吗?当我更改包名称时,看起来几乎每个文件都必须更改。有没有一些自动化的方法来改变它们?
【解决方案3】:

在库项目中转换您的初始项目,然后从所有其他项目中引用它。这样您就有一个很大的优势:对库项目所做的所有修改都可以在其他项目中使用。参考:http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多