如何在同一设备上安装两个相同的Android应用程序.apk?

13

我有一个在Git上的项目,使用Eclipse进行开发,需要创建生产就绪的.apk文件和Dev .apk文件,以便安装在同一设备上。

两个版本之间的差异是一些属性设置,例如XML源,等等。

无论是否使用Eclipse,创建用于在同一设备上安装的Producion和Deve .apk文件的最佳实践是什么?


我可以问一下为什么您想在同一设备上同时运行两个应用程序吗?我可以理解需要不同的生产和开发APK,但是不理解同时需要两者的原因。 - Robert Massaioli
@RobertMassaioli 让我给你举个例子:你有一个应用程序 - 应用程序是基于租户的 - 即应用程序可能仅在打印定义/配置文件等方面与租户有所不同...取决于为其构建应用程序的租户。现在可能会发生这种情况,即需要在一个设备上为两个租户提供应用程序,因为使用它的人为两个租户工作。简而言之:肯定存在一种用例(安装相同应用程序的多个生产版本)。 - AgentKnopf
2个回答

13

我发现唯一的方法是更改包名。从技术上讲,这只需要在清单文件中完成,但这可能会导致某些构建错误,因此您可能也需要重命名包。例如,如果您的包名为com.company.app,则可以将其更改为com.company.app.dev和com.company.app.prod。 只要您没有使用反射,Eclipse应该会处理所有代码重命名。


我最终采用了这种方法。谢谢。 - Todd
1
Eclipse ADT v20在这里解释得非常清楚,使这变得非常容易:https://dev59.com/PWbWa4cB1Zd3GeqPcPWL#11829480 - Adam

2
我将按照以下方式解决这种问题:
我有三个不同的活动:基本、生产和开发,例如:
public class BasicActivity extends Activity {} //actually conntains all code
public class ProductionActivity extends BasicActivity {} //empty one
public class DevelopmentActivity extends BasicActivity {} //empty one

然后有两个不同的清单,分别是:生产环境(将可启动指向ProductionActivity并拥有不同的包)和开发环境(将可启动指向DevelopmentActivity)。
当我需要启动生产环境时 - 我通常会复制生产环境的清单(使用ant任务)作为真实的清单,并且对于开发环境也是如此。
由于R.class必须与清单中声明的包位于同一包中,因此资源编译存在一些小问题。但是再次通过一些“手工”操作,我已经成功解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接