ফ্লাটার ব্যবহার করে ক্রস প্লাটফর্ম অ্যাপ তৈরি করা সহজ। অ্যাপ বিল্ড করাও সহজ। তবে অ্যাপ পাবলিশ করার জন্য কিছু স্টেপ ফলো করতে হয়। যেমন অ্যাপ আইকন, অ্যাণ্ড্রয়েডের জন্য অ্যাপ সাইন করা, আইওএসের জন্য ডেভেলপার একাউন্ট সেট করা ইত্যাদি। এগুলোর জন্য একাধিক প্রসেস রয়েছে। তবে আমি যে প্রসেস ফলো করি, তা দেখাচ্ছি। সবার আগে দরকার অ্যাপ আইকন। এই ব্লগে ফ্লাটার নিয়ে বেশ কয়েকটা লেখা আছে, সেগুলো এখান থেকে পড়া যাবে।
ফ্লাটার অ্যাপের আইকন পরিবর্তন
ডিফল্ট ভাবে ফ্লাটার লোগো অ্যাপ আইকন হিসেবে থাকে। অ্যাপের আইকন পরিবর্তন করতে চাইলে Flutter Launcher Icons প্যাকেজ ব্যবহার করতে পারি। নির্দিষ্ট প্রজেক্টে এই প্যাকেজ যোগ করার জন্য কমান্ডলাইন বা টার্মিনালে গিয়ে লিখবঃ
flutter pub add flutter_launcher_icons
অথবা pubspec.yaml ফাইল এডিট করেও প্যাকেজ যোগ করতে পারি। dependencies কী এর নিচে অন্যান্য প্যাকেজের সাথে নিচের মত করে লঞ্চার আইকন প্যাকেজ যোগ করবঃ
flutter_launcher_icons: ^0.14.3
এরপর pubspec.yaml ফাইলের শেষের দিকে লঞ্চার আইকন সেটিং যোগ করব।
flutter_launcher_icons:
android: true
ios: true
image_path: "assets/icon.png"
যেমন আমি প্রজেক্টের ভেতর assets ফোল্ডার তৈরি করে তার ভেতর icon.png ফাইল রেখেছি। এই ফাইল আইকন হিসেবে ব্যবহার করব। এরপর টার্মিনাল বা কমান্ডলাইনে লিখবঃ
flutter pub run flutter_launcher_icons
দেখব অ্যাপের লোগো পরিবর্তন হয়েছে।
প্লে স্টোরের জন্য সাইন্ড apk / app bundle তৈরি
ফ্লাটার কমান্ড লাইন ব্যবহার করে সাইন্ড apk / app bundle তৈরি করা যায়। তবে আমি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে তৈরি করব। যা আমার কাছে সহজ এবং সিম্পল মনে হয়। তার জন্য ফ্লাটার প্রজেক্টের android ফোল্ডার অ্যান্ড্রয়েড স্টুডিওতে ওপেন করব। ফ্লাটার প্রজেক্টও এন্ড্রয়েড স্টুডিওতে ওপেন করা যায়, তবে সেই ক্ষেত্রে Build মেন্যুতে Generate Signed App Bundles or APKs অপশন দেখায় না (অন্তত এই লেখাটা লেখার সময় পর্যন্ত)।
এখানে ক্লিক করলে অ্যাপ সাইন করার কী তৈরি করার অপশন পাবো। এরপর কী তৈরি করে সাইন করা apk অথবা app bundle তৈরি করে নিতে পারব। যা প্লে স্টোরে আপলোড করতে পারব। এখানে যে কী তৈরি করেছি এবং কী তৈরি করার সময় যে পাসওয়ার্ড ব্যবহার করেছি, তা স্টোর করে রাখতে হবে। অ্যাপের পরবর্তী ভার্সন আপলোড করার সময় এই কী এবং পাসওয়ার্ড লাগবে।
বান্ডেল আইডি এবং অ্যাপের নাম পরিবর্তন – অ্যান্ড্রয়েড
প্রজেক্টের android > app ফোল্ডারের ভেতর build.gradle.kts ফাইল পাবো। যাকে আমরা অ্যাপ লেভেল গ্রেডেল ফাইল বলি। এর ভেতর একটা কনফিগারেশন রয়েছে এমনঃ
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.example.appname"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
এখান থেকে applicationId = “com.example.appname” তে বান্ডেল আইডি সেট করব।
আর অ্যাপের নাম পরিবর্তনের জন্য AndroidManifest.xml এডিট করতে হবে। যা পাওয়া যাবে প্রজেক্টের android > app > src > main ফোল্ডারের ভেতর।
এখানে android:label=”app_name” থেকে অ্যাপের নাম পরিবর্তন করে নেওয়া যাবে।
এই তো, এসব ছিল অ্যান্ড্রয়েডের জন্য। এছাড়া অ্যাপে যদি কোন পার্মিশন লাগে, তা AndroidManifest.xml এ যোগ করতে হবে।
অ্যাপ স্টোরে আপলোড
অ্যান্ড্রয়েড প্লে স্টোর থেকে অ্যাপ স্টোরে আপলোড করা সহজ। প্রথমে প্রজেক্টের iOS ফোল্ডারের ভেতরের Runner.xcworkspace (লাইট কালারের) এক্সকোডে ওপেন করব।
এখানে টার্গেট থেকে Runner সিলেক্ট করব। এরপর Signing & Capabilities থেকে অ্যাপ স্টোরের ডেভেলপার একাউন্ট সিলেক্ট করব। যদি একাউন্ট এড করা না থাকে, এড একাউন্ট অপশন পাবো। এরপর লগিন করলেই হবে। এখান থেকে বান্ডেল আইডেন্টিফায়ার সেট করতে পারব।
এই Signing & Capabilities এর + Capability তে ক্লিক করে পুশ নোটিফিকেশন যোগ করে দিব। ফ্লাটার অ্যাপে ঠিক কি কারণে পুশ নোটিফিকেশন লাগে, আমার জানা নেই। পুশ নোটিফিকেশন ব্যবহার না করলেও এই অপশন যোগ করতে হয়। না হয়ে অ্যাপ স্টোর থেকে ওরারনিং দেয়।
উপরের দিকের General ট্যাবে গিয়ে অ্যাপের নাম (Display Name) সেট করতে পারব।
অ্যাপ প্রাইভেসি ফাইল
অ্যাপে যদি আমরা কোন ডেটা স্টোর করি, ইউজার থেকে কোন ডেটা কালেক্ট করি, ফটো গ্যালারি বা ডিভাইসের কোন এপিআই এক্সেস করি, তাহলে তা একটা প্রাইভেসি মেনিফেস্ট ফাইল তৈরি করে উল্যেখ করে দিতে হয়। File > New > New File from template এ ক্লিক করব। এরপর Privacy লিখলে প্রাইভেসি ফাইলের টেপ্লেটিতে ক্লিক করে কোন কিছু পরিবর্তন না করেই PrivacyInfo.xcprivacy ফাইল তৈরি করে নিব। এরপর যে যে এপিআই এক্সেস করেছি, তা অ্যাপে কেনো দরকার, তা উল্লেখ করে দিতে হবে। যেমন আমি একটা অ্যাপে শেয়ার্ড প্রেপারেন্স (UserDefaults) ব্যবহার করেছি, যার জন্য এভাবে আমাকে উল্লেখ করে দিতে হবেঃ
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
</array>
</dict>
</plist>
এখানে দুইটা API ইউজ করার জন্য প্রাইভেসি মেনিফেস্ট যোগ করেছি। প্রথমটা হচ্ছে UserDefaults এর জন্য, পরেরটা হচ্ছে ডিস্ক স্পেসের জন্য। কোন এপিআই ব্যবহার করার পর ডিক্লারেশন না দিলে অ্যাপ স্টোর অ্যাপ রিজেক্ট করে দিবে।
প্রয়োজনীয় সেটিং শেষ। এবার অ্যাপ স্টোরে আপলোড করতে পারব। অ্যাপ স্টোরে আপলোডের পূর্বে প্রথমে ডেভেলপার একাউন্টে আইডেন্টিফায়ার যোগ করতে হয়। Identifiers + বাটনে ক্লিক করে এরপর App IDs > App সিলেক্ট করে অ্যাপের নাম এবং বান্ডেল আইডেন্টিফায়ার দিয়ে তৈরি করে নিতে হবে। এরপর অ্যাপ স্টোর কানেক্টে অ্যাপের ব্যাসিক তথ্য দিয়ে অ্যাপ তৈরি করতে হয়। এই দুইটা স্টেপ শেষ করার পর এক্সকোডের মেন্যু থেকে Product > Archive এ ক্লিক করে বান্ডেল তৈরি করতে হয়।
এরপর Distribute > App Store Connect এ ক্লিক করলে অ্যাপ স্টোরে অ্যাপ আপলোড হয়ে যাবে। যা অ্যাপ স্টোর কানেক্টে নির্দিষ্ট অ্যাপের Build সেকশনে দেখা যাবে।
একটা অ্যাপের একাধিক বিল্ড আপলোড করা যাবে। অ্যাপ সাবমিটের সময় নির্দিষ্ট বিল্ড আমরা সিলেক্ট করে দিতে পারব।
অ্যাপের ডেসক্রিপশন, স্ক্রিনশর্ট, ইত্যাদি পূরণ করে এরপর রিভিউ এর জন্য সাবমিট করতে পারব।