Невозможно подписать apk только традиционной схемой даже после установки v2SigningEnabled как false

Я обновил свой android-studio до последней стабильной версии, то есть «Android Studio 2.3», а также gradle до 2.3.0.

Теперь, когда я пытаюсь создать подписанный apk сборки выпуска моего приложения, эта «дополнительная» вещь (версии подписи:) отображается на последнем шаге:

введите здесь описание изображения

Я нажал «Справка по подписи» и открыл эту страницу. открылся.

Я следовал документу и внес изменения в файл build.gradle следующим образом:

apply plugin: 'com.android.application'

//Put Fabric plugin after Android plugin
apply plugin: 'io.fabric'

android {
    signingConfigs {
        config {
            keyAlias 'xxxxxx'
            keyPassword 'xxxxxx'
            storeFile file('/Users/xxxxx')
            storePassword 'xxxxxx'
            v2SigningEnabled false
        }
    }
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    lintOptions {
        abortOnError false
    }
    defaultConfig {
        applicationId "com.xxxxx.xxx"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
        debug {
            signingConfig signingConfigs.config
        }
    }
    repositories {
        mavenCentral()
        maven {
            url "https://jitpack.io"
        }
        maven { url 'https://maven.fabric.io/public' }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile('com.mikepenz:fastadapter:1.8.2@aar') {
        transitive = true
    }
    compile('com.crashlytics.sdk.android:crashlytics:2.6.6@aar') {
        transitive = true;
    }
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:design:25.0.0'
    compile 'com.android.support:cardview-v7:25.0.0'
    compile 'com.android.support:recyclerview-v7:25.0.0'
    compile 'com.google.android.gms:play-services:10.2.0'
    compile 'com.google.android.gms:play-services-location:10.2.0'
    compile 'com.google.firebase:firebase-auth:10.2.0'
    compile 'com.android.support:support-v4:25.0.0'
    compile 'com.google.firebase:firebase-database:10.2.0'
    testCompile 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

и попытался снова сгенерировать подписанный apk, но все равно отображается эта «лишняя» вещь.

Что мне теперь нужно сделать, чтобы подписать apk "только по традиционной схеме"?


person Hammad Nasir    schedule 03.03.2017    source источник


Ответы (2)


То, что вы видите на верхнем снимке экрана, — это мастер Android Studio для создания подписанного APK. Вам нужно установить только флажок V1 (Jar Signature). Другой флажок предназначен для новой подписи.

Параметр, который у вас есть в вашем файле build.gradle, не влияет на то, что вам показывает мастер Android Studio. Это влияет только на сборку из командной строки. Так что галочка V1, а затем Finish будет работать нормально.

Тем не менее, я рекомендую подготовить ваш проект к новой подписи, так как это значительно сокращает время установки для ваших пользователей (затем вы должны отметить V1 и V2 signing. V1 будет для обратной совместимости)

person rubengees    schedule 03.03.2017
comment
но по той ссылке написано: Caution: If you sign your app using APK Signature Scheme v2 and make further changes to the app, the app's signature is invalidated. For this reason, use tools such as zipalign before signing your app using APK Signature Scheme v2, not after. Что это и как это может повлиять, если я последую вашему ответу и какой тогда прок от v2SigningEnabled false? - person Hammad Nasir; 04.03.2017
comment
Если вы отключите v2Signing и выполните сборку из командной строки или, не отмечая эту опцию в мастере, это не повлияет на вас. Это средство защиты, чтобы никто не мог декомпилировать ваше приложение, внести изменения, перекомпилировать его и опубликовать от вашего имени. Если вы ничего не делаете со своим apk после сборки (например, повторное индексирование), вы можете идти и должен подписать также с v2. Я надеюсь, что это ясно; Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать. - person rubengees; 04.03.2017
comment
Я использовал V1 (Jar Signature), и он находится в игровом магазине уже 4 месяца, поэтому мой вопрос: Могу ли я изменить его на подписанный apk v2 и повлияет ли это? - person b devloper; 27.03.2017

Пожалуйста, добавьте

v2SigningEnabled false в файле приложения Sign In buil.gradle

введите здесь описание изображения

Подробнее читайте в документации

person Keshav Gera    schedule 01.11.2019
comment
Что, если у нас есть проект Android в структуре идеи Intellij? - person aida; 05.02.2020