Bobby Prabowo

Bopbi’s mind

I’m Bobby, an Android Dev and (still) an app hobbyist

Current Project

Recent TIL

Android Makers: How to keep your app’s secrets, secret

Date: 2025/06/26

Interesting tools (approach)

  1. Secrets Gradle Plugin for Android using the same approach as the Google Maps SDK
  2. gitleaks a Static analytics tools
  3. git filter-branch manually check git history
  4. git-filter-repo remove logged secret changes by rewrite git history (using python)
  5. BFG Repo-cleaner remove logged secret changes by rewrite git history (using scala)
  6. hidden-secrets-gradle-plugin uses ndk with XOR (may be not maintained last commit are 2 years ago)
  7. bytemask mask secrets that make it difficult to reverse engineering
  8. Sekret store secrets on NDK using KMM plugin, also provide secure logging by using for annotated compatible string/char property
  9. Own API proxy servers

Jetpack Compose: Debugging recomposition

Date: 2025/05/25

Three Phase in Compose

  1. Composition: What UI to show, building tree of composables
  2. Layout: Where to Place UI, layout take those composables and works out where on the screen they will be shown
  3. Drawing: How it renders, Draw everything to screen

Compose can skip a phase entirely if nothing has changed in it

Prefer lambda modifiers when using frequently changing state, the video show case is using the scroll provider lambda over y property when performing translation, and reading the state inside the graphicsLayer


Android Api Level

Date: 2025/01/03

Since i often forget to about the name of the Version, the codename and the site is include the play store requirement changes, and major library info


How to Test Conflating Stateflow

Date: 2024/12/15

Separate assert and code triggering into 2 different set of coroutine launch

Please note that when using flow the code triggering should still use a separate launch and not inside the test block