ট্র্যাজিটিভ = গ্রেডলে ঠিক কী করে (আর্ট ক্র্যাশলিটিক্স)?


174

গ্র্যাডল transitive = trueঠিক কী করে ? গ্রেডল ডকুমেন্টেশন থেকে এটি পরিষ্কার নয় । এটি compileঅভ্যন্তরের প্রসঙ্গে build.gradle। আমার ক্ষেত্রে আমি অ্যান্ড্রয়েডের ক্র্যাশলিটিক্স নির্ভর করছি।

compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') {
    transitive = true;
}

বেশ কয়েকটি গ্রেডল ডক্স ( এখানে এবং এখানে ) বোঝায় যে "ট্রানজিটিভ" ডিফল্টকে সত্য। তবুও transitive = trueট্রানজিটিভ নির্ভরতাগুলির ফলাফলগুলি সরিয়ে ফেলা হচ্ছে না (বিশেষত KitGroup)।

class file for io.fabric.sdk.android.KitGroup not found

দস্তাবেজগুলি এটি সত্যের ডিফল্ট বলে, তবুও প্রকৃত আচরণটি বিপরীত বলে মনে হয়।

আমি গ্রেডল চালাচ্ছি 2.2.1। সম্ভবত আচরণটি ২.২ এবং ২.৪ এর মধ্যে পরিবর্তিত হয়েছে?

সম্পাদনা করুন : সম্পর্কিত ট্রানজিটিভ নির্ভরতা গ্রেড গ্রেড ব্যবহার করে আর লাইব্রেরির জন্য সমাধান করা হয় না


কনফিগারেশন সংজ্ঞায়িত করার সময়, বা নির্ভরতা নির্ধারণ করার সময়?
18-24 এ dnault

জার ফাইলগুলির নির্ভরতাগুলি সাব প্রকল্পগুলিতে উন্নীত হয়। প্রতিটি প্রকল্পের তার নির্ভরতাগুলি স্পষ্টভাবে সংজ্ঞায়িত করার প্রয়োজন হয় না।
কনরাড

এই ডকুমেন্টেশনে ঠিক কী পরিষ্কার নয় ?
ওলেগ এস্তেখিন

3
@ ওলেগস্টেখখিন ডকুমেন্টেশনগুলি রানটাইমের সাথে আমার দেখা আচরণের সাথে মেলে না
স্টিভ কুও

উত্তর:


153

আপনি @aarস্বরলিপি ব্যবহার করছেন ।
এর অর্থ হল যে আপনি কেবল আর্ট আর্টিফ্যাক্টটিই ডাউনলোড করতে চান এবং কোনও নির্ভরতা নেই।
আপনি নথির এই অংশটি যাচাই করতে পারেন : বিভাগটি
পরীক্ষা করুন 1.4.1.2. Artifact only notation:

একটি আর্টিফ্যাক্ট কেবল স্বরলিপি একটি মডিউল নির্ভরতা তৈরি করে যা নির্দিষ্ট এক্সটেনশন সহ কেবলমাত্র আর্টিফ্যাক্ট ফাইলটি ডাউনলোড করে। বিদ্যমান মডিউল বর্ণনাকারী উপেক্ষা করা হয়

স্বীকৃতিটি ব্যবহার করে @aarযদি আপনি নির্ভরতাগুলি ডাউনলোড করতে চান তবে আপনার যুক্ত করা উচিত transitive=true

আমি আশা করব যে @aar বাদ দেওয়া এটি ট্রানজিটিভ বৈশিষ্ট্য যুক্ত না করে কাজ করা উচিত।


7
আমি নিশ্চিত করেছি যে @aar বাদ দেওয়া এবং ট্রানজিটিভ বৈশিষ্ট্য কাজগুলি সরিয়ে দেওয়া। এখানে উদ্দেশ্য হ'ল ডেভেলপাররা ফ্যাব্রিক কিটগুলি স্পষ্টভাবে উল্লেখ করে (উদাহরণস্বরূপ, "সংকলন 'com.crashlytics.sdk.android:crashlytics .5। ট্রানজিটিভ নির্ভরতা। আপনি যদি ট্রানজিটিভ = মিথ্যা সেট করে থাকেন তবে io.fabric.sdk.android.Fabric ক্লাসটি সংকলনের সময় পাওয়া যাবে না।
মার্ক ম্যাককেলল্যান্ড

7
এই "বৈশিষ্ট্য "টি খুব খারাপ, আমি এর নির্ভরতা সহ একটি আয়ার চাই। @aar ছাড়াই এটি বয়াম জন্য অনুসন্ধান করে এবং অভিযোগ
dowi

12

আরও সাধারণ নোটে: লাইব্রেরিতে সেট transitive = falseকরার crashlyticsফলে crashlytics(= "ক্ষণস্থায়ী লাইব্রেরি") দ্বারা প্রয়োজনীয় সমস্ত গ্রন্থাগার উপেক্ষা করা এবং সেগুলি ডাউনলোড এবং লিঙ্ক করা না grad

আপনাকে নিজের প্রকল্পে ম্যানুয়ালি প্রয়োজনীয় লাইব্রেরি যুক্ত করতে হবে বা অন্যান্য নির্ভরতা দ্বারা যুক্ত অন্যান্য ক্ষণস্থায়ী গ্রন্থাগারগুলির উপর নির্ভর করতে হবে।

গ্রেডের জন্য ডিফল্ট হয় transitive = true

উদাহরণ এবং সম্পূর্ণ ব্যাখ্যা এখানে: http://www.devsbedevin.net/android- বোঝার- গ্রেডল- নির্ভরতা- এবং- পুনর্বিবেচনা- কনফ্লিক্টস /


লিঙ্ক কাজ করে না। আমি আশঙ্কা করছি এটি ডিফল্টরূপে সত্য নয়, কারণ কিছু ক্ষেত্রে বিশেষভাবে সত্য লিখেন
মোরোজভ

@ মোরোজভ লিঙ্ক স্থির হয়েছে। গোটার জন্য ধন্যবাদ!
Vaiden স্বাগতম

5

আমার অনুমান যে ক্র্যাশলাইটিক্স আর্টিক্ট যা আপনি ম্যানুয়ালি উল্লেখ করছেন তা নির্ভরশীলতাগুলি ট্রানজিট ( transitive=false) হিসাবে না হিসাবে নির্দিষ্ট করে দেয় যাতে আপনাকে ডিফল্টরূপে সেই নির্ভরতা আনতে বাধ্য করা হয় না। এজন্য আপনি বিপরীত আচরণটি দেখছেন। উদাহরণস্বরূপ, কিছু বিকাশকারী সমস্ত গুগল প্লে পরিষেবাদি বা ক্র্যাশলাইটিক্স যদি উপস্থিত থাকে তবে অন্য যে কোনও কিছু ব্যবহার করতে পারে না pull

সুতরাং, এটিকে সরিয়ে দিয়ে গ্রেডল আর নির্ভরতা টানবে না এবং এটি তৈরি করতে ব্যর্থ হয়। আপনার যদি প্রয়োজন হয় তবে আপনি সেই নির্ভরতা ম্যানুয়ালি নির্দিষ্ট করতে পারেন।

এটিই বলা হচ্ছে - আমি মনে করি যে বড় সমস্যাটি হ'ল আপনার ক্র্যাশলিটিক্সের নিদর্শনগুলি সরাসরি উল্লেখ করা উচিত নয় - আপনার ফ্যাব্রিকটি ব্যবহার করা উচিত এবং ফলস্বরূপ ক্র্যাশলিটিক্সে টানতে হবে: https://dev.twitter.com/fabric/ অ্যান্ড্রয়েড / একীভূত


ফ্যাব্রিকে স্থানান্তরিত হওয়ার জন্য নির্দেশাবলী ক্র্যাশলাইটিক্স আর্টিক্টকে সরাসরি উল্লেখ করে নির্দিষ্ট করে, আপনি ধরে নিচ্ছেন যে সেই ফ্যাব্রিক "কিট" ব্যবহার করছেন: ফ্যাব্রিক.ইও / ইমিগ্রেশনস
মার্ক ম্যাককেলল্যান্ড

দেখে মনে হচ্ছে উদ্দেশ্যটি হ'ল আপনি কিটগুলি সরাসরি উল্লেখ করেন এবং তারা ট্রানজিটিভ নির্ভরতার মাধ্যমে io.fabric.sdk.android ক্লাসে টান দেয়।
মার্ক ম্যাককেলল্যান্ড

1

এই নির্ভরশীলতার ট্রানজিটিভ নির্ভরতা সহ বা বাদ দিয়ে সমাধান করা উচিত কিনা সেট করে। এই নির্ভরতার সাথে সম্পর্কিত শৈল্পিকাগুলির মধ্যে অন্যান্য কৃত্রিমগুলির উপর নির্ভরতা থাকতে পারে sel পরেরগুলিকে ট্রানজিটিভ নির্ভরতা বলে।


1

গ্রেডল ডিফল্টরূপে ট্রানজিটিভ নির্ভরতা অনুসরণ করে। যদি আপনি এটি কোনও নির্দিষ্ট লাইব্রেরির জন্য বন্ধ করতে চান, তবে ট্রানসিটিভ ফ্ল্যাগটি ব্যবহার করুন।

ট্রানজিটিভ ফ্ল্যাগের মানকে মিথ্যে পরিবর্তন করা ট্রানজিটিভ নির্ভরতাগুলির ডাউনলোডকে বাধা দেয়, তাই আপনাকে নিজের যা প্রয়োজন তা যুক্ত করতে হবে। আপনি যদি কোনও অতিরিক্ত নির্ভরতা ছাড়াই কেবলমাত্র একটি মডিউল জার চান, আপনি এটিও নির্দিষ্ট করতে পারেন।


2
উচ্চ উত্সাহিত উত্তরের পরামর্শের বাইরে এটি কী মূল্য যুক্ত করেছে?
hrbrmstr

-19

transitiveসংক্রমণকে নিয়ন্ত্রণ করে। গ্রেডল সাধারণত ট্রানজিটিভের ডিফল্ট হয়, যখন তা না করে except ট্রানজিটিভিটি এবং শ্রেণিবদ্ধকারীগুলির সাথে একটি ত্রুটি রয়েছে, https://issues.gradle.org/browse/GRADLE-3188 দেখুন


39
আমি মনে করি এটি ন্যায্য যে আপনি একটি বাগ চিহ্নিত করেছেন। তবে, সম্পত্তি সম্পর্কিত আপনার বিবরণ সহায়ক নয়। "ট্রানজিটিভ ট্রান্সজিটিভিটি নিয়ন্ত্রণ করে rad সত্যি, বাবা? ... সত্যি?
w3bshark

4
@ w3bshark আমার মনে হয়েছে এটি মজার। "অভিজ্ঞতার ক্ষেত্রে ডিফল্ট, যখন তা হয় না" ব্যতীত আমার অভিজ্ঞতার দিক থেকে এটি বেশ নির্ভুল।
নবীন

4
@ w3bshark আমি ভোটের বিষয়ে কম চিন্তা করতে পারি। আমি যা শিখেছি তা সম্প্রদায়ের সাথে ভাগ করে নিচ্ছি।
স্টিভ কুও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.