Java Android多应用程序:如何在一个项目中创建两个应用程序?
例如,我有一个几乎完成了身份验证的Java应用程序,需要向该项目添加另一个应用程序以重用身份验证代码 我听说可能会有两种不同图标的“主要活动”来分别启动它们。我也不能检查这个信息,因为我不知道这个名字和之前的任何尝试是如何引导我的 所以问题是如何在Java Android多应用程序:如何在一个项目中创建两个应用程序?,java,android,android-activity,Java,Android,Android Activity,例如,我有一个几乎完成了身份验证的Java应用程序,需要向该项目添加另一个应用程序以重用身份验证代码 我听说可能会有两种不同图标的“主要活动”来分别启动它们。我也不能检查这个信息,因为我不知道这个名字和之前的任何尝试是如何引导我的 所以问题是如何在清单中注册这些活动,以及如何配置运行菜单? 或者,如果我错了,还有什么其他方式可以满足我的要求 谢谢。 < P>你应该考虑使用你的应用程序的口味。这允许您为每种口味设置不同的应用程序名称、图标和代码 以下是在主模块的build.gradle中定义两种风
清单
中注册这些活动,以及如何配置运行
菜单?
或者,如果我错了,还有什么其他方式可以满足我的要求
谢谢。
< P>你应该考虑使用你的应用程序的口味。这允许您为每种口味设置不同的应用程序名称、图标和代码 以下是在主模块的build.gradle中定义两种风格的示例:buildTypes {
debug{...}
release{...}
}
// Specifies one flavor dimension.
flavorDimensions "main"
productFlavors {
demo {
// Assigns this product flavor to the "main" flavor dimension.
// If you are using only one dimension, this property is optional,
// and the plugin automatically assigns all the module's flavors to
// that dimension.
dimension "main"
applicationId "com.appdemo"
versionNameSuffix "-demo"
}
full {
dimension "main"
applicationId "com.appfull"
versionNameSuffix "-full"
}
}
然后,您可以通过覆盖每个flavor子目录(即yourmodule/demo/和yourmodule/full/)中的默认文件来设置每个应用程序的资源(图像、代码、字符串…),基本上需要使用活动创建两个入口点并在其中添加图标 所以把这个放在这里以防万一
<activity android:name=".MainActivity_1"
android:icon="@mipmap/icon_1">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity_2"
android:icon="@mipmap/icon_2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
您是否考虑过为每个应用程序使用不同的风格?@matdev如果您指的是不同的构建依赖项-不,它们将是相同的。几乎)但应用程序当然会有不同的名称。如果我没有回答你的问题,请重新解释。使用flavors是指在build.gradle中的productFlavors{}部分下声明不同的应用程序风格。这允许您为每个应用程序设置不同的应用程序名称、图标、代码等。不,我还没有考虑过用香料。有必要吗?我想你应该。检查我的回答让我们假设这两种风格必须使用不同的API进行通信,并且它们的功能有所不同。这是否意味着您的整个代码几乎到处都应该有if/else?味道从来没有引起我的注意。你对此有什么看法?不,你不需要到处都是if/else。例如,您可以将对API的调用封装在一个flavor重写类中,并将一个公共接口公开给这两个flavor所共有的代码。