এই উত্তরটি মধ্যে পার্থক্য প্রকট হবে implementation, apiএবং compileএকটি প্রকল্প নিয়ে।
ধরা যাক আমার তিনটি গ্রেডল মডিউল সহ একটি প্রকল্প রয়েছে:
- অ্যাপ্লিকেশন (একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন)
- মাইন্ড্রয়েডলাইবারি (একটি অ্যান্ড্রয়েড লাইব্রেরি)
- মাইজাবালিবারি (একটি জাভা গ্রন্থাগার)
appmyandroidlibraryনির্ভরতা হিসাবে আছে । নির্ভরতা হিসাবে myandroidlibraryআছে myjavalibrary।

myjavalibraryএকটি MySecretক্লাস আছে
public class MySecret {
public static String getSecret() {
return "Money";
}
}
myandroidlibraryহয়েছে MyAndroidComponentবর্গ যে থেকে মান নিপূণভাবে MySecretবর্গ।
public class MyAndroidComponent {
private static String component = MySecret.getSecret();
public static String getComponent() {
return "My component: " + component;
}
}
শেষ অবধি, থেকে প্রাপ্ত মানটিতে appকেবল আগ্রহীmyandroidlibrary
TextView tvHelloWorld = findViewById(R.id.tv_hello_world);
tvHelloWorld.setText(MyAndroidComponent.getComponent());
এখন, নির্ভরতা সম্পর্কে কথা বলা যাক ...
appগ্রাহক প্রয়োজন :myandroidlibrary, যাতে appbuild.gradle ব্যবহার implementation।
( দ্রষ্টব্য : আপনি এপিআই / সংকলনও ব্যবহার করতে পারেন But তবে এই চিন্তাটি মুহুর্তের জন্য ধরে রাখুন))
dependencies {
implementation project(':myandroidlibrary')
}

আপনার কি মনে হয় myandroidlibrarybuild.gradle দেখতে কেমন হবে? আমাদের কোন সুযোগ ব্যবহার করা উচিত?
আমাদের তিনটি বিকল্প রয়েছে:
dependencies {
// Option #1
implementation project(':myjavalibrary')
// Option #2
compile project(':myjavalibrary')
// Option #3
api project(':myjavalibrary')
}

তাদের মধ্যে পার্থক্য কী এবং আমার কী ব্যবহার করা উচিত?
সংকলন বা এপিআই (বিকল্প # 2 বা # 3)

আপনি যদি ব্যবহার করেন compileবা api। আমাদের অ্যান্ড্রয়েড অ্যাপ্লিকেশন এখন myandroidcomponentনির্ভরতা অ্যাক্সেস করতে সক্ষম , যা একটি MySecretশ্রেণি।
TextView textView = findViewById(R.id.text_view);
textView.setText(MyAndroidComponent.getComponent());
// You can access MySecret
textView.setText(MySecret.getSecret());
বাস্তবায়ন (বিকল্প # 1)

আপনি যদি implementationকনফিগারেশন ব্যবহার করে থাকেন MySecretতবে তা প্রকাশিত হয় না।
TextView textView = findViewById(R.id.text_view);
textView.setText(MyAndroidComponent.getComponent());
// You can NOT access MySecret
textView.setText(MySecret.getSecret()); // Won't even compile
সুতরাং, আপনার কোন কনফিগারেশন চয়ন করা উচিত? এটি আপনার প্রয়োজনের উপর নির্ভর করে।
আপনি যদি নির্ভরতা প্রকাশ করতে চানapi বা ব্যবহার করুন compile।
আপনি যদি নির্ভরতা প্রকাশ করতে না চান (আপনার অভ্যন্তরীণ মডিউলটি লুকিয়ে রাখছেন) তবে ব্যবহার করুন implementation।
বিঃদ্রঃ:
এটি গ্রেডল কনফিগারেশনের একটি সংক্ষিপ্তসার, সারণী 49.1 দেখুন। জাভা লাইব্রেরি প্লাগইন - আরও বিশদ ব্যাখ্যার জন্য নির্ভরতা ঘোষণা করতে ব্যবহৃত কনফিগারেশন ।
এই উত্তরের নমুনা প্রকল্পটি https://github.com/aldoKelvianto/ImplementationVsCompile এ উপলব্ধ