- ভাই ডেমো দেখামু ,অ্যাপের অমুক অমুক স্ক্রিন হাইড করে একটা এপিকে ছাইড়া দেন না।
- ভাই টেস্টিং এর সময় যেন ভুলেও প্রোডাকশন সার্ভারে ডাটা না ঢুকে। এই লন লাইভ সার্ভার ইউআরএল, আর এইটা টেস্ট সার্ভার ইউআরএল।
অ্যান্ড্রয়েড প্রোজেক্টে বেশিরভাগ ক্ষেত্রে এমন পরিস্থিতিতে পরাটা খুবই স্বাভাবিক একটা ব্যাপার। এসব ক্ষেত্রে প্রথম যা মাথায় আসে যে কিছু কোড কমেন্ট আউট করে একটা যার যার চাহিদা মতো একটা বিল্ড বানিয়ে দেয়া। কিন্তু এই কাজটা একই সাথে প্যরাময় এবং ঝুকিপূর্ণ। মনে করেন ভুলে আপনি লাইভ সার্ভার দেয়া বিল্ড টেস্টারকে দিয়ে একটা চমতকার ঘুম দিলেন। টেস্টার মনের আনন্দে সার্ভার আবর্জনা দিয়ে ভরে রাখল। আর ইউজার সেইসব ডাটা দেখে মাননীয় স্পিকার হয়ে গেলো।
তো এই সমস্যাটা দূর করাটাই প্রোডাক্ট ফ্লেভারের কাজ। তবে তার আগে বুঝতে হবে বিল্ড টাইপ কি জিনিস। খেয়াল করলে দেখবেন app/build.gradle ফাইলে release এবং debug নামের দুইটা জিনিস আছে। এদেরকেই বলে বিল্ড টাইপ (build type)। আপনি চাইলে ডিবাগ টাইপের ভিতরে বলে দিতে পারেন ডিবাগের সময় proguard, minify এসব enabled থাকবে কিনা। আবার কোডের মধ্যে চেক করে লগ প্রিন্ট রাখতে পারেন।
if (BuildConfig.DEBUG)
Log.d("TAG", "hello world")
বিল্ডের সময় আপনি বিল্ড টাইপ সিলেক্ট করে দিলে ডিবাগ বা রিলিজের জন্য আলাদা ভাবে বিল্ড হবে। তারপর শুধু ডিবাগ বিল্ডই এই লগটা প্রিণ্ট করবে।
এখন এই বিল্ড টাইপের সাথে প্রায় একই ভাবে আপনি ফ্লেভার লাগিয়ে দিতে পারবেন। ঠিক যেমন এখানে ডেমো ও লাইভের জন্য দুইটা আলাদা আলাদা ফ্লেভার বানানো আছে।
এখন কোডে আপনার যখন যেটা লাগে ঠিক এভাবে ব্যবহার করতে পারেন।
val url = BuildConfig.SERVER_URL
এই ফ্লেভার এবং বিল্ড টাইপকে একত্রে বলা হয় বিল্ড ভ্যারিয়েণ্ট (Build variant) । অ্যান্ড্রয়েড স্টুডিওর ঠিক বামপাশের চিপায় এই মেনুটায় ঠিক করে বিল্ড দিলেই ব্যাস, কেল্লা ফতে।
আর সাইন্ড বিল্ডের সময় লাস্ট স্টেপে গেলে আপনি সিলেক্ট করার অপশন পেয়ে যাবেন।
তো এখন যার যার পছন্দ মতো বিল্ড কোডে কোন প্রকার চেঞ্জ ছাড়াই যখন তখন দিতে পারতেছেন।
এখানে প্রোডাক্ট ফ্লেভারের খুবই বেসিক কিছু কাজের কথা বলা হলো। মুলত প্রোডাক্ট ফ্লেভারের ব্যবহার আরও অনেক বিস্তৃত। আপনি একই কোডবেস দিয়ে ভিন্ন ভিন্ন এপ্লিকেশন বিল্ড করতে পারেন, প্যাকেজ থেকে শুরু করে ই সব ফ্লেভার অনুযায়ী ভাগ করে ফেলতে পারেন ইত্যাদি ইত্যাদি।