Nano Hash - криптовалюты, майнинг, программирование

Разное хранилище ключей для разных вкусов продуктов в Gradle

У меня есть разные productFlavors, указанные в моем файле build.gradle.

 dev {
            applicationId "com.advancedprogressive.chare.dev"
            versionCode 83
            versionName "2.2.1"
        }
staging {
            applicationId "com.advancedprogressive.chare.qa"
            versionCode 119
            versionName "2.8.1"
        }

и иметь такие конфигурации подписи, как

signingConfigs {
        release {
            storeFile 
            storePassword 
            keyAlias 
            keyPassword         }
        debug {
            keyPassword 
            storeFile 
            keyAlias 
            storePassword 
        }
    }

У меня есть разные ключи для обоих вкусов. Я могу указать разные хранилища ключей для разных типов сборки, например, отладка/выпуск, но как я могу указать разные хранилища ключей для каждого варианта.


Ответы:


1

Вы можете использовать что-то вроде этого:

android {
    signingConfigs {
        dev {
        }

        staging {
        }
    }

    productFlavors {
        dev {
            signingConfig signingConfigs.dev
        }

        staging {
            signingConfig signingConfigs.staging
        } 
    }
}
24.03.2016
  • Как бы вы указали конфигурацию подписи для stagingRelease, но не для stagingDebug? 27.06.2018

  • 2

    Используя ниже gradle, вы можете получить несколько вкусов продукта:

       android {
      signingConfigs {
        release {
            keyAlias 'alias'
            keyPassword 'password'
            storeFile file('first.keystore')
            storePassword 'password'
        }
    
        debug {
            keyAlias 'alias'
            keyPassword 'password'
            storeFile file('second.keystore')
            storePassword 'password'
        }
      }
    
      compileSdkVersion 23
      buildToolsVersion "23.0.2"
      defaultConfig {
            minSdkVersion 14
            targetSdkVersion 23
         }
    
          productFlavors{
            dev {
                applicationId "com.advancedprogressive.chare.dev"
                versionCode 83
                versionName "2.2.1"
                signingConfig signingConfigs.debug 
            }
            staging {
                applicationId "com.advancedprogressive.chare.qa"
                versionCode 119
                versionName "2.8.1"
                signingConfig signingConfigs.release
            }
      }
    
          }
    

    Я надеюсь, что это поможет вам.

    24.03.2016
  • понятно. теперь, как я могу указать, должна ли сборка быть отлаживаемой или нет. где я должен разместить отлаживаемый флаг 24.03.2016
  • Вы можете получить ответ здесь: запустить/отладить выпускную версию приложения 24.03.2016

  • 3

    После поиска в Интернете я нигде не нашел четкого примера. Я попробовал это, и это, наконец, сработало!

    В вашем файле app/build.gradle

    android{
        signingConfigs {
            free {
                def keystorePropertiesFile = rootProject.file("app/src/free/keystore.properties")
                def keystoreProperties = new Properties()
                keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
    
            paid {
                def keystorePropertiesFile = rootProject.file("app/src/paid/keystore.properties")
                def keystoreProperties = new Properties()
                keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
    
        ...
    
        flavorDimensions "default"
        productFlavors {
            free {
                applicationId "com.example.freeapp"
                versionCode 1
                versionName "1.0"
                signingConfig signingConfigs.free
    
            }
            paid {
                applicationId 'com.example.paidapp'
                versionCode 1
                versionName '1.0'
                signingConfig signingConfigs.paid
            }
        }
    }
    

    В вашем приложении/src/flavor_name/keystore.properties

    storePassword=...
    keyPassword=..
    keyAlias=...
    storeFile=src/flavor_name/keystore_file.jks //or any other path of jks file
    
    05.10.2018
  • просто чтобы быть уверенным. Разве размещение ключевых свойств внутри src/flavor не будет также включать их в окончательный APK, верно? 07.04.2020
  • @Cristiano build.gradle не скомпилирован в файл APK. Он используется только для получения всех зависимостей, создания разновидностей, управления версиями и входа в приложение. Таким образом, ключевые детали не будут включены. 08.04.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..