Waza_Be
Waza_Be

Reputation: 39564

What is the equivalent of Eclipse "Custom debug Keystore" in Android studio?

As I am working with Google Maps API, I have been used to work with a custom debug key in Eclipse (that is in fact my production key)

This manipulation allowed me to use the same API key for Maps and most of Google Play Services (in app billing) in my debug and release build.

This was really convenient because there was no need to change the key in the manifest.

enter image description here

Unfortunately, with the migration to Android Studio, I am missing this feature.

Any idea where I can find this option back?

Thank a lot.

Upvotes: 39

Views: 45130

Answers (7)

Siva Velusamy
Siva Velusamy

Reputation: 2489

You define a keystore in your build.gradle file. See the Signing Configurations section here: https://developer.android.com/studio/build/index.html

In your case, you want to redefine the keystore for the debug variant:

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

However, you should really be using two different keystores for debug and release configurations.

Upvotes: 67

Showpath
Showpath

Reputation: 678

As pointed out, you can use the gradle file to specify it. I also found very convenient to use the Home folder as part of the path. It makes it easier when working within a team. Here is my suggestion :

android {
    signingConfigs {
        debug {
            storeFile file(System.properties['user.home']+"/.android/custom.debug.keystore")
        }
    }
}

Upvotes: 0

Ricardo Freitas
Ricardo Freitas

Reputation: 533

The keystore needs to be in build.gradle, example follows:

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

Eclipse didn't really ask for a password or alias, but gradle does. I believe Eclipse just assumed it was password:android and alias:androiddebugkey. This might not be true for your keystore but I would try it like that on gradle.

If you know the password, but you are not sure of the alias you can also run the following command to get the alias: keytool -list -keystore /path/platform.keystore link

Upvotes: 4

Max Worg
Max Worg

Reputation: 2972

Here is a complete step-by-step that I took to move both of my keys out of the gradle.build file into a file that will not be included in any builds or repository commits.

1) Create a gradle.properties (if you don't already have one).

The location for this file depends on your OS:

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

2) Add an entry pointing to yourprojectname.properties file. (example for Windows)

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

3) Create yourprojectname.properties file in the location you specified in Step 2 with the following information:

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

4) Modify your gradle.build file to point to yourprojectname.properties file to use the variables.

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) Enjoy! Now all of your keys will be outside of the root of the directory and yet you still have the joys of automation for each build.

If you get an error in your gradle.build file about the "props" variable it's because you are not executing the "android {}" block inside the very first if condition where the props variable gets assigned so just move the entire android{ ... } section into the condition in which the props variable is assigned then try again.

I pieced these steps together from the information found here and here.

Upvotes: 9

Kirtikumar A.
Kirtikumar A.

Reputation: 4204

Hi If you don't want to go for hard code all of this stuff , then go for below easy steps

->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

Then you will find below code which will be auto-create by android studio in build.gradle

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

Note:

1) Please do not use .keystore in the code manually you go for manual configuration

2) Please specify correct Alias and password

Upvotes: 18

John
John

Reputation: 7836

On recent Android Studio 0.8.9 you will find this at a way better place:

 File->Project Structure
  1. Add a keystore at "Signing" Tab
  2. Select it for your debug/release "Build types".
  3. Make sure the alias name matchs with your keystore (keytool -list -v shows your alias name)

It creates the gradle stuff, syncrhonizes automatically on "Apply" and worked immediately like a charm.

Upvotes: 26

Autobots
Autobots

Reputation: 1274

You can specify the debug.keystore for your project independently.
Two steps with the following images: (Android Studio v0.5.2)
Step 1: Click the button of project structure. Step 1

Step 2: Add the debug.keystore as follows. enter image description here

Upvotes: 5

Related Questions