在我的手机上保留app的发布版和测试版

时间:2016-01-09 21:10:06

标签: android android-studio apk

我最近将我的apk上传到我的测试版的Playstore,我想将这个应用程序保存在我的手机上。

但如果我从android studio构建它以进行进一步测试,它会说:

  

失败[INSTALL_FAILED_UPDATE_INCOMPATIBLE]

我认为一切都处于调试模式,其他处于发布模式。

我想在调试时改变了applicationId的风格,但是我没有找到如何正确地执行它,并且它阻止我使用内容提供程序。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

Gradle将允许您更改不同buildTypes配置的包名称。为此,请在构建类型中设置applicationIdSuffix属性:

    debug {
        // append ".debug" to the application ID for this build
        applicationIdSuffix ".debug"

        debuggable true

        // here go the usual debug build properties
        minifyEnabled false
    }
    release {
        // no applicationIdSuffix for the release build

        // here go the usual release build properties
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.pro'
    }

因此,如果您的发布应用程序ID是" mobi.glowworm.demo",那么您的gradle文件现在将使用应用程序ID" mobi.glowworm.demo.debug&#34创建一个调试版本。 ;

通过这种方式,您可以同时将两者保存在手机上。

我建议在2个版本之间更改应用名称,并考虑不同的启动图标。这允许您(以及任何其他测试人员)轻松区分构建。

这两个更改都依赖于为您的构建创建不同的源文件夹,遵循您已有的app\src\main\...文件夹的结构。创建app\src\debug\resapp\src\release\res个文件夹。

在那里,您可以轻松地为每个构建添加不同的资源(以及不同的源文件,但这更难处理)。将它们命名为与主要资源相同,gradle将使用这些新资源覆盖默认资源。

为了显而易见,我调用了我的构建类型字符串文件build_type_settings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--Override certain application strings to identify build-->
    <string name="app_name" 
        translatable="false">My Debug App</string>
    <string name="api_key_google" 
        templateMergeStrategy="preserve" 
        translatable="false">DEBUG_GOOGLE_KEY</string>
</resources>

将其存储在:

  • e.g。 \app\src\debug\res\values\build_type_settings.xml

同样,您可以创建单独的ic_launcher.png文件并将它们存储在mipmap资源文件夹中:

  • e.g。 \app\src\debg\res\mipmap-hdpi\ic_launcher.png

最后,在某些时候,您可能需要更新清单中的应用程序ID 。也许对于Parse实现或其他原因。

诀窍是使用${applicationId}属性替换清单中的应用程序ID的所有实例。 Gradle会在需要时自动插入正确的ID。

有关这方面的详细信息,这是一篇我发现自己一次又一次地回来的帖子: