2017-03-10 19 views
3

彼らはどのように使用されているのか理解していますが、いつ使用されているのかを知りたいと思います。 異なる環境で別々のKEYを使用する場合は、前述の3つのすべてを使用できます。だから私は同じことをする3つのものがあるのか​​、異なる用途のためのものなのかを知りたいと思っていました。ありがとう!buildConfigField、resValue、およびmanifestPlaceholdersの違いは何ですか?

enter image description here

答えて

5

buildConfigFieldを使用すると、アプリケーションの生成BuildConfigクラスで実際のJava定数を生成します。だからあなたたとえば、あなたは、このような何かを持っているでしょう:

public static class BuildConfig { 
    public static final String BASE_URL = "xxxxxxxxxx"; 
} 

アプリのres(リソース)ディレクトリに指定したタイプのリソースを生成しますresValueを使用します。したがって、文字列の場合は、@string/base_urlまたはgetResources().getString(R.string.base_url)のXMLで参照できます。

manifestPlaceholdersを使用すると、AndroidManifest.xmlに置換文字を追加することができます。たとえば、GCMでは<uses-permission>タグの名前をX.permission.C2D_MESSAGEに設定する必要があります。XはアプリケーションIDです。 applicationIdは、レコードの

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> 

:あなたは別のアプリケーションIDを持つ複数のビルドフレーバーを持っているのであれば、あなたはmanifestPlaceholdersタグを使用して、それは同じように、正しい値に置き換えられますあなたのAndroidManifest.xmlでそれを使用することができますマニフェストプレースホルダとして自動的に追加されるので、それを自分で定義する必要はありませんが、これは単なる例です。

基本的には、必要な場所によって異なります。 XMLリソース(レイアウト、メニューなど)に必要な場合は、resValueが必要です。 Javaコードから直接アクセスする必要がある場合は、buildConfigFieldがこのトリックを行います。マニフェスト内の置換については、manifestPlaceholdersが必要です。

+1

意味があります。明確な説明をありがとう! –

関連する問題