Which to learn
Pick C# if you want one codebase for Windows + Android + iOS (use .NET MAUI / Xamarin).
Pick Kotlin if you want native Android (best Android ecosystem support).
(If unsure: pick C# for cross-platform reuse; pick Kotlin for Android-first.)
Security / “data hiding” — reality
Both languages compile to intermediate code (Java→JVM bytecode / Kotlin→dex, C#→IL).
Neither prevents decompilation. Use obfuscation + server-side checks to raise the bar.
Essential protections to implement
Obfuscate code
Android: R8 (free) or DexGuard (paid).
.NET: ConfuserEx (open) or Dotfuscator (commercial).
License + device binding
Device fingerprint → ask your server for a signed license token (JWT-like).
App verifies token signature; token can be time-limited or bound to device ID.
Store secrets in Android Keystore / iOS Keychain.
Protect media
Store media encrypted (AES). Decrypt only at playback with keys delivered per-license or derived per device.
Prefer streaming encrypted content for strongest control.
Anti-tamper basics
Root/jailbreak detection, runtime integrity checks, fail-safe on signature/verification failure.
Tradeoffs (one sentence each)
Obfuscation + device-locked licenses deters casual pirates but won’t stop a determined reverse-engineer.
Moving critical logic/server checks off-device (server-side licensing/streaming) gives much stronger protection.