Mevcut cevapların hiçbiri beni tatmin etmedi, ancak Liberty yakındı. Yani ben böyle yapıyorum. Öncelikle şu anda çalışıyorum:
- Android Studio Beta 0.8.2
- Gradle eklentisi 0.12. +
- Gradle 1.12
Benim hedef çalıştırmaktır Debug
birlikte sürümü Release
aynı kullanılarak aynı cihaz üzerinde sürümü ContentProvider
.
Uygulamanızın build.gradle içinde Hata ayıklama derlemesi için son eki ayarlayın:
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
In AndroidManifest.xml dosya kümesi android:authorities
, aramalarınızdan mülkiyet ContentProvider
:
<provider
android:name="com.example.app.YourProvider"
android:authorities="${applicationId}.provider"
android:enabled="true"
android:exported="false" >
</provider>
Uygulamanızda ihtiyaç duyulan her yerde kullanılabilecek kod seti AUTHORITY
özelliğinizde:
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".provider";
İpucu: ÖncedenBuildConfig.PACKAGE_NAME
Bu kadar! Bir cazibe gibi çalışacak. SyncAdapter kullanıyorsanız okumaya devam edin!
SyncAdapter Güncellemesi (14.11.2014)
Bir kez daha mevcut kurulumuma başlayacağım:
- Android Studio Beta 0.9.2
- Gradle eklentisi 0.14.1
- Gradle 2.1
Temel olarak, farklı yapılar için bazı değerleri özelleştirmeniz gerekiyorsa, bunu build.gradle dosyasından yapabilirsiniz:
- kullanmak buildConfigField bu bilgilere erişmek için
BuildConfig.java
sınıfın
- Kullanım resValue erişmek BT kaynaklarını örn gelen @ dize / your_value
Kaynaklar için bir alternatif olarak, ayrı buildType veya lezzet dizinleri oluşturabilir ve bunların içindeki XML'leri veya değerleri geçersiz kılabilirsiniz. Ancak, aşağıdaki örnekte kullanmayacağım.
Misal
Gelen build.gradle dosyasına aşağıdakileri ekleyin:
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"'
}
}
Sonuçları BuildConfig.java sınıfında göreceksiniz
public static final String ACCOUNT_TYPE = "your.syncadapter.type.debug";
ve derleme / oluşturulmuş / res / oluşturulmuş / hata ayıklama / değerler / oluşturulan.xml'de
<?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>
Senin içinde authenticator.xml kullanımı kaynak build.gradle dosyasında belirtilen
<?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"
/>
Senin içinde syncadapter.xml yine aynı kaynağı kullanmak ve @ dize / yetkilileri de
<?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"
/>
İpucu: Otomatik tamamlama (Ctrl + Boşluk) bu oluşturulan kaynaklar için çalışmaz, bu nedenle bunları manuel olarak yazmanız gerekir