2013-06-19 75 views
38

由於我在使用Google Maps API,因此我一直習慣在Eclipse中使用自定義調試密鑰(實際上是我的生產密鑰)在Android Studio中,Eclipse的「自定義調試密鑰庫」等價於什麼?

此操作允許我對地圖使用相同的API密鑰,我的調試和發佈版本中大部分Google Play服務(在應用程序結算中)。

這非常方便,因爲不需要更改清單中的密鑰。

enter image description here

不幸的是,遷移到Android Studio中,我缺少這個功能。

任何想法,我可以找到這個選項嗎?

非常感謝。

回答

64

您在build.gradle文件中定義了一個keystore。見簽名配置部分在這裏:https://developer.android.com/studio/build/index.html

在你的情況,你要重新定義密鑰庫的調試版本:

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

但是,你真的應該使用調試兩個不同的密鑰存儲和釋放配置。

+7

非常感謝,我會盡力而爲。爲什麼我應該使用不同的密鑰?結果和我獲得的時間是巨大的...... –

+0

對調試密鑰庫的密碼是否有任何約束? –

+0

如果我想要調試每個特定的密鑰庫,該怎麼辦? –

5

可以指定debug.keystore項目獨立
兩個步驟具有以下的圖像:(Android Studio中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. 在「簽名」標籤
  2. 選擇它爲您的調試/釋放添加一個密鑰「構建類型」。
  3. 確保別名與您的密鑰存儲配襯(密鑰工具-list -v顯示您的別名)自動「應用」

它創建gradle這個東西,syncrhonizes並立即工作就像一個魅力。

+2

請注意,您不需要指定所有的字段。對於調試密鑰,可以省略默認值(別名'androidebugkey'和密鑰庫/密鑰密碼設置爲'android')。對於釋放密鑰,您可能不想在那裏輸入密碼,因爲它將在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 

這時你會發現下面的代碼,這將是通過在Android Studio中自動創建建立。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文件中有關「道具」變量的錯誤,那是因爲你沒有執行的「Android {}」塊,其中props變量被分配到第一個if條件裏面所以才動整個android {...}部分放入props變量分配的條件中,然後重試。

我從herehere的信息中拼湊了這些步驟。

+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。這可能不適用於您的密鑰庫,但我會在Gradle上嘗試這種方式。

如果你知道密碼,但你不知道的別名你也可以運行下面的命令來獲得別名: keytool -list -keystore /path/platform.keystorelink

0

正如指出的那樣,你可以使用gradle這個文件指定它。 我還發現使用Home文件夾作爲路徑的一部分非常方便。這使得在團隊中工作時更容易。這裏是我的建議:

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