【问题标题】:How to build two Android apps in one Android Studio project?如何在一个 Android Studio 项目中构建两个 Android 应用程序?
【发布时间】:2015-11-25 03:56:14
【问题描述】:

我在 Android Studio 中有一个项目。我希望能够从同一个项目构建两个 Android 应用程序。例如,该项目包含两个文件:ActivityA.javaActivityB.java

我希望能够构建一个以 ActivityA 为主启动器的 Android 应用和另一个以 ActivityB 为主启动器的 Android 应用。在构建项目时,我希望它生成两个 .apk 文件。这可能吗?我需要进行哪些配置才能使 ActivityA 成为应用 #1 的主启动器,而 ActivityB 成为应用 #2 的主启动器?

【问题讨论】:

标签: android android-studio gradle build.gradle


【解决方案1】:

创建两个文件夹/flavors AppA 和 App2 类似下图:

他们都有这样的清单:

<activity
    android:name="com.onegravity.testapplication.ActivityA">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

确保主项目文件夹中的清单未定义启动器活动。

如果您对两个应用使用相同的包名称,那么在 Gradle 脚本中定义这两种风格就变得很简单:

productFlavors {
    AppA {}
    AppB {}
}

(把它放在 buildTypes 块下面)。

请阅读本文以更好地了解口味以及您可以使用它们做什么: http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants http://developer.android.com/tools/building/manifest-merge.html

【讨论】:

  • 感谢@Emanuel!这是一个非常有用的答案。让我试一试,然后告诉你结果如何。
  • 不客气。不要犹豫,将其标记为正确;-)
【解决方案2】:

听起来真的很乱。

我可以看到从一个通用代码库构建两个应用程序,但由于 manifest 只接受一个应用程序元素,您必须在构建时更改清单。

如果问题是公共代码库,为什么不使用公共代码创建一个库,然后将该库作为模块导入两个单独的项目中。

【讨论】:

  • 这就是您在 Eclipse 时代所做的事情。使用 Gradle 构建两个具有不同构建配置的 apk,包括不同的主要活动是小菜一碟。
  • 很公平,我将其读作“我可以在不使用构建脚本的情况下从我的 UI 中执行此操作吗”。
  • “我需要配置什么来制作 [...]”。配置 imo 包括构建脚本,但只有 OP 知道...
  • @mjstam 这个功能对于某些类型的软件项目来说是非常需要和重要的。您对库的想法确实减慢了开发过程。通常你不会在积极开发期间做图书馆。开发完成后你会做库,并且你认为你的代码部分可能在其他项目中有用 - 然后你做一个库。
猜你喜欢
  • 2018-02-12
  • 1970-01-01
  • 2014-07-29
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 2013-07-19
  • 1970-01-01
相关资源
最近更新 更多