Knowledge / Computer Applications / Mobile app development basics

Mobile app development basics

Computer Applications (BCA) · Applications · free study notes for exams, placements and interviews

In short

Mobile app development is the building of software that runs on handheld devices — Android and iOS phones and tablets — covering the UI, the device APIs (camera, GPS, sensors, storage), the network layer that talks to a server, and the store release process. India has over 80 crore smartphone users and almost every service (banking, UPI payments, ticketing, government ID, food delivery, learning) ships as an app first, so this is the single largest employer of BCA graduates among application-development roles. University syllabi (AICTE/CBCS "Mobile Application Development" or "Android Programming" papers) examine the Android architecture, the Activity lifecycle, layouts, Intents, SQLite/Room persistence and the publishing cycle. Placement rounds ask lifecycle sequences, native-versus-hybrid trade-offs, permission handling and one small coding task; exact SDK versions and store policies change every year, so treat version numbers as indicative and check the current Android/Play documentation.

Explained

Platforms, app types and how they differ

Android platform architecture and project anatomy

The four app components, Intents and the lifecycle

UI: layouts, views, lists and Compose

Data, networking and background work

Permissions, security and Indian legal compliance

Testing, performance, publishing and monetisation

Key points

Formulas and examples

dp → px: px = dp × (dpi / 160) [dp = density-independent pixel; dpi = screen density; 160 dpi = mdpi baseline]
density scale factor: density = dpi / 160 (mdpi 1.0, hdpi 1.5, xhdpi 2.0, xxhdpi 3.0, xxxhdpi 4.0)
sp → px: px = sp × (dpi / 160) × userFontScale [userFontScale = accessibility font setting, default 1.0]
screen dpi = √(wpx² + hpx²) / diagonal_in_inches
AAB download saving % = (APK size − delivered split size) / APK size × 100
Crash-free users % = (1 − crashed users / total users) × 100
Effective app revenue = (gross IAP revenue × (1 − store commission)) ÷ (1 + GST rate) for GST-inclusive pricing

Example 1 — dp to px on an Indian mid-range phone. A phone is 1080 × 2400 px on a 6.5-inch diagonal.

Example 2 — AAB size saving. A universal APK is 28 MB: 9 MB code for four ABIs (arm64, armeabi-v7a, x86, x86_64 — about 2.25 MB each), 10 MB drawables across six densities, 9 MB other assets. An arm64 xxhdpi device needs 2.25 MB of code and roughly 10/6 ≈ 1.67 MB of drawables.

Example 3 — lifecycle trace. User opens the app, presses Home, returns, rotates the phone, presses Back:

ActionCallbacks fired
App launchedonCreate → onStart → onResume
Home pressedonPause → onStop → onSaveInstanceState
App reopenedonRestart → onStart → onResume
RotatedonPause → onStop → onSaveInstanceState → onDestroy → onCreate → onStart → onRestoreInstanceState → onResume
Back pressedonPause → onStop → onDestroy (activity finished)

Example 4 — in-app purchase economics. An app sells a ₹499 (GST-inclusive) annual subscription to 2,000 Indian users; Play commission on subscriptions is 15% from the first sale (one-time in-app purchases are 15% on the first US$1 million of annual earnings, 30% above it; rates and tiers change — verify current terms); GST 18%.

Example 5 — minimal Android code. Launching a second screen with data and a lifecycle hook:

class MainActivity : AppCompatActivity() {
    private lateinit var b: ActivityMainBinding
    override fun onCreate(s: Bundle?) {
        super.onCreate(s)
        b = ActivityMainBinding.inflate(layoutInflater)
        setContentView(b.root)
        b.btnNext.setOnClickListener {
            startActivity(Intent(this, DetailActivity::class.java)
                .putExtra("rollNo", b.etRoll.text.toString()))
        }
    }
    override fun onPause() { super.onPause(); Log.d("LIFE", "paused") }
}
// DetailActivity: val roll = intent.getStringExtra("rollNo") ?: "-"
<!-- AndroidManifest.xml essentials -->
<uses-permission android:name="android.permission.INTERNET"/>
<activity android:name=".MainActivity" android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
  </intent-filter>
</activity>
<activity android:name=".DetailActivity"/>
CriterionNative (Kotlin/Swift)FlutterReact NativeHybrid/PWA
LanguageKotlin / SwiftDartJS/TypeScriptHTML/CSS/JS
PerformanceHighestNear-nativeGoodLowest
Code reuse across platformsNone~90%~85%~100%
Device API accessFull, immediateVia pluginsVia native modulesLimited
UI fidelityExactly platform-nativeOwn-drawn widgetsNative componentsWeb-like
Typical cost/timeHighest (two teams)LowLowLowest
Best forGames, AR, camera, SDK-heavyBusiness apps on both OSJS-skilled teamsContent, catalogues

Where it is used

Interview questions

Common mistakes

Related topics

REST APIs · Front-end frameworks: React basics · Web fundamentals: HTML, CSS and JavaScript · Cloud computing basics · E-commerce systems · Database management with SQL

Open in the Knowledge reader →Find jobs →