Запутались с подписанием Android APK?

Я выполнил шаги, описанные официальными лицами для цифровой подписи моего приложения для Android. .для входа в режиме выпуска они говорят использовать файл .keystore и его учетные данные, такие как это. Я использую Android Studio, поэтому вместо этого получаю файл .jks. Итак, где мне нужно хранить файл .jks в соответствии с документы для создания моего подписанного APK ? Пожалуйста, дайте простое пояснение по этому поводу и скажите, делаю ли я что-то не так?

Спасибо.


person Christ    schedule 11.11.2015    source источник


Ответы (1)


Вы можете поместить файл .jks куда угодно.
Это означает, что вы можете поместить файл в свой проект или во внешнюю папку (просто посмотрите путь ниже). Это зависит от вашей политики.

Просто используйте gradle для настройки подписи вашего apk.

android {

    signingConfigs {
        release
    }

    buildTypes {
            release {
                signingConfig signingConfigs.release
            }
    }
}

Простой способ: просто укажите учетные данные в файле build.gradle.

signingConfigs {
     release {
            //Pay attention to the path. You can use a relative path or an absolute path
            storeFile file("../your_key_store_file.jks")
            storePassword 'some_password'
            keyAlias 'alias_name'
            keyPassword 'key_password'

     }
  }

Использование файла .properties для хранения учетных данных вне скрипта (например, если вы не хотите отправлять учетные данные в репозиторий git).

Пример: signing.properties

STORE_FILE=/path/to/your.keystore
STORE_PASSWORD=yourkeystorepass
KEY_ALIAS=projectkeyalias
KEY_PASSWORD=keyaliaspassword

Затем получите эти значения в файле build.gradle:

signingConfigs {
        release
 }

Затем определите:

def Properties props = new Properties()
def propFile = new File('signing.properties')
if (propFile.canRead()){
    props.load(new FileInputStream(propFile))

    if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
            props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
        android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
        android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
        android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
        android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
    } else {
        println 'signing.properties found but some entries are missing'
        android.buildTypes.release.signingConfig = null
    }
}else {
    println 'signing.properties not found'
    android.buildTypes.release.signingConfig = null
}
person Gabriele Mariotti    schedule 11.11.2015
comment
Что означает, что мы не хотим хранить .jks файл в корне apk, то есть в корне приложения? Почему мы даем эти вещи storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" в градиенте? пожалуйста, уточните ответ на мое сомнение. - person Christ; 11.11.2015
comment
@Christ Обновил ответ. Расположение .jks не имеет значения. С помощью сценария gradle вы можете определить путь. Чтобы построить с помощью build.gradle, вы должны сообщить Gradle учетные данные. Вы можете определить их в скрипте или вне его. - person Gabriele Mariotti; 11.11.2015
comment
StorePassword и другие учетные данные должны совпадать с учетными данными, указанными при создании APK, прямо developer.android.com/tools/publishing/app-signing.html#studio ? - person Christ; 11.11.2015
comment
Итак, шаг 1: developer.android.com/tools/publishing/app- signing.html#studio, и мы должны использовать учетные данные, указанные на шагах 1 и 2: developer.android.com/tools/publishing/ верно? - person Christ; 11.11.2015
comment
Да, учетные данные должны совпадать с теми, которые использовались при создании файла хранилища ключей. - person Gabriele Mariotti; 11.11.2015
comment
Оки... большое спасибо за уделенное время и отличные объяснения. - person Christ; 11.11.2015