বিদ্যমান উত্তরগুলির কোনওটিই আমাকে সন্তুষ্ট করেনি, তবে লিবার্টিটি খুব কাছে ছিল। সুতরাং আমি এই এটি কিভাবে করছি। এই মুহুর্তে সবার সাথে আমি কাজ করছি:
- অ্যান্ড্রয়েড স্টুডিও বিটা 0.8.2
- গ্রেডেল প্লাগইন 0.12। +
- গ্রেডল 1.12
আমার লক্ষ্য চালানো হয় Debug
বরাবর সংস্করণ Release
একই ডিভাইসে একই ব্যবহার করে সংস্করণ ContentProvider
।
ইন build.gradle ডিবাগ বিল্ড জন্য আপনার অ্যাপের সেট প্রত্যয়:
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
ইন Andro আইডি ফাইল সেট 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 ব্যবহার করেন তবে পড়তে থাকুন!
সিঙ্কএডাপ্টারের জন্য আপডেট (14.11.2014)
আবার আমি আমার বর্তমান সেটআপ দিয়ে শুরু করব:
- অ্যান্ড্রয়েড স্টুডিও বিটা 0.9.2
- গ্রেডল প্লাগইন 0.14.1
- গ্রেডেল 2.1
মূলত, আপনার যদি বিভিন্ন বিল্ডের জন্য কিছু মান কাস্টমাইজ করতে হয় তবে আপনি এটি বিল্ডড্রেডল ফাইল থেকে করতে পারেন:
- এটি ক্লাস থেকে অ্যাক্সেস করতে বিল্ডকনফিগফিল্ড ব্যবহার করুন
BuildConfig.java
- এটি থেকে উত্স অ্যাক্সেস করতে রেজওয়ালিউ ব্যবহার করুন যেমন @ স্ট্রিং / আপনার_মূল্য
সংস্থানগুলির বিকল্প হিসাবে, আপনি পৃথক বিল্ডটাইপ বা স্বাদ ডিরেক্টরি তৈরি করতে পারেন এবং সেগুলির মধ্যে এক্সএমএল বা মানগুলি ওভাররাইড করতে পারেন। তবে আমি নীচের উদাহরণে এটি ব্যবহার করতে যাচ্ছি না।
উদাহরণ
ইন 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"'
}
}
আপনি বিল্ডকনফিগ.জভা ক্লাসে ফলাফল দেখতে পাবেন
public static final String ACCOUNT_TYPE = "your.syncadapter.type.debug";
এবং বিল্ড / জেনারেট / রেজ / জেনারেট / ডিবাগ / ভ্যালু / জেনারেট.এক্সএমএল
<?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>
আপনার প্রমাণীকরণে। এক্সএমএল বিল্ড.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 + স্পেস) এই উত্পন্ন উত্সগুলির জন্য কাজ করে না তাই আপনাকে সেগুলি ম্যানুয়ালি টাইপ করতে হবে