3

Android アプリケーションのユーザー データを保存するために使用している Parse アカウントがあります。ソース管理を使用しているため、秘密鍵をコードに埋め込んだままにしたくありません。ソース管理から除外して、キーをホストできる「構成」ファイルを作成する方法はありますか? それが不可能な場合、そのような状況を処理するためのベスト プラクティスは何ですか?

4

2 に答える 2

1

1 つのオプションは、キーを環境変数に入れ、ビルド中に読み取ることです。

pom.xml でプロパティを宣言します (secret.key)

<properties>
   <secretKey>${env.SECRET_KEY}</secretKey>
<properties>

さらに下にあるリソースで「フィルタリング」を有効にします

  <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
  </resource>

リソースでは、置換の準備ができている変数で読み取る「config.properties」を維持します。

secret_key=${secretKey}

Maven でフィルタリングすると、 ${secret.key} が環境変数の値に置き換えられます。

Android studio でのビルドに gradle を使用している場合は、ファイルのフィルタリングに関するセクション 16.6.6.2 を参照してください。

build.gradle 内に以下を追加します

import org.apache.tools.ant.filters.FixCrLfFilter
import org.apache.tools.ant.filters.ReplaceTokens

task copyProductionConfig(type: Copy) {
  from 'source'
  include 'config.properties'
  into 'build/targetpath/config'
  expand([
    secretKey: System.getenv("SECRET_KEY")

  ])
}

gradle では、次を使用して gradlew を実行するときに入力を要求することもできます

Console console = System.console()
def password = console.readPassword("Enter Secret Key: ")

そして、それを適切な構成ファイルまたはソース ファイルに適用します。

于 2014-04-29T03:12:06.037 に答える
1

はい、ソース管理外にフォルダーを作成し、そこに app.properties というファイルを配置し、そのプロパティ ファイルにキーを配置して、フォルダーをビルド パスに追加できます。次に、プロパティ ローダーを使用してクラスパスからロードします。

多くの開発者または複数の開発マシンがある場合は、ローカル プロパティの場所をビルド パスの変数として設定して、各開発者が独自に構成できるようにすることができます。

于 2014-04-29T02:54:05.247 に答える