Android হল Google-এর একটি মোবাইল অপারেটিং সিস্টেম যা ওপেন সোর্স (AOSP) এবং Linux কার্নেলে চলে। Android-এর উন্নয়ন Kotlin-এ Android Studio ব্যবহার করে করা হয়। নিবন্ধটি OS আর্কিটেকচার, অ্যাপ্লিকেশন উপাদান, Jetpack Compose এবং Google Play-এ প্রকাশ কভার করে।
মূল বিষয়
Android হল একটি মোবাইল অপারেটিং সিস্টেম যা Linux কার্নেলের উপর ভিত্তি করে, Google 2007 সাল থেকে তৈরি করছে। সোর্স কোড Android Open Source Project (AOSP)-এর অংশ হিসাবে Apache 2.0 লাইসেন্সের অধীনে উন্মুক্ত। প্রতিটি প্রস্তুতকারক সিস্টেম পরিবর্তন করতে পারে এবং তাদের ডিভাইসে ইনস্টল করতে পারে।
StatCounter (2026) অনুসারে, Android বিশ্ব মোবাইল OS বাজারের প্রায় 72% দখল করে আছে। বৃহত্তম প্রস্তুতকারকরা হলেন Samsung, Xiaomi, Oppo, Vivo, Google Pixel। খণ্ডিতকরণ প্ল্যাটফর্মের একটি মূল সমস্যা: বিভিন্ন OS সংস্করণ সহ হাজার হাজার মডেল একসাথে ব্যবহার করা হয়।
Android-এর আর্কিটেকচার অনুমতি (permissions) নীতির উপর নির্মিত: প্রতিটি অ্যাপ্লিকেশন একটি পৃথক Linux UID-এর অধীনে চলে এবং শুধুমাত্র তার নিজস্ব ডেটাতে অ্যাক্সেস রাখে। সিস্টেম রিসোর্সে (ক্যামেরা, মাইক্রোফোন, পরিচিতি) অ্যাক্সেস Android 6 (API 23) থেকে শুরু করে রানটাইমে Android Permissions-এর মাধ্যমে অনুরোধ করা হয়।
Android 1.0 2008 সালে HTC Dream-এ প্রকাশিত হয়েছিল। মূল মাইলফলক: Android 4.0 Ice Cream Sandwich (ফোন এবং ট্যাবলেটের জন্য ইউনিফাইড UI), Android 5.0 Lollipop (Material Design), Android 6.0 (রানটাইম অনুমতি), Android 10 (ডার্ক থিম, অঙ্গভঙ্গি), Android 12 (Material You)। 2023 সাল থেকে, Google ডেজার্ট নাম ছাড়াই বার্ষিক বড় রিলিজে স্যুইচ করেছে।
| Android সংস্করণ | বছর | মূল উদ্ভাবন |
|---|---|---|
| Android 1.0 | 2008 | HTC Dream-এ প্রথম প্রকাশ |
| Android 4.0 (ICS) | 2011 | ফোন এবং ট্যাবলেটের জন্য ইউনিফাইড ডিজাইন |
| Android 5.0 (L) | 2014 | Material Design, Dalvik-এর পরিবর্তে ART |
| Android 6.0 (M) | 2015 | রানটাইম অনুমতি, Doze মোড |
| Android 8.0 (O) | 2017 | Kotlin অফিসিয়াল ভাষা হিসাবে |
| Android 10 (Q) | 2019 | Scoped Storage, ডার্ক থিম |
| Android 12 (S) | 2021 | Material You, Privacy Dashboard |
| Android 15 | 2024 | Private Space, স্যাটেলাইট সংযোগ |
Android আর্কিটেকচার চারটি প্রধান স্তর নিয়ে গঠিত যা হার্ডওয়্যারকে ব্যবহারকারীর অ্যাপ্লিকেশন থেকে বিচ্ছিন্ন করে। প্রতিটি স্তর কঠোরভাবে সংজ্ঞায়িত ইন্টারফেসের মাধ্যমে নীচের স্তরের পরিষেবাগুলি ব্যবহার করে।
সর্বনিম্ন স্তরটি একটি পরিবর্তিত Linux কার্নেল (LTS, Android 15-এ সংস্করণ 6.x)। এটি মেমরি ব্যবস্থাপনা, প্রক্রিয়া, নেটওয়ার্ক স্ট্যাক এবং ড্রাইভারগুলি পরিচালনা করে। Hardware Abstraction Layer (HAL) হার্ডওয়্যারের সাথে ইন্টারফেসের জন্য একটি ইউনিফাইড API প্রদান করে: ক্যামেরা, Bluetooth, Wi-Fi, সেন্সর। প্রস্তুতকারকরা উপরের স্তরগুলিকে প্রভাবিত না করে HAL মডিউল প্রয়োগ করে।
ART অ্যাপ্লিকেশনের DEX বাইটকোড নির্বাহ করে। Android 5.0 থেকে শুরু করে, ART Dalvik-কে প্রতিস্থাপন করেছে এবং কর্মক্ষমতা উন্নতির জন্য Ahead-of-Time (AOT) কম্পাইলেশন ব্যবহার করে। প্রতিটি অ্যাপ্লিকেশনের নিজস্ব প্রক্রিয়া একটি পৃথক ART ইনস্ট্যান্স সহ থাকে। আবর্জনা সংগ্রহ (GC) ন্যূনতম বিরতি দিয়ে চলে — একটি সাধারণ GC বিরতি 2-4 ms।
Framework হল সেই স্তর যা ডেভেলপার সরাসরি কাজ করে। এতে Activity Manager (স্ক্রিন স্ট্যাক), Content Providers (ডেটা অ্যাক্সেস), Resource Manager (স্থানীয়করণ, সংস্থান), Notification Manager, Location Manager অন্তর্ভুক্ত। সমস্ত সিস্টেম পরিষেবা Binder IPC — Android-এর আন্তঃপ্রক্রিয়া যোগাযোগ প্রক্রিয়ার মাধ্যমে কল করা হয়।
// AIDL ইন্টারফেসের মাধ্যমে Binder-এর সাথে কাজের উদাহরণ
interface IDataService : android.os.IInterface {
fun getData(): List<DataItem>
fun saveData(item: DataItem): Boolean
}
// সেবা বাস্তবায়ন
class DataService : Service() {
private val binder = object : IDataService.Stub() {
override fun getData(): List<DataItem> = repository.getAll()
override fun saveData(item: DataItem): Boolean = repository.save(item)
}
override fun onBind(intent: Intent?): IBinder = binder
}শীর্ষ স্তরটি স্ট্যান্ডার্ড সিস্টেম অ্যাপ্লিকেশন: ফোন, পরিচিতি, ক্যামেরা, সেটিংস, ব্রাউজার। এদের ব্যবহারকারী অ্যাপ্লিকেশনের চেয়ে বেশি বিশেষাধিকার নেই, তবে তৃতীয় পক্ষের অ্যাপ্লিকেশন দ্বারা প্রতিস্থাপিত হতে পারে। Android 15-এ, সিস্টেম অ্যাপ্লিকেশনগুলি প্রস্তুতকারকের OTA আপডেট থেকে স্বাধীনভাবে Google Play System Updates-এর মাধ্যমে আপডেট করা হয়।
Kotlin হল JetBrains-এর একটি স্ট্যাটিক্যালি টাইপ করা প্রোগ্রামিং ভাষা যা JVM-এ চলে। Google 2017 সালে Google I/O-তে Kotlin-কে অফিসিয়াল Android ভাষা ঘোষণা করেছে। Kotlin Java-এর সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ কিন্তু এর ত্রুটিগুলি দূর করে: null-safety, ডেটা ক্লাস, এক্সটেনশন ফাংশন এবং করুটিন।
Kotlin-এর প্রধান বৈশিষ্ট্য হল NullPointerException-এর বিরুদ্ধে অন্তর্নির্মিত সুরক্ষা। প্রকারগুলি nullable (String?) এবং non-null (String)-এ বিভক্ত। কম্পাইলার বিল্ড সময়ে nullable অ্যাক্সেস পরীক্ষা করে। Safe call (?.) এবং Elvis অপারেটর (?:) নেস্টেড চেক ছাড়াই ঐচ্ছিক মান নিয়ে কাজ সহজ করে।
// করুটিন এবং Flow সহ Kotlin কোডের উদাহরণ
data class User(
val id: Long,
val name: String,
val email: String
)
class UserRepository(
private val api: UserApi,
private val dao: UserDao
) {
suspend fun getUser(id: Long): Result<User> {
return try {
val cached = dao.getUser(id)
if (cached != null) {
return Result.success(cached)
}
val remote = api.fetchUser(id)
dao.insertUser(remote)
Result.success(remote)
} catch (e: Exception) {
Result.failure(e)
}
}
fun observeUsers(): Flow<List<User>> {
return dao.observeAll()
.map { list -> list.sortedBy { it.name } }
.flowOn(Dispatchers.Default)
}
}উদাহরণটি অ্যাসিঙ্ক্রোনাস নেটওয়ার্ক এবং ডেটাবেস অ্যাক্সেসের জন্য করুটিন (suspend ফাংশন), ডেটা পরিবর্তনের প্রতিক্রিয়াশীল পর্যবেক্ষণের জন্য Flow এবং নিরাপদ ত্রুটি পরিচালনার জন্য Result প্রদর্শন করে। করুটিন থ্রেড ওভারহেড ছাড়াই callbacks এবং RxJava প্রতিস্থাপন করে।
Kotlin করুটিন হল হালকা থ্রেড যা একটি ভাগ করা থ্রেড পুলে চলে। নেটওয়ার্ক এবং ডিস্কের জন্য Dispatchers.IO, UI-এর জন্য Dispatchers.Main, CPU-নিবিড় কাজের জন্য Dispatchers.Default। viewModelScope এবং lifecycleScope উপাদানটি ধ্বংস হলে স্বয়ংক্রিয়ভাবে করুটিন বাতিল করে।
// করুটিন এবং StateFlow সহ ViewModel
class UserViewModel(
private val repository: UserRepository
) : ViewModel() {
private val _users = MutableStateFlow<List<User>>(emptyList())
val users: StateFlow<List<User>> = _users.asStateFlow()
private val _loading = MutableStateFlow(false)
val loading: StateFlow<Boolean> = _loading.asStateFlow()
init {
viewModelScope.launch {
repository.observeUsers().collect { userList ->
_users.value = userList
}
}
}
fun refresh() {
viewModelScope.launch {
_loading.value = true
repository.getUser(42).onSuccess { user ->
_users.value = listOf(user)
}
_loading.value = false
}
}
}Android Studio হল IntelliJ IDEA-ভিত্তিক অফিসিয়াল IDE, যা Google তৈরি করেছে। এতে কোড এডিটর, Layout Inspector, ডিভাইস এমুলেটর, APK Analyzer, Profiler (CPU, মেমরি, নেটওয়ার্ক, শক্তি) এবং Firebase ইন্টিগ্রেশন অন্তর্ভুক্ত। Android Studio 2024 (Ladybug) মাল্টিপ্ল্যাটফর্ম KMP মোড সহ Kotlin 2.0 সমর্থন করে।
Android এমুলেটর হার্ডওয়্যার ত্বরণের জন্য KVM (Linux) বা Hyper-V (Windows) ব্যবহার করে। এটি GPS, সেন্সর, ক্যামেরা, কল এবং SMS-এর সিমুলেশন সমর্থন করে। Google Pixel 9 Pro API 35 এবং 8 GB এমুলেটর RAM সহ পরীক্ষার জন্য প্রস্তাবিত কনফিগারেশন।
Profiler রিয়েল টাইমে CPU লোড, মেমরি বরাদ্দ, নেটওয়ার্ক অনুরোধ এবং শক্তি খরচ প্রদর্শন করে। Memory Profiler রেফারেন্স ট্রির মাধ্যমে heap ডাম্পিং এবং লিক বিশ্লেষণের অনুমতি দেয়। Network Inspector বডি এবং হেডার সহ সমস্ত HTTP/HTTPS অনুরোধ রেকর্ড করে। গভীর বিশ্লেষণের জন্য Android Studio Canary ব্যবহার করা হয়।
একটি Android অ্যাপ্লিকেশন চার ধরণের উপাদান নিয়ে গঠিত, প্রতিটির নিজস্ব এন্ট্রি পয়েন্ট এবং জীবনচক্র রয়েছে। উপাদানগুলি AndroidManifest.xml ফাইলে নিবন্ধিত হয়।
| উপাদান | উদ্দেশ্য | এন্ট্রি পয়েন্ট |
|---|---|---|
| Activity | ব্যবহারকারীর সাথে মিথস্ক্রিয়ার জন্য UI সহ স্ক্রিন | Action.MAIN এবং LAUNCHER বিভাগ সহ Intent |
| Service | UI ছাড়া ব্যাকগ্রাউন্ড টাস্ক নির্বাহ | startService() বা bindService() |
| BroadcastReceiver | সিস্টেম বা কাস্টম ইভেন্ট গ্রহণ | ম্যানিফেস্টে বা কোডে নিবন্ধন |
| ContentProvider | গঠিত ডেটাতে অ্যাক্সেস পরিচালনা | ContentResolver-এর মাধ্যমে URI |
Activity হল ব্যবহারকারী ইন্টারফেসের মৌলিক উপাদান। প্রতিটি স্ক্রিন একটি পৃথক Activity বা Activity-র ভিতরে Fragment। স্ক্রিনের মধ্যে নেভিগেশন Intent-এর মাধ্যমে করা হয় — একটি বস্তু যা একটি ক্রিয়া (ACTION_VIEW, ACTION_SEND) এবং ডেটা (URI) ধারণ করে। Jetpack Navigation Graph-এ, নেভিগেশন XML-এ বর্ণিত হয়।
Service ব্যাকগ্রাউন্ড টাস্ক সম্পাদন করে, কিন্তু Android 8 থেকে শুরু করে, ব্যাকগ্রাউন্ড পরিষেবাগুলি সীমাবদ্ধ। WorkManager হল চেইন, সীমাবদ্ধতা (যেমন, শুধুমাত্র চার্জ করার সময়) এবং ক্র্যাশের পরে পুনরায় শুরু করার সমর্থন সহ বিলম্বিত এবং নিশ্চিত ব্যাকগ্রাউন্ড কাজের জন্য প্রস্তাবিত লাইব্রেরি।
Jetpack Compose এবং ঐতিহ্যবাহী XML লেআউটের মধ্যে পছন্দ একটি Android প্রকল্প শুরু করার সময় প্রধান আর্কিটেকচারাল সিদ্ধান্ত। XML Layouts (RecyclerView, ConstraintLayout, FrameLayout) 2008 সাল থেকে মানদণ্ড। Jetpack Compose 2021 সালে একটি ঘোষণামূলক বিকল্প হিসাবে প্রবর্তিত হয়েছিল।
| মাপকাঠি | XML Layouts | Jetpack Compose |
|---|---|---|
| দৃষ্টান্ত | বাধ্যতামূলক (View ট্রি) | ঘোষণামূলক (@Composable ফাংশন) |
| সর্বনিম্ন সংস্করণ | যেকোনো (API 1+) | API 21+ (Android 5.0) |
| লেআউট | XML + data binding / ViewBinding | Modifier সহ Kotlin কোড |
| RecyclerView অ্যানালগ | RecyclerView + Adapter + ViewHolder | LazyColumn / LazyGrid |
| পূর্বরূপ | Android Studio-তে XML পূর্বরূপ | ইন্টারঅ্যাক্টিভিটি সহ @Preview অ্যানোটেশন |
| পুনর্গঠন | notifyDataSetChanged (সম্পূর্ণ) | স্বয়ংক্রিয়, সূক্ষ্ম (DiffUtil) |
| আন্তঃকার্যক্ষমতা | সম্পূর্ণ (সমস্ত লাইব্রেরি) | XML-এ ComposeView / Compose-এ AndroidView |
Google সমস্ত নতুন প্রকল্পের জন্য Jetpack Compose সুপারিশ করে। XML Layouts লিগ্যাসি প্রকল্প সমর্থন এবং যেসব ক্ষেত্রে সর্বোচ্চ View কাস্টমাইজেশন (Canvas, SurfaceView) প্রয়োজন সেসব ক্ষেত্রে প্রাসঙ্গিক থাকে। Compose কোড সমতুল্য XML + ViewBinding-এর তুলনায় গড়ে 40% ছোট।
// Jetpack Compose — ব্যবহারকারী প্রোফাইল স্ক্রিন
@Composable
fun ProfileScreen(
user: User,
onEditClick: () -> Unit,
modifier: Modifier = Modifier
) {
Column(
modifier = modifier
.fillMaxSize()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
AsyncImage(
model = user.avatarUrl,
contentDescription = "ব্যবহারকারীর অবতার",
modifier = Modifier
.size(120.dp)
.clip(CircleShape)
)
Spacer(modifier = Modifier.height(16.dp))
Text(
text = user.name,
style = MaterialTheme.typography.headlineMedium
)
Text(
text = user.email,
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
Spacer(modifier = Modifier.height(24.dp))
Button(onClick = onEditClick) {
Icon(Icons.Default.Edit, contentDescription = null)
Spacer(modifier = Modifier.width(8.dp))
Text("প্রোফাইল সম্পাদনা করুন")
}
}
}
@Preview(showBackground = true, showSystemUi = true)
@Composable
fun ProfileScreenPreview() {
MaterialTheme {
ProfileScreen(
user = User(1, "আন্না পেট্রোভা", "anna@example.com"),
onEditClick = {}
)
}
}ProfileScreen ফাংশন @Composable হিসাবে ঘোষণা করা হয়েছে — এটি View ইনস্ট্যান্স তৈরি না করে UI ঘোষণামূলকভাবে বর্ণনা করে। Compose user পরিবর্তন হলে স্বয়ংক্রিয়ভাবে স্ক্রিন আপডেট করে। @Preview এমুলেটরে বিল্ড এবং রান না করেই সরাসরি IDE-তে ফলাফল দেখায়।
Android-এ প্রতিটি Activity জীবনচক্রের ছয়টি অবস্থার মধ্য দিয়ে যায়: onCreate, onStart, onResume, onPause, onStop, onDestroy। Fragment onAttach, onCreateView, onViewCreated যুক্ত করে। জীবনচক্র বোঝা মেমরি ব্যবস্থাপনা এবং লিক প্রতিরোধের জন্য গুরুত্বপূর্ণ।
onCreate — Activity তৈরি হলে একবার কল করা হয়। এখানে প্রারম্ভিককরণ করা হয়: setContentView, অ্যাডাপ্টার সেটআপ, LiveData সাবস্ক্রিপশন। onResume — Activity অগ্রভাগে আছে এবং ব্যবহারকারীর সাথে মিথস্ক্রিয়া করছে। onPause — Activity ফোকাস হারায় (ডায়ালগ, অন্য Activity)। onStop — Activity দৃশ্যমান নয়। onDestroy — Activity ধ্বংস হয়।
// LifecycleScope-এর মাধ্যমে জীবনচক্র ব্যবস্থাপনা সহ Activity
class MainActivity : ComponentActivity() {
private val viewModel: UserViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.users.collect { users ->
updateUi(users)
}
}
}
}
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("last_search", searchQuery)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
searchQuery = savedInstanceState.getString("last_search", "")
}
}repeatOnLifecycle ব্যবহার নিশ্চিত করে যে Activity ব্যাকগ্রাউন্ডে গেলে ডেটা সংগ্রহ থামে এবং অগ্রভাগে ফিরে এলে পুনরায় শুরু হয়। এটি লিক এবং অপ্রয়োজনীয় নেটওয়ার্ক অনুরোধ প্রতিরোধ করে। onSaveInstanceState স্ক্রিন রোটেশনে অস্থায়ী অবস্থা সংরক্ষণ করে।
Google Play হল অফিসিয়াল Android অ্যাপ স্টোর। ডেভেলপার অ্যাকাউন্ট রেজিস্ট্রেশনের খরচ $25 এককালীন। প্রতিটি অ্যাপ্লিকেশন দূষিত কোড, নীতি লঙ্ঘন এবং ভুল অনুমতি ব্যবহারের জন্য স্বয়ংক্রিয় Google Play Integrity পরীক্ষার মধ্য দিয়ে যায়।
Google-এর Android App Bundle (AAB) বা APK-এর মাধ্যমে অ্যাপ্লিকেশন সই প্রয়োজন। AAB হল প্রস্তাবিত বিন্যাস, যা প্রতিটি ডিভাইস কনফিগারেশনের জন্য অপ্টিমাইজড APK জেনারেশন সক্ষম করে। অ্যাপ্লিকেশনটিতে একটি বৈধ শংসাপত্র সহ একটি কী (keystore) দিয়ে সই করতে হবে। Google Play App Signing হল Google-এর পক্ষ থেকে ঐচ্ছিক কী এনক্রিপশন।
ব্যক্তিগত ডেটাতে অ্যাক্সেসের অনুরোধ করা সমস্ত অ্যাপ্লিকেশনকে একটি গোপনীয়তা নীতি প্রদান করতে হবে। 2024 সাল থেকে, Google-এর Data Safety ঘোষণা প্রয়োজন — একটি ফর্ম যা সংগৃহীত ডেটার ধরন এবং প্রক্রিয়াকরণের উদ্দেশ্য নির্দিষ্ট করে। Android 14+ লক্ষ্য করে এমন অ্যাপ্লিকেশনগুলিকে অনুমতি ঘোষণা করতে Declarations API ব্যবহার করতে হবে।
| প্রয়োজনীয়তা | বিবরণ |
|---|---|
| Android App Bundle | অপ্টিমাইজড বিতরণের জন্য AAB বিন্যাস |
| Data Safety | ব্যক্তিগত ডেটা সংগ্রহ এবং প্রক্রিয়াকরণ সম্পর্কে ফর্ম |
| Target SDK | অ্যাপ্লিকেশনটিকে সর্বশেষ Android API স্তর লক্ষ্য করতে হবে |
| বিষয়বস্তু রেটিং | বয়স রেটিং প্রশ্নাবলী |
| স্টোর তালিকা | নাম, আইকন, স্ক্রিনশট, বিবরণ |
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Kotlin — Google-এর Android-এর জন্য অফিসিয়ালি প্রস্তাবিত ভাষা। Java লিগ্যাসি প্রকল্পের জন্যও সমর্থিত। Kotlin নাল সুরক্ষা, করুটিন এবং এক্সটেনশন ফাংশন প্রদান করে, Java-এর তুলনায় কোডের পরিমাণ 30-40% হ্রাস করে।
Jetpack Compose তার ঘোষণামূলক সিনট্যাক্স এবং স্বয়ংক্রিয় পুনর্গঠন অপ্টিমাইজেশনের কারণে সমস্ত নতুন প্রকল্পের জন্য সুপারিশ করা হয়। XML Layouts লিগ্যাসি প্রকল্প এবং যেসব ক্ষেত্রে Canvas বা SurfaceView-এর সূক্ষ্ম কাস্টমাইজেশন প্রয়োজন সেসব ক্ষেত্রে থাকে।
Google Play ডেভেলপার রেজিস্ট্রেশনের খরচ $25 এককালীন। স্টোর কমিশন প্রথম $1 মিলিয়ন রাজস্বের জন্য 15%, তারপর 30%। সাবস্ক্রিপশনের জন্য, কমিশন প্রথম দিন থেকে 15%। Apple Developer Program-এর মতো কোনো বার্ষিক ফি নেই।
Android Jetpack হল অফিসিয়াল SDK-তে অন্তর্ভুক্ত Google লাইব্রেরির একটি সেট: Navigation, Room (কম্পাইল-টাইম কোয়েরি চেক সহ SQLite ORM), WorkManager (নিশ্চিত ব্যাকগ্রাউন্ড টাস্ক), ViewModel (অবস্থা ব্যবস্থাপনা), LiveData এবং StateFlow প্রতিক্রিয়াশীলতার জন্য।
ন্যূনতম সমর্থিত সংস্করণ নতুন প্রকল্পের জন্য API 24 (Android 7.0)। AndroidManifest.xml অ্যাপ্লিকেশন উপাদান এবং অনুমতি বর্ণনা করে। APK/AAB-তে keystore দিয়ে সই করা হয়। Target SDK-কে প্রকাশের সময় সর্বশেষ API স্তরের সাথে মেলে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন