[英]how to manage debug and release version on android device?
我是Android开发人员的新手,我几乎准备好发布我的应用程序的第一个版本:)
在我的手机上测试签名版本apk时,它拒绝安装,因为调试版本随调试签名一起安装。
所以我必须卸载调试版本,但它删除了我的所有数据库(它将对我正在测试它的朋友这样做)。
有没有办法管理同一个应用程序的调试和发布版本而不会丢失数据?
许多Android项目开始使用gradle构建系统(当我们开始使用Android Studio时,我们已转换到它)。 幸运的是,gradle使得同时安装开发和发布版本非常简单,每个版本都有自己独立的数据。 Android文档涵盖了这一点,只需将applicationIdSuffix
添加到您的调试构建类型,如下所示:
android {
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
我不知道有什么简单的方法来解决卸载/重新安装过程,所以你的选择包括......
我看到同样的问题,但这是预料之中的,所以我将手机用于调试开发,并将平板电脑用于生产测试。 当我接近发布时,我在两个设备和模拟器上测试生产版本。
对于您的测试人员,我建议您始终为他们提供发布版本,但您可以包含大量日志记录以帮助解决问题。 然后,调试版本仅由您使用,并由它们发布版本。 如果您为测试人员提供发布版本,他们使用并累积数据,当他们升级到下一版本时,可以保留(或更新,如果您更改架构)数据以迁移他们的数据。
我认为您的测试人员不需要使用调试和发布版本。
谢谢@Evan您的解决方案非常完美:
android {
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
要在调试模式下运行时将“(DEBUG)”附加到您的应用程序标题,请将此代码放在Activity的onCreate中:
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
//The .debug specified in gradle
if (pInfo.packageName.equals("YOUR_PACKAGE_NAME_HERE.debug")) {
setTitle(getTitle() + " (DEBUG)");
}
为什么卸载应用程序? 通常,安装相同应用程序的新版本(由包ID标识)会保留所有应用程序数据。
编辑:手动保留app数据,将其从/data/data/my.package.name/...
复制到安全的地方,然后在必要时恢复。
对我来说,我还需要补充:
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
否则,两者都将获得相同的C2D_MESSAGE权限,从而导致:
Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=<your applicationId>.permission.C2D_MESSAGE pkg=<your applicationId>]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.