Skip to content

Commit f4a1b3f

Browse files
committed
README: Add section about accessing generated secrets inside Java class
1 parent fd9e180 commit f4a1b3f

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,52 @@ android {
9696
}
9797
```
9898

99+
## Access inside Kotlin
100+
99101
Access your secret key by calling :
100102
```kotlin
101103
val key = MainSecrets().getYourSecretKeyName()
102104
```
103105

106+
## Access inside Java
107+
108+
The names of the methods in the generated files (`MainSecrets.kt` & `Secrets.kt`) are replaced with dummy strings such as `a0` on the `JVM` side for extra security. This makes accessing these methods inside `Java` classes a bit tricky since those names are not "readable" and are dependent on the order in `secrets.json` file.
109+
110+
As as solution, a helper/wrapper `Kotlin` class can be created instead of accessing these methods directly inside a `Java` class:
111+
112+
`MySecretsHelper.kt`:
113+
```kotlin
114+
internal class MySecretsHelper {
115+
val secrets = MainSecrets() // Suppose contains "external fun getYourSecretKeyName(): String" with "@JvmName("a0")" annotation.
116+
val mySecret: String get() = secrets.getYourSecretKeyName()
117+
}
118+
```
119+
120+
Inside your `Java` class, instead of doing:
121+
122+
```java
123+
class MySecretsConsumer {
124+
final MainSecrets secrets = new MainSecrets();
125+
126+
void someMethod() {
127+
final String key = secrets.a0();
128+
...
129+
}
130+
}
131+
```
132+
133+
You can do:
134+
```java
135+
class MySecretsConsumer {
136+
final MySecretsHelper secretsHelper = new MySecretsHelper();
137+
138+
void someMethod() {
139+
final String key = secretsHelper.getMySecret();
140+
...
141+
}
142+
}
143+
```
144+
104145
# 4) Flavor-specific Secrets (Optional)
105146
If you are working on multi-flavor projects and have flavor-specific secrets, you need to pass arguments to CMake in your `build.gradle[.kts]` file. Follow the steps below:
106147

0 commit comments

Comments
 (0)