Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在我的手机上保留应用程序的发行版和测试版_Android_Android Studio_Apk - Fatal编程技术网

Android 在我的手机上保留应用程序的发行版和测试版

Android 在我的手机上保留应用程序的发行版和测试版,android,android-studio,apk,Android,Android Studio,Apk,我最近将我的apk上传到Playstore供我的测试人员使用,我想把这个应用程序保留在手机上 但如果我从android studio构建它进行进一步测试,它会说: 失败[安装失败\u更新不兼容] 我认为这都是关于一个处于调试模式,另一个处于发布模式 我想在调试时改变applicationId,但我没有找到正确的方法,这使我无法使用内容提供商 有更好的方法吗?Gradle将允许您更改不同构建类型配置的包名。为此,请在生成类型中设置applicationIdSuffix属性: debug {

我最近将我的apk上传到Playstore供我的测试人员使用,我想把这个应用程序保留在手机上

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

失败[安装失败\u更新不兼容]

我认为这都是关于一个处于调试模式,另一个处于发布模式

我想在调试时改变applicationId,但我没有找到正确的方法,这使我无法使用内容提供商


有更好的方法吗?

Gradle将允许您更改不同
构建类型
配置的包名。为此,请在生成类型中设置
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”

这样,您就可以同时在手机上使用这两种功能


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

这两种更改都依赖于按照您已有的
app\src\main\…
文件夹的结构为构建创建不同的源文件夹。创建
app\src\debug\res
app\src\release\res
文件夹

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

为了说明这一点,我调用了我的构建类型字符串文件
build\u type\u 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>

我的调试应用程序
调试\u谷歌\u键
将此存储在:

  • e、 g.
    \app\src\debug\res\values\build\u type\u settings.xml
同样,您可以创建单独的
ic_launcher.png
文件,并将其存储在mipmap资源文件夹中:

  • e、 g.
    \app\src\debg\res\mipmap hdpi\ic\u launcher.png

最后,在某些时候,您可能需要更新清单中的应用程序ID。可能是因为解析实现,或者其他原因

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

关于这方面的全部细节,我发现自己一次又一次地回到这里:


这很可能与签名配置有关,因为您现在正在使用调试key@Dan我在下面更新了我的答案(我认为)一个全面的方法来解决你在这条路线上所需要的一切问题。希望能有帮助。如果您愿意,我很乐意添加更多内容。@RichardLeMesurier谢谢!这里有我需要的一切。如果可以的话,我会改天给你的帖子投上一票:——)@Dan别担心,这就是我这么做的原因。这就是“未来的我”下一次所需要的一切。干杯,回答正确!是的,我将了解如何从gradle更改名称和图标,因为它给了我两次相同的应用程序,但困难的部分是后缀。谢谢