নির্ভরতাগুলি কনফিগার করার compileজন্য গ্রেডল কীওয়ার্ডটি apiএবং implementationকীওয়ার্ডের পক্ষে অবচয় করা হয়েছিল ।
ব্যবহার apiঅবচিত ব্যবহারের সমতূল্য compile, তাই আপনি যদি সমস্ত প্রতিস্থাপন compileসঙ্গে apiসবকিছু সবসময় কাজ হবে।
implementationকীওয়ার্ডটি বুঝতে নিম্নলিখিত উদাহরণটি বিবেচনা করুন।
EXAMPLE টি
ধরুন আপনার কাছে এমন একটি লাইব্রেরি রয়েছে MyLibraryযা অভ্যন্তরীণভাবে অন্য একটি লাইব্রেরি ব্যবহার করে InternalLibrary। এটার মতো কিছু:
// 'InternalLibrary' module
public class InternalLibrary {
public static String giveMeAString(){
return "hello";
}
}
// 'MyLibrary' module
public class MyLibrary {
public String myString(){
return InternalLibrary.giveMeAString();
}
}
ধরা যাক এর মতো MyLibrary build.gradleব্যবহারগুলি apiকনফিগারেশন dependencies{}:
dependencies {
api project(':InternalLibrary')
}
আপনি নিজের কোডটিতে ব্যবহার করতে চান MyLibraryতাই আপনার অ্যাপ্লিকেশনটিতে build.gradleআপনি এই নির্ভরতা যুক্ত করুন:
dependencies {
implementation project(':MyLibrary')
}
apiকনফিগারেশন ব্যবহার করে (বা অবমানিত compile) আপনি InternalLibraryআপনার অ্যাপ্লিকেশন কোডটিতে অ্যাক্সেস করতে পারবেন :
// Access 'MyLibrary' (granted)
MyLibrary myLib = new MyLibrary();
System.out.println(myLib.myString());
// Can ALSO access the internal library too (and you shouldn't)
System.out.println(InternalLibrary.giveMeAString());
এইভাবে মডিউলটি MyLibraryকোনও কিছুর অভ্যন্তরীণ বাস্তবায়ন সম্ভাব্যভাবে "ফাঁস" করছে। আপনি এটি ব্যবহার করতে পারবেন না (কারণ এটি সরাসরি আপনার দ্বারা আমদানি করা হয়নি)।
implementationকনফিগারেশন এই প্রতিরোধ চালু করা হয়। সুতরাং এখন আপনি যদি এর implementationপরিবর্তে ব্যবহার apiকরেন MyLibrary:
dependencies {
implementation project(':InternalLibrary')
}
আপনি InternalLibrary.giveMeAString()আপনার অ্যাপ্লিকেশন কোডটিতে আর কল করতে পারবেন না।
বক্সিং কৌশল এই ধরনের অ্যান্ড্রয়েড Gradle জানাতে চাই যে, যদি তোমরা কিছু সম্পাদন করা প্লাগ ইন পারবেন InternalLibrary, এটি শুধুমাত্র এর কম্পায়লেশান আরম্ভ আবশ্যক MyLibraryএবং না আপনার সমগ্র অ্যাপের কম্পায়লেশান, কারণ আপনি অ্যাক্সেস না থাকে InternalLibrary।
যখন আপনার অনেক নেস্টেড নির্ভরতা থাকে তখন এই প্রক্রিয়াটি বিল্ডকে অনেক গতিময় করতে পারে। (এর সম্পূর্ণ বোঝার জন্য ভিডিওটি লিঙ্কটি শেষে দেখুন)
উপসংহার
আপনি যখন নতুন অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.XX এ স্যুইচ করেন, আপনার কীওয়ার্ড (1 *)compile দিয়ে আপনার সমস্তটি প্রতিস্থাপন করা উচিত । তারপরে আপনার অ্যাপ্লিকেশনটি সংকলন করে পরীক্ষা করার চেষ্টা করুন। যদি সবকিছু ঠিক থাকে তবে কোডটি ঠিক তেমনি রেখে দিন, যদি আপনার সমস্যা হয় তবে আপনার নির্ভরতাগুলির সাথে আপনার কিছু ভুল আছে বা আপনি এমন কিছু ব্যবহার করেছেন যা এখন ব্যক্তিগত এবং আরও অ্যাক্সেসযোগ্য নয়। অ্যান্ড্রয়েড গ্রেডল প্লাগইন ইঞ্জিনিয়ার জেরোম ডোকেজ (1 ) * ) এর পরামর্শimplementation
আপনি যদি কোনও গ্রন্থাগার ম্যানটেনার apiহন তবে আপনার লাইব্রেরির পাবলিক এপিআইয়ের জন্য প্রয়োজনীয় প্রতিটি নির্ভরতার জন্য আপনাকে ব্যবহার করা উচিত , যখন implementationপরীক্ষা নির্ভরতা বা নির্ভরতার জন্য ব্যবহার করা উচিত যা চূড়ান্ত ব্যবহারকারীদের দ্বারা ব্যবহার করা উচিত নয়।
কার্যকর নিবন্ধ বাস্তবায়ন এবং এপিআইয়ের মধ্যে পার্থক্য প্রদর্শন করে
রেফারেন্স
(সময় সাশ্রয়ের জন্য এটি একই ভিডিও বিভক্ত)
গুগল আই / ও 2017 - গ্রেডল কীভাবে গতি বাড়ায় (পুরো ভিডিও)
গুগল আই / ও 2017 - গ্রেডল কীভাবে গতি বাড়ায় (নতুন গ্রেড প্লাগইন 3.0.0 অংশ কেবলমাত্র)
গুগল আই / ও 2017 - গ্রেডল কীভাবে গতি বাড়ায় ( 1 * এর রেফারেন্স )
অ্যান্ড্রয়েড ডকুমেন্টেশন