既存の答えはどれも私を満足させませんでしたが、リバティーは近かったです。これが私がやっている方法です。まず第一に、私が取り組んでいる現時点で:
- Android Studio Beta 0.8.2
- Gradleプラグイン0.12以降
- Gradle 1.12
私の目標は、同じを使用して、同じデバイスでDebug
バージョンと一緒にRelease
バージョンを実行することContentProvider
です。
ではbuild.gradleデバッグビルドのためのアプリのセットサフィックスの:
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
内のAndroidManifest.xmlファイルセットandroid:authorities
あなたのプロパティContentProvider
:
<provider
android:name="com.example.app.YourProvider"
android:authorities="${applicationId}.provider"
android:enabled="true"
android:exported="false" >
</provider>
あなたには、コードセットのAUTHORITY
実装に必要な場所で使用することができますプロパティ:
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".provider";
ヒント:以前はBuildConfig.PACKAGE_NAME
それでおしまい!それは魅力のように機能します。SyncAdapterを使用する場合は、読み続けてください!
SyncAdapterの更新(2014年11月14日)
もう一度、現在のセットアップから始めます。
- Android Studio Beta 0.9.2
- Gradleプラグイン0.14.1
- Gradle 2.1
基本的に、ビルドごとに値をカスタマイズする必要がある場合は、build.gradleファイルから行うことができます。
- buildConfigFieldを使用して
BuildConfig.java
クラスからアクセスします
- 使用resValueアクセスにITリソースなどから@文字列/ your_value
リソースの代替として、個別のbuildTypeまたはフレーバーディレクトリを作成し、それらのXMLまたは値をオーバーライドできます。ただし、以下の例では使用しません。
例
でbuild.gradleファイル次の行を追加します。
defaultConfig {
resValue "string", "your_authorities", applicationId + '.provider'
resValue "string", "account_type", "your.syncadapter.type"
buildConfigField "String", "ACCOUNT_TYPE", '"your.syncadapter.type"'
}
buildTypes {
debug {
applicationIdSuffix ".debug"
resValue "string", "your_authorities", defaultConfig.applicationId + '.debug.provider'
resValue "string", "account_type", "your.syncadapter.type.debug"
buildConfigField "String", "ACCOUNT_TYPE", '"your.syncadapter.type.debug"'
}
}
BuildConfig.javaクラスに結果が表示されます
public static final String ACCOUNT_TYPE = "your.syncadapter.type.debug";
およびbuild / generated / res / generated / debug / values / generated.xml内
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Values from default config. -->
<item name="account_type" type="string">your.syncadapter.type.debug</item>
<item name="authorities" type="string">com.example.app.provider</item>
</resources>
あなたの中authenticator.xmlの build.gradleファイルで指定された使用リソース
<?xml version="1.0" encoding="utf-8"?>
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="@string/account_type"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
/>
あなたにsyncadapter.xml再び同じリソースを使用すると、文字列/当局@過ぎます
<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="@string/authorities"
android:accountType="@string/account_type"
android:userVisible="true"
android:supportsUploading="false"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
/>
ヒント:これらの生成されたリソースではオートコンプリート(Ctrl + Space)は機能しないため、手動で入力する必要があります