2011-09-07 79 views
17

虽然继续开发我的应用程序和测试它在真实的手机上,我需要在同一部手机上发布它的版本,用于演示目的(由于没有日志,发布版本响应更快) 。如何在同一设备上同时安装Debug和Release apk?

问题是,让两个应用程序在Android中的同一设备上共存的唯一方法是使用不同的软件包名称。

但包名需要重新理和大量的人工繁殖修复......更何况,这混淆了版本控制...

理想的是,Eclipse ADT +将允许追加修改变量,会自动生成一个用于调试/发布的不同包名,并且允许这种共存,但是我找不到任何允许这样做的机制。

你知道有什么办法可以解决吗?

欢迎有创意的解决方案和想法。

回答

0

您可能需要使用ant,Jenkins和其他工具来尝试this technique,并可能使用@LAS_VEGAS建议的其他工具来自动执行程序包重命名。

虽然不是你要求的,this cool code snippet可以帮助你在运行时找出你的代码是调试还是发布。

另一个有趣的尝试可以在this thread找到。我不确定它是否适用于Android。

2

我知道的唯一方法是在应用程序清单文件中更改软件包名称。 Eclipse应该处理所有为你重命名的代码。

+0

哇!这几乎奏效。我在清单文件中包名的末尾附加了'd',清理了重建项目并且Eclipse根本没有抱怨。我愉快地继续运行它,但随后它“强制关闭”。事实证明,我的应用程序使用反射(类工厂)和Android不喜欢清单的包名称和.java包名称之间的差异。 +1以获得如此接近。 – an00b

+0

如果您的发布版本已激活了proguard混淆功能,并且您已将一些自定义_rules_添加到proguard.cfg,那么它们也可能包含软件包名称。另外,如果您创建了自定义视图窗口小部件,并将它们添加到某个XML布局中,则它们也以包命名。 – superjos

2

你可以把你所有的代码放在Library Project然后只有两个正常的项目, 有不同的软件包名称,只包括在两个库项目?

这应该保持你的所有代码在一个地方。 正常的项目很可能只需要一个有效的清单文件,指向库项目中的 活动。

+0

库项目也有调试日志记录...(IOW,一个库项目需要像应用程序一样进行条件构建)。此解决方案对我来说不起作用,但对于创意建议+1。 – an00b

4

使用Android Studio中的Gradle,因为让你的生活变得更加简单 - 只需使用applicationIdSuffix

android { 
    ... 
    buildTypes { 
    release {...} 
    debug { 
     applicationIdSuffix '.debug' 
    } 
    } 
} 

更多去here

0

在Android Studio中,使用Product Flavors添加构建变体,这些构建变体可以轻松地针对各种环境进行自定义,并且可以测试同一应用的多个应用变体。看看这个链接的更多信息 - Configuring Gradle