在不生成签名APK的情况下调试发布版本类型

时间:2016-02-25 14:44:58

标签: android android-studio gradle

我有一个包含两种构建类型的项目设置:debugrelease

在我的app模块中,我有三个不同的目录:debugreleasemain

我想要做的是测试release目录中的代码,但我似乎唯一能做的就是生成一个签名的apk并将其加载到模拟器上。这意味着我无法正确调试它。

当我将app模块的构建版本更改为release时,我在"编辑配置"中出现以下错误:弹出窗口。

  

错误:您当前所选变体的apk   (app-release-unsigned.apk_未签名。请指定签名   此变体的配置(发布)。

我希望做的是在release模块的debugRelease文件中扩展名为build.gradle的{​​{1}}构建变体,然后继承该代码app目录,但我可以在IDE中运行它。

我可能会以错误的方式看待这个问题,我很乐意听到其他任何技巧。

我可以做我想做的事吗?如果不是最好的解决方案是什么?

2 个答案:

答案 0 :(得分:5)

经过大量研究后,我决定继续我的debugRelease想法,似乎运作良好。

我在名为app/src的{​​{1}}下创建了一个新目录。在那里,当我生成签名的apk或发布版本时,我放置了我想要的不同代码。

这样做可以让我测试代码的工作原理并能够调试它。虽然这不是经常完成的,它只是崩溃报告和日志记录的差异,但是,如果我有机会修复bug或其他东西,我可以。

在我的debugRelease/java文件中,我进行了以下设置。

build.gradle

所以现在当我想测试发布代码时,我只是将构建变体更改为buildTypes { release { } debug { } debugRelease { signingConfig signingConfigs.debug } } sourceSets { debugRelease { res.srcDirs = ['src/debug/res'] // this uses the debug's res directory which contains a "debug" icon } release { java.srcDirs = ['src/debugRelease/java'] // this avoids copying across code from the debugRelease java directory } }

答案 1 :(得分:0)

您可以使用以下属性构建应用的发行版本(例如,使用生产环境):

  • 启用了全面调试
  • 禁用ProGuard混淆和代码收缩
  • 使用发布证书禁用APK签名

对您的 app / build.gradle 进行这些临时更改:

/* ADD THIS BLOCK, IF NOT ALREADY THERE */
lintOptions {
    // When you make a Release Build, the Android Lint tool will run to check many things.
    // It is set to abort the build on a single Lint error/warning. Disable this.
    abortOnError false
}

buildTypes {
    release {
        //minifyEnabled true   // <-- COMMENT OUT
        //proguardFiles ...    // <-- COMMENT OUT
        //shrinkResources true // <-- COMMENT OUT
        signingConfig signingConfigs.debug // <-- ADD THIS TO SIGN WITH YOUR DEBUG CERTIFICATE
        debuggable true     // <-- ADD THIS
        minifyEnabled false // <-- ADD THIS
    }
}

然后执行Android Studio➔视图➔工具Windows➔构建变体➔选择appRelease或您所称的名称,然后按“运行”按钮进行构建和安装。

更多信息/相关文章: