🧠 Manifest Placeholders: āϏāĻšāϜ āĻ­াāώাāϝ় āĻŦ্āϝাāĻ–্āϝা!

 

🧠 Manifest Placeholders: āϏāĻšāϜ āĻ­াāώাāϝ় āĻŦ্āϝাāĻ–্āϝা!

🚀 Manifest Placeholders āĻ•ী?

Manifest Placeholders āĻšāϞো AndroidManifest.xml-āĻ āĻĄা⧟āύাāĻŽিāĻ• āĻ­্āϝাāϞু (āĻ—ুāĻŖাāĻ—ুāĻŖ) āϏেāϟ āĻ•āϰাāϰ āĻāĻ•āϟি āωāĻĒাāϝ়

āĻāϟি āĻāĻŽāύ āĻāĻ•āϟি "Variable System", āϝেāĻ–াāύে āφāĻĒāύি Gradle Build File-āĻ āĻāĻ•āϟি āĻ­্āϝাāϞু āϏেāϟ āĻ•āϰāϞে āϤা Manifest-āĻ āĻ…āϟোāĻŽেāϟিāĻ• āĻŦāϏে āϝাāϝ়


🔍 āĻ•েāύ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻšā§Ÿ?

👉 āφāĻĒāύাāϰ āĻ…্āϝাāĻĒে āϝāĻĻি API Key, Different Build Configurations āĻŦা Third-Party Services (āϝেāĻŽāύ Firebase, AdMob) āĻĨাāĻ•ে, āϤাāĻšāϞে Manifest Placeholders āĻ…āύেāĻ• āωāĻĒāĻ•াāϰী!

📌 āϏāĻŽāϏ্āϝা: āϧāϰুāύ, āφāĻĒāύাāϰ āĻ…্āϝাāĻĒেāϰ debug āĻāĻŦং release āĻ­াāϰ্āϏāύে āĻ­িāύ্āύ API Key āĻŦা Package Name āĻĻāϰāĻ•াāϰ

📌 āϏāĻŽাāϧাāύ: āφāĻĒāύি manifestPlaceholders āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰে āĻāĻ•āχ AndroidManifest.xml āĻĢাāχāϞেāϰ āĻŽāϧ্āϝেāχ āφāϞাāĻĻা āφāϞাāĻĻা āĻ­্āϝাāϞু āϏেāϟ āĻ•āϰāϤে āĻĒাāϰāĻŦেāύ!


đŸŽ¯ āĻ•িāĻ­াāĻŦে āĻ•াāϜ āĻ•āϰে?

āφāĻĒāύি Gradle Build File (build.gradle.kts or build.gradle)-āĻ manifestPlaceholders āϏেāϟ āĻ•āϰāĻŦেāύ, āφāϰ āĻāϟি AndroidManifest.xml-āĻ āĻŦāϏে āϝাāĻŦে!

👉 āωāĻĻাāĻšāϰāĻŖ ā§§: Custom Data āĻĒাāĻ াāύো

Step 1: build.gradle.kts (Module: app)-āĻ āύিāϚেāϰ āĻŽāϤো āϞিāĻ–ুāύ:

android {
    defaultConfig {
        manifestPlaceholders["app_name"] = "Business Minds"
    }
}

Step 2: AndroidManifest.xml-āĻ āĻĒ্āϞেāϏāĻšোāϞ্āĻĄাāϰ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ:

<application
    android:label="${app_name}"
    ...>
</application>

👉 āĻāĻŦাāϰ, Build āĻ•āϰাāϰ āϏāĻŽā§Ÿ ${app_name} āĻ…āϟোāĻŽেāϟিāĻ• "Business Minds" āĻĻি⧟ে Replace āĻšāĻŦে!


đŸ”Ĩ āωāĻĻাāĻšāϰāĻŖ ⧍: Build Type āĻ…āύুāϝা⧟ী āφāϞাāĻĻা āĻ­্āϝাāϞু āϏেāϟ āĻ•āϰা

āϧāϰুāύ, āφāĻĒāύি āϚাāύ Debug Build-āĻ āĻāĻ•āϟা API Key āφāϰ Release Build-āĻ āφāϰেāĻ•āϟা API Key āĻŦ্āϝāĻŦāĻšাāϰ āĻšāĻŦে!

Step 1: build.gradle.kts (Module: app)

android {
    buildTypes {
        debug {
            manifestPlaceholders["api_key"] = "DEBUG_API_KEY_12345"
        }
        release {
            manifestPlaceholders["api_key"] = "RELEASE_API_KEY_67890"
        }
    }
}

Step 2: AndroidManifest.xml

<meta-data
    android:name="com.example.API_KEY"
    android:value="${api_key}" />

Debug Mode āϚাāϞাāϞে: "com.example.API_KEY" = "DEBUG_API_KEY_12345"
Release Mode āϚাāϞাāϞে: "com.example.API_KEY" = "RELEASE_API_KEY_67890"

āĻāĻ­াāĻŦে āφāĻĒāύি āĻ­িāύ্āύ āĻ­িāύ্āύ Build Type āĻ…āύুāϝা⧟ী āφāϞাāĻĻা API Key āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϤে āĻĒাāϰāĻŦেāύ!


đŸŽ¯ āĻŦাāϏ্āϤāĻŦ āωāĻĻাāĻšāϰāĻŖ: AdMob App ID āϏেāϟ āĻ•āϰা

Google AdMob-āĻ āφāϞাāĻĻা Debug āĻ“ Release ID āĻĻāϰāĻ•াāϰ āĻšā§Ÿ।

📌 Solution:

android {
    buildTypes {
        debug {
            manifestPlaceholders["ADMOB_APP_ID"] = "ca-app-pub-xxxxxxxx~DEBUG"
        }
        release {
            manifestPlaceholders["ADMOB_APP_ID"] = "ca-app-pub-xxxxxxxx~RELEASE"
        }
    }
}
<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="${ADMOB_APP_ID}" />

āĻāĻ–āύ Debug Build-āĻ āĻāĻ• ID āϝাāĻŦে, āφāϰ Release Build-āĻ āĻ…āύ্āϝ ID āϝাāĻŦে!


⚠️ āϏāϤāϰ্āĻ•āϤা!

🚨 API Key āĻ•āĻ–āύো āϏāϰাāϏāϰি āĻ•োāĻĄে āϰাāĻ–āĻŦেāύ āύা!
👉 manifestPlaceholders Sensitive Data Protect āĻ•āϰāϤে āĻĒাāϰে āύা, āĻ•াāϰāĻŖ āĻāĻ—ুāϞো APK āĻĨেāĻ•ে Extract āĻ•āϰা āϝা⧟।
Secure āĻŦিāĻ•āϞ্āĻĒ: gradle.properties āĻŦা keystore āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻ­াāϞো!


✅ āϏংāĻ•্āώেāĻĒে:

  • Manifest Placeholders āφāĻĒāύাāĻ•ে AndroidManifest.xml-āĻ āĻĄা⧟āύাāĻŽিāĻ• āĻ­্āϝাāϞু āϏেāϟ āĻ•āϰāϤে āĻĻে⧟
  • API Key, AdMob ID, Package Name āχāϤ্āϝাāĻĻি āĻ…āϟোāĻŽেāϟিāĻ• Build āĻ…āύুāϝা⧟ী āϏেāϟ āĻ•āϰা āϝা⧟।
  • āĻāĻ•āχ AndroidManifest.xml āĻĢাāχāϞ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰেāĻ“ āφāϞাāĻĻা Build Configurations āĻŽ্āϝাāύেāϜ āĻ•āϰা āϏāĻŽ্āĻ­āĻŦ!
  • āĻ•োāĻĄ āĻŽ্āϝাāύেāϜāĻŽেāύ্āϟ āϏāĻšāϜ āĻšā§Ÿ āĻāĻŦং Hardcoded Data āĻĨেāĻ•ে āĻŦাঁāϚা⧟।

🤔 āĻāĻ–āύো āĻŦুāĻāϤে āϏāĻŽāϏ্āϝা āĻšāϞে āĻŦāϞুāύ!

āφāĻŽি āφāϰāĻ“ āϏāĻšāϜ āĻ•āϰে āĻŦ্āϝাāĻ–্āϝা āĻ•āϰāϤে āĻĒাāϰি! 😊

Comments

Popular posts from this blog

AI (Artificial Intelligence) āϏāĻšāϜāĻ­াāĻŦে āĻŦোāĻাāϰ āϜāύ্āϝ āĻāĻ•āĻĻāĻŽ āĻŽāϏ্āϤিāώ্āĻ•-āĻŦাāύ্āϧāĻŦ āĻŦ্āϝাāĻ–্āϝা 🧠🤖

🧠 Regex āĻ•ী?

Kotlin-āĻ āĻ­েāϰিāϝ়েāĻŦāϞ āϘোāώāĻŖা āĻ•āϰাāϰ āĻĻুāχ āωāĻĒাāϝ়