33325


Android の開発にて, .env ファイル等からアクセスキーのような鍵情報を読み込ませる方法はありますでしょうか？

iOS ですと, cocoapods-keys を使って, .env ファイルを用いて変数として読み込ませることができました。  
参考: <http://qiita.com/susieyy/items/4632e30068a826b936f6>

Android ではどのように鍵情報をプロジェクトから切り離して管理できるでしょうか？  
twitter の consumerKey, comsumerSecret 的なものを,
コード内にべた書きしたくないので質問させていただきました。よろしくお願いいたします。


CC BY-SA 3.0
2017-03-14T11:44:29.773
33313
2017-03-14T16:21:36.820
20779
question
android
Android にて, アクセスキーのような情報を .env ファイルから読み込ませたい


やり方はいくつかあると思いますが、僕は環境変数に保存しています。  
保存した環境変数は build.gradle の中で  
`System.getenv('PASSWORD')`  
などで呼び出して利用しています。

詳しくはこちらが参考になるかと思います。  
<http://qiita.com/tmiyamon/items/ed660dff7846f5ec95d3>


CC BY-SA 3.0
2017-03-14T14:07:56.457
33320
2017-03-14T14:07:56.457
354
33313
answer


既に回答があるので、私が述べるまでもないかもしれませんが、CI環境で自動ビルドを実行させるために実施している手法を補足いたします。  
なお、ビルドに使用する機密情報(鍵情報など)を組み込むパターンでかつ、Android studioでgradleを使用中の認識で回答いたします。

`build.gradle`へ以下のように`buildConfigField`を追加すると、`BuildConfig.KEY`で参照できるようになります。debug/releaseビルドに関係なく定義したい場合は`defaultConfig`へ記載するほうが良いです。

[code]

    android {
        buildTypes {
            debug {
                if (project.hasProperty('testvalue')) {
                    buildConfigField 'string', 'KEY', project.testvalue
                }
            }
            release {
                if (project.hasProperty('testvalue')) {
                    buildConfigField 'boolean', 'KEY', project.testvalue
                }
            }
        }
    }
    
[/code]

環境変数等は`build.gradle`と同じディレクトリに作成した`gradle.properties`へ定義することを想定します。

[code]

    testvalue="secretkey"
    
[/code]

`gradle.properties`はコミットしないように`.gitignore`へ記載する等、注意してください。

CI環境等を使っている場合は、対象ファイルを別途展開する等の操作を組み込んでおくと何かと便利です。


CC BY-SA 3.0
2017-03-14T16:21:36.820
33325
2017-03-14T16:21:36.820
882
33313
answer