【问题标题】:Generating unsigned, release apk with Android Studio使用 Android Studio 生成未签名、发布的 apk
【发布时间】:2014-12-05 18:01:22
【问题描述】:

我需要生成一个未签名的 release APK(然后其他人将对其进行签名并将其发布到商店 - 其他人处理密钥和其他一切)。我的问题是,每当我尝试构建时,Android Studio 都会抛出错误:

app-flavorUnsigned-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

我已经尝试了几种以前的方法:

  • 创建工件失败(在任何地方都找不到任何带有“工件”的菜单,尽管在编辑配置时我找到了选择自定义工件的选项)[可能是最好的选择]
  • 创建一个空的签名配置
  • 创建自定义风味
  • 使用终端运行gradle assemblegradle assembleRelease(由于尝试构建我的一个重要模块库而失败)

这是我当前的 [app's] build.gradle:

apply plugin: 'com.android.application'

android {
    signingConfigs {
        unsigned {
            storePassword = ""
            keyAlias = ""
            keyPassword = ""
        }
    }
    compileSdkVersion 19
    buildToolsVersion "20.0.0"
    defaultConfig {
        applicationId "hiddenForClientPrivacy"
        minSdkVersion 13
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
        signingConfig signingConfigs.unsigned
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.unsigned
        }
        unsignedBuild {
            debuggable false
            versionNameSuffix '-unsigned'
            signingConfig signingConfigs.unsigned
        }
        debug {

        }
    }
    productFlavors {
        flavorUnsigned {
            versionCode = 1;
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile project(':SlidingMenu')
    compile 'com.android.support:support-v13:20.0.0'
    compile 'com.github.castorflex.verticalviewpager:library:19.0.1'
}

感谢您的任何帮助。

帮助后编辑: 正如标记的已接受答案所示,我必须清除发布块。此外,我点击了“运行”按钮——它应该适当地显示一个错误,因为我无法在模拟器或设备上运行未签名的发布 apk。接受的答案描述了一切。

【问题讨论】:

    标签: android android-studio build android-gradle-plugin apk


    【解决方案1】:

    release 构建类型中,根本不要指定signingConfig,您的构建将不会被签名。发布版本不会选择调试版本获得的默认签名配置,因此它应该适用于那些。

    在 adt-dev 邮件列表中有一个 discussion 与它有关。

    请记住,要从 Android Studio 构建,您需要转到 Gradle 任务窗口并选择 assembleRelease 任务;通过“Make Project”进行的正常构建实际上并不构建最终的 APK。

    【讨论】:

    • 那它不使用调试证书/签名吗?
    • 不适用于发布版本。试一试并确保它有效;我还没有测试过它,但我有它的权威,它可以工作:)
    • Android Studio 仍然在阻止我(也许这是新版本的一个烦人的块?)。我要发布的 buildType 是这样的:“release { }”。 [清理项目,同步 gradle 等]
    • 应该可以...您正在替换现有的release 块,对吗?这将删除 proguard 配置内容,但您没有启用 proguard,因此它不会影响您。
    • Make 项目实际上并没有构建 APK,我知道这非常烦人。您可以转到 Gradle 任务窗口并选择 assembleRelease,也可以从命令行构建。
    【解决方案2】:

    实际上,您可以通过构建它来构建一个未签名的 .APK:

    要生成它,在 Android Studio 的左侧,有一个 Build Variants 菜单(可能写成vertically)。点击它。

    Build Variants 窗口选项卡出现了,点击debug并通过release进行更改。

    重建您的项目应用程序> Build > Rebuild Project

    然后点击运行,出现一个新窗口,点击运行>仍然继续>选择你要运行的设备>确定

    该应用程序无法在您的设备上运行,但您的 .apk 的发布构建版本将生成到与您的调试版本相同的目录中:

    • C:\ANDROID_PROJECT_DIRECTORY\app\build\outputs\apk\

    您可以注意到名称是 app-release-unsigned.apk,这正是我们想要的。

    有关此tutorial website 的更多信息。

    【讨论】:

    • 将debug改为release步骤后,后面的步骤可以简化为Build -> Build APK,你会在那个目录下得到未签名的apk。
    • 不起作用,除非设置密钥,否则它不会让我运行
    【解决方案3】:

    我不得不做同样的事情(因为应用签名在其他地方处理),我只是重新构建了项目。

    要生成未签名的发布 apk,请在 Build Variants 菜单中选择发布版本。

    注意:您可能会在顶部菜单的应用配置中看到一个红叉,请忽略它。

    重建您的项目应用程序Build > Rebuild Project

    您将在以下位置找到您的 app-release-unsigned.apk:

    • ~\app\build\outputs\apk\release\

    注意:如果需要创建其他版本,请保存生成的apk,因为后续重建会覆盖当前的apk(...不要像我一样)。

    【讨论】: