我正在以下情况下开发android应用程序:
到目前为止,我主要致力于在Android设备上获取基本上相同应用的两个版本的方法。我已经考虑了一些选择,但是我想建议如何进行。我可以:
beta
,并使用不同的图标将其与测试人员区分开,但内部原理基本相同。它可以作为封闭的alpha /内部测试通过Play商店分发。我想避免这种情况,因为这会使我更加难以管理版本-当我要发布Beta版本时,必须手动更改应用程序的图标和名称注意:当我说封闭的alpha和内部测试时,我的意思是google播放封闭的alpha和内部测试(可通过google开发者控制台访问),而不是更笼统的定义。当我说Beta时,是指更笼统的定义-预发行版本。
编辑:按照this帖子中的建议,我成功安装了两个应用程序,但是每当尝试打开一个应用程序时,都会出现一个选择器对话框,例如
答案 0 :(得分:1)
Google Play已经为您提供了所有需要分发的产品以及与产品版本同时发布的alpha / beta /内部版本。
据我了解,您的问题是您希望测试人员在同一设备上同时拥有两个版本的应用程序。 您无法通过考虑的选项来完成此任务。即使更改名称和图标,唯一重要的是应用程序ID。如果您不更改应用程序ID,则无法安装两次。另一方面,如果更改程序包名称,则将其视为全新的应用程序,因此必须在Google Play中创建一个新的应用程序。
我建议使用完全支持的构建变体(风味)。 这样,您可以轻松更改软件包名称(以及应用程序名称,以使其更易于理解)。 当然,正如我之前提到的,您应该在Google Play中创建一个新应用或以其他方式分发它。
新版本的gradle应该与应用gradle相似:
buildTypes {
release {
....
}
qa { //your new variant name
applicationIdSuffix ".qa" //this will append a ".qa" to your app id
versionNameSuffix "-qa" //this will append a "-qa" to your app name
...
}
}
答案 1 :(得分:0)
要解决最后一点和屏幕截图,请在应用程序中从使用基于字符串的Intent切换为使用基于类的Intent。所谓基于字符串的意图,是指用public Intent (String action)
构造的意图。例如
startActivity("com.myOrganization.NEXT_ACTIVITY");
(要使这些字符串起作用,需要在清单中使用标记声明它们)
将它们替换为带有函数签名public Intent (Context packageContext, Class<?> cls)
的基于类的构造函数。像这样:
startActivity(currentActivity.this, nextActivity.class)
基于字符串的意图旨在用于外部服务,例如,打开Web浏览器以报告错误。在这种情况下,您不知道Web浏览器的Java类名称是什么(即,它可以是firefox.class
或chrome.class
)。
使用您的应用程序,您知道要开始的所有活动的类名,因此只需使用它们即可。来自基于类的Intent构造函数的Android documentation
这提供了一种方便的方法来创建旨在执行硬编码类名的意图,而不是依赖系统为您找到合适的类
使用基于类的构造函数还具有使Android Studio中的重构更加容易的另一优点。
注意:您仍然可以在清单中包含意图过滤器,以允许其他应用在您的应用中执行某些操作