Как можно собрать apk в терминале с разными учетными данными SIGN? - PullRequest
3 голосов
/ 29 мая 2019

У меня есть build.gradle, который может иметь signatureConfigs, но я хочу игнорировать этот параметр и использовать другие учетные данные. Я не хочу редактировать или заменять значения в build.gradle.

Имеет ли gradle такую ​​же команду, как gradle assemble -storeFile='PATH' -storePassword='password' -keyAlias='alias' -keyPassword='password'?

Если невозможно создать подписанный apk с другими signatureConfigs, возможно ли создать неподписанный apk?

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я предлагаю вам использовать решение , о котором сообщает @ Ranjan .Это более чистое и стандартное решение.

Однако, если вы хотите использовать команду командной строки, все свойства, передаваемые gradle в командной строке через параметр -P, доступны в переменной project вваш сценарий gradle.Вы можете сделать что-то вроде этого:

gradle assembleRelease -PmyKeyPassword='xxx' -PmyStorePassword='xxx' -PmyKeyAlias='xxx' -PmyStoreFile='...xxx.keystore'

, а затем определить в своем build.gradle.

signingConfigs {
   release {
      storeFile project.mystoreFile
      storePassword project.myStorePassword
      keyAlias project.myKeyAlias
      keyPassword project.myKeyPassword
   }
}

Обратите внимание, потому что это может вызвать ошибки , если вы нене указывайте ключи в команде gradle (не очень хорошо с моей точки зрения).Вы можете решить проблему, выполнив проверку параметра (используя метод project.hasProperty(xxx)) и определив значение default в build.gradle.

Примерно так:

signingConfigs {
       release {
         storeFile project.hasProperty('myStoreFile') ? project.myStoreFile : 'default'
         //..
       }
}
0 голосов
/ 30 мая 2019

Нет команды сборки gradle, которая принимает конфиги знака. У вас есть два варианта на основе требования, которое вы указали в своем вопросе.

1. Отредактируйте build.gradle, чтобы создать несколько вариантов сборки и предоставить различные детали подписи для каждого варианта сборки.

    android {
    signingConfigs {
        abc {
            keyAlias 'abc'
            keyPassword 'yyy'
            storeFile file('keystore/astro.keystore')
            storePassword 'zzz'
        }
        xyz {
            keyAlias 'xxx'
            keyPassword 'xxx'
            storeFile file('keystore/sample.keystore')
            storePassword 'xxx'
        }
        //add another block for new customer
    }}
  1. Создайте несколько копий файла свойств хранилища ключей с разными настройками подписи, а когда вы хотите использовать одну конкретную копию файла keystore.properties, переименуйте его в «keystore.properties».

    def keystorePropertiesFile = rootProject.file("keystore.properties")

https://developer.android.com/studio/publish/app-signing#secure-shared-keystore

...