मौजूदा जवाबों में से किसी ने भी मुझे संतुष्ट नहीं किया, हालांकि लिबर्टी करीब थी। तो यह है कि मैं यह कैसे कर रहा हूँ। सबसे पहले मैं जिस समय के साथ काम कर रहा हूं:
- एंड्रॉइड स्टूडियो बीटा 0.8.2
- ग्रेड प्लगइन 0.12। +
- ढाल 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 के लिए अद्यतन (14.11.2014)
एक बार फिर मैं अपने वर्तमान सेटअप के साथ शुरू करूंगा:
- एंड्रॉयड स्टूडियो बीटा 0.9.2
- ग्रेड प्लगइन 0.14.1
- गाद २.१
मूल रूप से, यदि आपको विभिन्न बिल्ड के लिए कुछ मानों को अनुकूलित करने की आवश्यकता है, तो आप इसे बिल्ड.ग्रेड फ़ाइल से कर सकते हैं:
- वर्ग से इसे एक्सेस करने के लिए buildConfigField का उपयोग करें
BuildConfig.java
- संसाधनों से इसे एक्सेस करने के लिए resValue का उपयोग करें जैसे @ स्ट्रिंग / your_value
संसाधनों के लिए एक विकल्प के रूप में, आप अलग बिल्डटाइप या स्वाद निर्देशिका बना सकते हैं और XMLs या उनके भीतर मानों को ओवरराइड कर सकते हैं। हालांकि, मैं नीचे दिए गए उदाहरण में इसका उपयोग नहीं करने जा रहा हूं।
उदाहरण
में 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";
और निर्माण में / उत्पन्न / Res / उत्पन्न / डिबग / मान / उत्पन्न। 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>
अपने प्रमाणक । 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"
/>
अपने Syncadcape.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) इन उत्पन्न संसाधनों के लिए काम नहीं करती है, इसलिए आपको उन्हें मैन्युअल रूप से लिखना होगा