নির্ভরতাগুলি কনফিগার করার 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 * এর রেফারেন্স )
অ্যান্ড্রয়েড ডকুমেন্টেশন