दिलचस्प पोस्ट
ऑब्जेक्ट के रूप में वेब एपीआई पद्धति के लिए json POST डेटा कैसे पास करें? स्विंग: जेफ्रैम की छवि प्राप्त करें एकल पृष्ठ एप्लिकेशन – आंशिक दृश्य के आधार पर गतिशील रूप से लोड जेएस फ़ाइल jquery: कीपप्रेस, ctrl + c (या ऐसा कुछ कॉम्बो) क्लास का नाम दिए गए एक जार फ़ाइल ढूंढें? std :: vector और बहुआयामी arrays की लगातार स्मृति इस प्रतीत होता है सरल, स्पष्ट मामला से सी # अनुमानक प्रकार क्यों नहीं कर सकते XMLHttpRequest में विभिन्न तैयारियों का क्या मतलब है, और मैं उनका उपयोग कैसे कर सकता हूं? IE7 मोड में IE10 रेंडर करता है मानक मोड को कैसे लागू करें? जावा से एक लिनक्स शेल कमांड खोलना चाहते हैं JavaScript का उपयोग करते हुए AngularJS बूटस्ट्रैप UI में मोडल विंडो को शामिल करना हैशिंग फ़ंक्शन क्या हैशेट क्लास को लागू करने के लिए जावा का उपयोग करता है? IOS या OSX पर सक्रिय इंटरनेट कनेक्शन की जांच कैसे करें? 'MyEntities' नामक किसी कनेक्शन स्ट्रिंग को एप्लिकेशन कॉन्फ़िग फ़ाइल में नहीं मिला Int सरणी और int सरणी के बीच का अंतर

एंड्रॉइड प्रोजेक्ट में थ्रीटीएपीपी का उपयोग कैसे करें

मैं यह सवाल जोड़ रहा हूं क्योंकि मैं जावा और एंड्रॉइड के लिए नया हूँ और मैंने यह पता लगाने में घंटों के लिए खोज की है। जवाब संबंधित उत्तरों के संयोजन से आया था, इसलिए मुझे लगा कि मैं उस दस्तावेज़ को लिखता हूं जो मैंने संघर्ष किया हो सकता है और किसी और के लिए सीखा है। उत्तर देखो।

थोड़ी पृष्ठभूमि के लिए, मेरा अनुभव ज्यादातर PHP में है और रूबी का थोड़ा सा है। मेरी एकमात्र ओएस लिनक्स (उबंटू स्टूडियो) है, और मैं एंड्रॉइड स्टूडियो 2.1.2 में अपना पहला एंड्रॉइड ऐप्लीकेशन विकसित कर रहा हूं। मेरा जावा सेटअप निम्न है:

>java -version > openjdk version "1.8.0_91" > OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14) > OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) 

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड प्रोजेक्ट में थ्रीटीएपीपी का उपयोग कैसे करें"

पहली डिस्कवरी: आपको java.time टाइम बैकपोर्ट, या यहां तक ​​कि जोडा-टाइम के बजाय तीन टाएंबिप का प्रयोग क्यों करना है

यह एक नया मानक परिभाषित करने की बहुत लंबी प्रक्रिया का एक बहुत ही छोटा संस्करण है ये सभी संकुल बहुत ज्यादा समान हैं: पुस्तकालय जो जावा के लिए अच्छे, आधुनिक समय से निपटने की सुविधा प्रदान करते हैं। मतभेद सूक्ष्म लेकिन महत्वपूर्ण हैं

सबसे स्पष्ट समाधान java.timejava.time में अंतर्निहित उपयोग करना होगा, क्योंकि यह जावा में समय और तिथियों से निपटने का नया मानक तरीका है। यह JSR-310 का कार्यान्वयन है, जो जोडा-टाइम पुस्तकालय के आधार पर समय से निपटने के लिए एक नया मानक प्रस्ताव था।

हालांकि, java.time जावा 8 में पेश किया गया था। मार्शमॉलो तक एंड्रॉइड 7 जावा ("एंड्रॉइड एन" जावा 8 भाषा सुविधाओं को पेश करने वाला पहला संस्करण है) पर चलता है। इस प्रकार, जब तक आप केवल एंड्रॉइड एन और इसके बाद के संस्करण को लक्षित नहीं करते हैं, आप जावा 8 भाषा सुविधाओं पर भरोसा नहीं कर सकते (मुझे यकीन नहीं है कि यह 100% सच है, लेकिन मैं इसे समझता हूं)। इसलिए java.time । समय बाहर है

अगले विकल्प Joda-Time हो सकता है, क्योंकि JSR-310 Joda-Time पर आधारित था। हालांकि, जैसा कि थ्रीटीएपीपी रीमेम इंगित करता है, कई कारणों से, जोडा-टाइम सबसे अच्छा विकल्प नहीं है।

अगला है तीन टन बैकपोर्ट, जावा 8 जावा। java.time पैकेज का (अपूर्ण) बैकपोर्ट, जावा 7 में। यह अधिकांश उपयोग के मामलों के लिए ठीक है, लेकिन, जैसा कि थ्रीटैप रीडमे में दर्शाया गया है, इसमें एंड्रॉइड के साथ प्रदर्शन समस्याएं हैं

तो आखिरी और प्रतीत होता है सही विकल्प 3TenABP है

दूसरी खोज: निर्माण उपकरण और निर्भरता प्रबंधन

एक कार्यक्रम संकलित करने से – विशेष रूप से बाहरी पुस्तकालयों के एक समूह का उपयोग करते हुए – जटिल है, जावा लगभग हमेशा प्रक्रिया का प्रबंधन करने के लिए एक "बिल्ड टूल" का उपयोग करता है। बनाओ, अपाचे चींटी, अपाचे मेवेन, और ग्रैड सभी उपकरण का निर्माण कर रहे हैं जो जावा प्रोग्राम्स के साथ उपयोग किए जाते हैं ( इस पोस्ट को तुलना के लिए देखें)। जैसा कि आगे नीचे बताया गया है, Gradle एंड्रॉइड प्रोजेक्ट्स के लिए चुना गया निर्माण उपकरण है।

इन निर्माण उपकरणों में निर्भरता प्रबंधन शामिल हैं अपाचे मेवेन एक केंद्रीय पैकेज रिपॉजिटरी को शामिल करने वाला पहला प्रतीत होता है। मावेन ने मेवेन सेंट्रल रिपॉजिटरी की शुरुआत की, जो कि पीपीपी के composer साथ कार्यात्मकता को रूकेगाम्स.org के साथ पैकैजिस्ट और रूबी के gem की अनुमति देता है। दूसरे शब्दों में, मेवेन सेंट्रल रिपॉजिटरी मैवेन (और ग्रेडल) के लिए है जो पैकेजैस्ट को संगीतकार के लिए है – संस्करणबद्ध पैकेजों के लिए एक निश्चित और सुरक्षित स्रोत।

तीसरी डिस्कवरी: एंड्रॉइड प्रोजेक्ट्स में ग्रैडल हैंडल्स डिपेंडेंसीज़

मेरी टू-डू सूची पर उच्चतर यहां ग्रैडल डॉक्स पढ़ना है , जिनमें उनके मुफ्त ईपुस्तक भी शामिल हैं। क्या मैंने इन हफ्ते पहले पढ़ा था जब मैंने एंड्रॉइड सीखना शुरू कर दिया था, मुझे निश्चित ही पता होगा कि ग्रेडड एंड्रॉइड प्रोजेक्ट्स में निर्भरता का प्रबंधन करने के लिए मैवेन सेंट्रल रिपॉजिटरी का इस्तेमाल कर सकते हैं। इसके अलावा, एंड्रॉइड स्टूडियो 0.8.9 के रूप में इस स्टैक ओव्हरफ्लो जवाब में विस्तृत बताया गया है, ग्रेड इनवेस्टमेंट मेवेन सेंट्रल रिपॉजिटरी का उपयोग करता है, जिसका अर्थ है कि आपको रेपो की स्थापना के लिए कोई अतिरिक्त कॉन्फ़िग नहीं करना है – आप बस निर्भरता की सूची

चौथा डिस्कवरी: प्रोजेक्ट निर्भरताएं [प्रोजेक्ट डायर] /app/build.gradle में सूचीबद्ध हैं

फिर, उन लोगों के लिए स्पष्ट है जिनको जावा में ग्रेडल का उपयोग करने का कोई अनुभव है, लेकिन मुझे यह पता लगाने में कुछ देर लग गई। यदि आप लोगों को कह रहे हैं "ओह, तो बस" compile 'this-or-that.jar' "को compile , या कुछ इसी तरह जानें, कि compile उस बिल्ड में एक निर्देश है। ग्रैडल फ़ाइल जो संकलन-समय निर्भरता दर्शाती है यहां निर्भरता प्रबंधन पर आधिकारिक ग्रेड पृष्ठ है।

पांचवें डिस्कवरी: थ्री टीएनएपीपी जेक व्हार्टन द्वारा प्रबंधित है, थ्री टीन द्वारा नहीं

फिर भी एक और मुद्दा मैंने बहुत समय व्यतीत किया। यदि आप मेवेन सेंट्रल में थ्रीटीन की तलाश करते हैं, तो आप केवल threetenbp लिए पैकेज देखेंगे, threetenabp नहीं। अगर आप तीन टाइनबिप के लिए गिटौब रेपो में जाते हैं , तो आप देखेंगे कि कुख्यात compile 'this-or-that' लाइन को रीडमेम के डाउनलोड अनुभाग के तहत।

जब मैंने पहली बार इस गिटौब रिपो को मारा, मुझे नहीं पता था कि उस संकलन की रेखा का क्या मतलब है, और मैंने इसे अपने टर्मिनल में चलाने की कोशिश की (एक स्पष्ट और उम्मीद के मुताबिक विफलता के साथ)। निराश, मैं इसके बारे में तब तक नहीं लौटा था जब तक मुझे बाकी के बारे में सोचा नहीं था, और आखिरकार यह महसूस हुआ कि यह com.jakewharton.threetenabp रिपो लाइन है जो com.jakewharton.threetenabpcom.jakewharton.threetenabpcom.jakewharton.threetenabp रेपो के लिए इंगित करता है, जैसा कि org.threeten विरोध में है। यही कारण है कि मैंने सोचा था कि तीन टाइनबैप पैकेज मेवेन रेपो में नहीं था

सारांश: इसे काम करना

अब यह सब बहुत आसान लगता है आप अपने [project folder]/app/build.gradle फ़ाइल में compile 'com.jakewharton.threetenabp:threetenabp:1.0.3' सुनिश्चित कर एक एंड्रॉइड प्रोजेक्ट में आधुनिक समय प्रबंधन कार्यों को प्राप्त कर सकते हैं इसके dependencies अनुभाग में पंक्ति:

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "me.ahuman.myapp" minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile 'com.jakewharton.threetenabp:threetenabp:1.0.3' }