2013-06-19 2 views
38

Как я работаю с Google Maps API, я привык работать с ключом пользовательского отладки в Eclipse (то есть на самом деле мой ключ производства)Что такое эквивалент Eclipse «Custom debug Keystore» в студии Android?

Эти манипуляции позволили мне использовать один и тот же ключ API для Карт и большинство сервисов Google Play (в биллинге приложений) в моей отладочной и выпускной сборке.

Это было действительно удобно, потому что не было необходимости менять ключ в манифесте.

enter image description here

К сожалению, с переходом на Android Studio, я пропускаю эту функцию.

Есть идеи, где я могу найти этот вариант?

Большое спасибо.

ответ

64

Вы определяете хранилище ключей в файле build.gradle. Смотрите раздел Конфигурации подписывания здесь: https://developer.android.com/studio/build/index.html

В вашем случае, вы хотите переопределить хранилищу ключей для варианта отладки:

android { 
    signingConfigs { 
     debug { 
      storeFile file("your.keystore") 
     } 
    } 
} 

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

+7

Большое спасибо, я попробую это. Почему я должен использовать разные ключи? Результат и количество времени, которое я получил, огромны ... –

+0

Есть ли какие-либо ограничения в отношении пароля отладочного хранилища ключей? –

+0

Что делать, если я хочу, чтобы в каждом отладке было настроено одно хранилище ключей? –

5

Вы можете указать debug.keystore для вашего проектанезависимо.
Два шага со следующими изображениями: (Android Студия v0.5.2)
Шаг 1: Нажмите кнопку project structure. Step 1

Шаг 2: Добавьте debug.keystore следующим образом. enter image description here

+1

Надежда в Android Studio v0.8. Этот экран недоступен. Только способ может быть build.gradle, исправьте меня, если я ошибаюсь. – arvindwill

24

На недавней студии Android 0.8.9 вы найдете это на пути лучшего места:

File->Project Structure 
  1. Добавить в хранилище ключей на «Подписание» Tab
  2. Выберите его для отладки/выпуска «Типы сборки».
  3. Убедитесь, что имя псевдонима вышлет с хранилища ключей (Keytool -list -v показывает ваше имя-псевдоним)

Это создает Gradle материал, syncrhonizes автоматически на «Применить» и работал сразу как шарм.

+2

Обратите внимание, что вам не нужно указывать все поля. Для отладочного ключа вы можете опустить значения по умолчанию (псевдоним «androidebugkey» и пароль для ключа/ключа, установленный на «android»). Для ключа освобождения вам может не понадобиться вводить свой пароль там, поскольку он будет сохранен в clear в build.gradle, который затем заканчивается на вашем DVCS. – ralfoide

17

Привет Если вы не хотите идти на жесткий код все эти вещи, а затем пойти ниже простых шагов

->Your project 
    ->Your Module 
    ->Right click on your module 
    ->go to open module settings 
     ->Go to Signing section 
     ->Specify all the attribute here and browse your Custom debug key in Store File 

Тогда вы найдете ниже код, который будет автоматически создавать на андроид студии строить.Gradle

signingConfigs { 
    debug { 
     storeFile file('custom_debug_keystore') 
     keyAlias 'androiddebugkey' 
     keyPassword 'android' 
     storePassword 'android' 
    } 
} 

Примечание:

1) Пожалуйста, не используйте .keystore в коде вручную, вы идете для ручной настройки

2) Пожалуйста, укажите правильный псевдоним и пароль

8

Вот пошаговый шаг, который я взял, чтобы перенести оба моих ключа из файла gradle.build в файл, который не будет включен в какие-либо сборки или репозиторий.

1)Создайте свойство gradle.properties (если у вас его еще нет).

Место для этого файла зависит от операционной системы:

/home/<username>/.gradle/ (Linux) 
    /Users/<username>/.gradle/ (Mac) 
    C:\Users\<username>\.gradle (Windows) 

2) Добавить запись, указывающую yourprojectname.properties файл. (пример для ОС Windows)

yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties 

3) Создать yourprojectname.properties файл в папке, указанной на шаге 2 со следующей информацией:

keystore=C:\\path\\to\\keystore\\yourapps.keystore 
keystore.password=your_secret_password 

4) Измените файл gradle.build указать к файлу yourprojectname.properties, чтобы использовать переменные.

if(project.hasProperty("yourprojectname.properties") 
     && new File(project.property("yourprojectname.properties")).exists()) { 

    Properties props = new Properties() 
    props.load(new FileInputStream(file(project.property("yourprojectname.properties")))) 

    android { 
     signingConfigs { 
      release { 
       keyAlias 'release' 
       keyPassword props['keystore.password'] 
       storeFile file(props['keystore']) 
       storePassword props['keystore.password'] 
      } 
      debug { 
       keyAlias 'debug' 
       keyPassword props['keystore.password'] 
       storeFile file(props['keystore']) 
       storePassword props['keystore.password'] 
      } 
     } 
     compileSdkVersion 19 
     buildToolsVersion "20.0.0" 
     defaultConfig { 
      applicationId "your.project.app" 
      minSdkVersion 16 
      targetSdkVersion 17 
     } 
     buildTypes { 
      release { 
      } 
     } 
    } 

} 

dependencies { 
    ... 
} 

5) Наслаждайтесь! Теперь все ваши ключи будут за пределами корня каталога, и все же у вас все еще есть радости автоматизации для каждой сборки.

Если вы получите сообщение об ошибке в файле gradle.build о переменном «реквизите» это потому, что вы не выполняете «андроид {}» блок внутри сам первого if состояния, при котором переменная props назначаемого так просто переместить all android {...} в условие, в котором назначена переменная реквизита, затем повторите попытку.

Я собрал эти шаги вместе с информацией, найденной here и here.

+0

Это должен быть полный правильный ответ – Plugie

4

Хранилище ключей должно быть в build.gradle, например, следующим образом:

android{ 
    signingConfigs { 
     release { 
      storeFile file('/path/platform.keystore') 
      storePassword 'android' 
      keyAlias 'androiddebugkey' 
      keyPassword 'android' 
     } 
    } 
    ... 
    buildTypes { 
     release { 
      signingConfig signingConfigs.release 
     } 
    } 

Eclipse, на самом деле не запрашивают пароль или псевдоним, но Gradle делает. Я считаю, что Eclipse просто предположил, что это пароль: android и псевдоним: androiddebugkey. Это может быть неверно для вашего хранилища ключей, но я бы попробовал это на градиенте.

Если вы знаете пароль, но вы не уверены, псевдонима вы также можете запустить следующую команду, чтобы получить псевдоним: keytool -list -keystore /path/platform.keystorelink

0

Как отмечалось, вы можете использовать Gradle файл укажите его. Я также нашел очень удобным использовать домашнюю папку как часть пути. Это облегчает работу в команде. Вот мое предложение:

android { 
    signingConfigs { 
     debug { 
      storeFile file(System.properties['user.home']+"/.android/custom.debug.keystore") 
     } 
    } 
} 
Смежные вопросы