2016-03-14 28 views
5

キーストアの外部にプロジェクトディレクトリのを保存したいとします。私が試した /Users/username/.gradle/keystores/project/release.key または ~/.gradle/keystores/project/release.keygradleキーストアファイルの絶対パスの値

:私はので、私は~/.gradle/gradle.properties でGradleの変数を適切する値を委任私はGradleののような絶対パスを受け入れるように取得することはできませんリポジトリ内のファイルパスを保存したくない storeFile file(RELEASE_STORE_FILE) および storeFile new File(RELEASE_STORE_FILE)

どれも動作していないようです。

RELEASE_STORE_FILE変数を使用してキーストアファイルに絶対パス値を渡すにはどうすればよいですか?

android { 
    signingConfigs { 
     release { 
      storeFile file(RELEASE_STORE_FILE) 
      storePassword RELEASE_STORE_PASS 
      keyAlias RELEASE_ALIAS 
      keyPassword RELEASE_KEY_PASS 
     } 
    } 
} 

~/.gradle/gradle.propertiesファイル:要するに

RELEASE_STORE_FILE=/Users/username/.gradle/keystores/project/release.key 
RELEASE_STORE_PASS=****** 
RELEASE_ALIAS=****** 
RELEASE_KEY_PASS=****** 

:私はGradleのための絶対パス値を渡したいです。

+0

あなたはあなたのパスを受け入れるためにgradleを得ることができないということを意味しますか?あなたは何をしますか? – RaGe

+0

ご迷惑をおかけして申し訳ありません - おそらく私の設定ミスでした。私はティムローズの別の面白い解決策を使って終わった。 –

+0

'storeFile file(RELEASE_STORE_FILE) 'を使用すると絶対パスを使用することは確かです。パスの前後に二重引用符または一重引用符を追加していないことを確認してください。 – iForests

答えて

1

私は、thisサイトの面白い解決策を使用して終了しました。

考えられるのは、別のフォルダに変数を保存することです。は、リモートのリポジトリに保存されています。

Keys.repoがあなたのリモートリポジトリへのローカルパスです
Keys.repo=/Users/username/.signing 

:あなたが入れ~/.gradle/gradle.propertiesファイルで

は後で/Users/username/.signing/YourProjectName.propertiesであなたが持っている:

RELEASE_STORE_FILE=/YourProjectName/release.keystore //in fact it's a relative path 
RELEASE_STORE_PASS=xxxxx 
RELEASE_ALIAS=xxxxx 
RELEASE_KEY_PASS=xxxxx 

をあなたが設定は次のように使用されている

/Users/username/.signing/YourProjectName/release.keystoreパスにrelease.keystoreファイルを保存する必要があります:

android { 
    signingConfigs { 
     debug { /* no changes - usual config style */ } 
     release { 
      if (project.hasProperty("Keys.repo")) { 
       def projectPropsFile = file(project.property("Keys.repo") + "/YourProjectName.properties") 
       if (projectPropsFile.exists()) { 
        Properties props = new Properties() 
        props.load(new FileInputStream(projectPropsFile)) 

        storeFile file(file(project.property("Keys.repo") + props['RELEASE_STORE_FILE'])) 
        storePassword props['RELEASE_STORE_PASS'] 
        keyAlias props['RELEASE_ALIAS'] 
        keyPassword props['RELEASE_KEY_PASS'] 
       } 
      } else { 
       println "=======================================================" 
       println "[ERROR] - Please configure release-compilation environment - e.g. in ~/.signing directory" 
       println "=======================================================" 
      } 
     } 
    } 
} 
2

私は暇これはのシンボリックリンク

  1. LN -s [パス・ツー・ストア]アプリモジュールで

    をシンボリックリンクkeystore.lnkを作成

  2. をkeystore.lnkそして(keystore.lnk RELEASE_STORE_FILE = keystore.lnk

    gradle.propertiesでの使用引用符は使用しないでください)

あなたのgradle指示が機能します。

0

が解決策が見つかりました:https://gist.github.com/gabrielemariotti/6856974

簡単に言うと、あなたは正しくキーストアへのパスを含むファイルを解析する必要があります。あなたのモジュールのgradleを次の行で修正してください。

signingConfigs 
    { 
     release 
     { 
      def Properties props = new Properties() 
      def propFile = new File('path/to/your/keystore.properties') //absolute path to keystore.properties 
      if (propFile.canRead()) 
      { 
       props.load(new FileInputStream(propFile)) 

      if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') && 
        props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) 
      { 
       android.signingConfigs.release.storeFile = file(props['STORE_FILE']) 
       android.signingConfigs.release.storePassword = props['STORE_PASSWORD'] 
       android.signingConfigs.release.keyAlias = props['KEY_ALIAS'] 
       android.signingConfigs.release.keyPassword = props['KEY_PASSWORD'] 
      } 
      else 
      { 
       println 'keystore.properties found but some entries are missing' 
       android.buildTypes.release.signingConfig = null 
      } 
     } 
     else 
     { 
      println 'keystore.properties not found' 
      android.buildTypes.release.signingConfig = null 
     } 
    } 
} 

そしてbuildTypeを解放し、あなたにsigningConfigを追加します:まず、これはkeystore.propertiesファイルの内容に基づいてsigningConfigsを作成する方法です。このソリューションのkeystore.propertiesファイルの

buildTypes 
{ 
    ... 
    release 
    { 
     ... 
     signingConfig signingConfigs.release    
    } 
} 

例:

STORE_FILE=absolute//path//to//store 
STORE_PASSWORD=yourPass 
KEY_PASSWORD=keysPass 
KEY_ALIAS=aliasName 

これは私のために働いています(Androidスタジオ3.0.1、Gradle 4.1、Windows 10)。