2016-01-28 8 views
0

У меня есть эта конфигурация сборки в моем файле gradle?Почему я должен подписать qa-аромат в граде?

buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
     debug { 
      applicationIdSuffix ".debug" 
      versionNameSuffix ".debug" 
     } 
     qa { 
      applicationIdSuffix ".qa" 
      versionNameSuffix ".qa" 
     } 
    } 
    sourceSets { debug { res.srcDirs = ['src/debug/res', 'src/debug/res/values'] } } 
} 

Почему, когда я пытаюсь запустить qa it trow me и error за отсутствие ключа для этого аромата?

ответ

1

Единственный тип сборки, для которого Gradle может построить ваш проект «из коробки», - это debug, поскольку Android-плагин для Gradle знает, как использовать созданное плагином хранилище отладки. Для всего остального, вам необходимо либо:

  • Настройка отдельного хранилища ключей подписи (например, для release)

  • Инициализировать новый тип сборки от типа debug сборки, родственного с помощью конструктора копирования, поэтому он использует те же правила, что и для debug подписания

в следующем примере я хочу, чтобы определить новый тип mezzanine сборки, придавая ему тот же конф подписи iguration, как я использую для release. Таким образом, я использую mezzanine.initWith(buildTypes.release) настроить mezzanine как копия release, а затем продолжить его настроить с различными правилами:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     versionCode 2 
     versionName "1.1" 
     minSdkVersion 14 
     targetSdkVersion 18 
    } 

    signingConfigs { 
     release { 
      storeFile file('HelloConfig.keystore') 
      keyAlias 'HelloConfig' 
      storePassword 'laser.yams.heady.testy' 
      keyPassword 'fw.stabs.steady.wool' 
     } 
    } 

    buildTypes { 
     debug { 
      applicationIdSuffix ".d" 
      versionNameSuffix "-debug" 
     } 

     release { 
      signingConfig signingConfigs.release 
     } 

     mezzanine.initWith(buildTypes.release) 

     mezzanine { 
      applicationIdSuffix ".mezz" 
      debuggable true 
     } 
    } 
} 

В вашем случае, вы будете использовать что-то вроде qa.initWith(buildTypes.debug) перед настройкой остальных типа qa сборки ,

+0

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

+1

@JesusDimrix: «Я не могу использовать отладочный ключ для моего вкуса qa?» - 'qa' - это тип сборки, согласно вашему вопросу. Вы можете использовать ключ подписи отладки для 'qa', как указано в моем ответе. – CommonsWare

+0

Благодарим вас за чистый и подробный ответ. –