Skip to content

Fix all Play Store blocking issues in Android app#38

Merged
DaLuSt merged 1 commit intomainfrom
claude/add-claude-documentation-7Wp79
Feb 28, 2026
Merged

Fix all Play Store blocking issues in Android app#38
DaLuSt merged 1 commit intomainfrom
claude/add-claude-documentation-7Wp79

Conversation

@DaLuSt
Copy link
Copy Markdown
Owner

@DaLuSt DaLuSt commented Feb 28, 2026

Client ID — no longer hardcoded in build.gradle

  • build.gradle reads reddit.client_id from local.properties (gitignored)
  • Falls back to placeholder so the build never breaks without the file
  • Developers set it once in local.properties; no build file edits needed

Release signing

  • Added signingConfigs.release that reads storeFile / storePassword / keyAlias / keyPassword from keystore.properties (gitignored)
  • Added buildTypes.release with signingConfig signingConfigs.release
  • Added buildTypes.debug with .debug applicationId suffix
  • Updated .gitignore: keystore.properties, *.jks, *.keystore

ProGuard / R8

  • Release build sets minifyEnabled=true and shrinkResources=true
  • Created proguard-rules.pro with rules for Retrofit, OkHttp, Gson, Kotlin, EncryptedSharedPreferences, and the app's own model/api packages

Adaptive app icon (minSdk 26 — no PNGs required)

  • res/drawable/ic_launcher_background.xml — Reddit-orange (#FF4500) fill
  • res/drawable/ic_launcher_foreground.xml — white trash-can icon scaled to the 72×72dp adaptive safe zone inside the 108×108dp canvas
  • res/mipmap-anydpi-v26/ic_launcher.xml and ic_launcher_round.xml
  • AndroidManifest now references @mipmap/ic_launcher and roundIcon

Network security config

  • res/xml/network_security_config.xml — cleartextTrafficPermitted=false, trust system CAs only (no user-installed CAs)
  • AndroidManifest references @xml/network_security_config

Privacy policy

  • android/PRIVACY_POLICY.md — covers scopes, local storage, data-not-collected, and Reddit API third-party disclosure
  • SETUP.md updated with Play Store listing checklist (host policy URL)

Bonus fixes (important tier, trivially co-located)

  • Removed unused vote scope from OAUTH_SCOPES
  • Downgraded security-crypto from alpha 1.1.0-alpha06 → stable 1.0.0
  • RedditApiClient: logging interceptor now NONE in release, BASIC in debug
  • RedditApiClient: replaced tokenStorage.refreshToken!! with safe local val to eliminate potential NullPointerException on race condition
  • AndroidManifest: allowBackup changed from true to false (tokens are sensitive; backup of EncryptedSharedPreferences is unnecessary)
  • SETUP.md: full release build walkthrough added (keytool, keystore.properties, bundleRelease); project structure table updated; vote scope removed

https://claude.ai/code/session_014HLhrFtCVRFnEyfRexiy3d

Client ID — no longer hardcoded in build.gradle
- build.gradle reads reddit.client_id from local.properties (gitignored)
- Falls back to placeholder so the build never breaks without the file
- Developers set it once in local.properties; no build file edits needed

Release signing
- Added signingConfigs.release that reads storeFile / storePassword /
  keyAlias / keyPassword from keystore.properties (gitignored)
- Added buildTypes.release with signingConfig signingConfigs.release
- Added buildTypes.debug with .debug applicationId suffix
- Updated .gitignore: keystore.properties, *.jks, *.keystore

ProGuard / R8
- Release build sets minifyEnabled=true and shrinkResources=true
- Created proguard-rules.pro with rules for Retrofit, OkHttp, Gson,
  Kotlin, EncryptedSharedPreferences, and the app's own model/api packages

Adaptive app icon (minSdk 26 — no PNGs required)
- res/drawable/ic_launcher_background.xml — Reddit-orange (#FF4500) fill
- res/drawable/ic_launcher_foreground.xml — white trash-can icon scaled
  to the 72×72dp adaptive safe zone inside the 108×108dp canvas
- res/mipmap-anydpi-v26/ic_launcher.xml and ic_launcher_round.xml
- AndroidManifest now references @mipmap/ic_launcher and roundIcon

Network security config
- res/xml/network_security_config.xml — cleartextTrafficPermitted=false,
  trust system CAs only (no user-installed CAs)
- AndroidManifest references @xml/network_security_config

Privacy policy
- android/PRIVACY_POLICY.md — covers scopes, local storage,
  data-not-collected, and Reddit API third-party disclosure
- SETUP.md updated with Play Store listing checklist (host policy URL)

Bonus fixes (important tier, trivially co-located)
- Removed unused vote scope from OAUTH_SCOPES
- Downgraded security-crypto from alpha 1.1.0-alpha06 → stable 1.0.0
- RedditApiClient: logging interceptor now NONE in release, BASIC in debug
- RedditApiClient: replaced tokenStorage.refreshToken!! with safe local
  val to eliminate potential NullPointerException on race condition
- AndroidManifest: allowBackup changed from true to false (tokens are
  sensitive; backup of EncryptedSharedPreferences is unnecessary)
- SETUP.md: full release build walkthrough added (keytool, keystore.properties,
  bundleRelease); project structure table updated; vote scope removed

https://claude.ai/code/session_014HLhrFtCVRFnEyfRexiy3d
@DaLuSt DaLuSt merged commit c29ffe1 into main Feb 28, 2026
0 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants