đ§ 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
Post a Comment