এই উত্তরটি মধ্যে পার্থক্য প্রকট হবে implementation
, api
এবং compile
একটি প্রকল্প নিয়ে।
ধরা যাক আমার তিনটি গ্রেডল মডিউল সহ একটি প্রকল্প রয়েছে:
- অ্যাপ্লিকেশন (একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন)
- মাইন্ড্রয়েডলাইবারি (একটি অ্যান্ড্রয়েড লাইব্রেরি)
- মাইজাবালিবারি (একটি জাভা গ্রন্থাগার)
app
myandroidlibrary
নির্ভরতা হিসাবে আছে । নির্ভরতা হিসাবে 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
, যাতে app
build.gradle ব্যবহার implementation
।
( দ্রষ্টব্য : আপনি এপিআই / সংকলনও ব্যবহার করতে পারেন But তবে এই চিন্তাটি মুহুর্তের জন্য ধরে রাখুন))
dependencies {
implementation project(':myandroidlibrary')
}
আপনার কি মনে হয় myandroidlibrary
build.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 এ উপলব্ধ