| Task | Command |
|---|---|
| Java format (Google Java Format) | yarn fix:android |
| Kotlin format (ktlint) | yarn fix:kotlin |
| Java lint check | yarn lint:android |
| Kotlin lint check | yarn lint:kotlin |
| PMD static analysis | yarn java:pmd |
- Use Google Java Format (enforced by CI)
- Package structure:
io.sentry.react.* - Null safety: Use
@Nullableand@NonNullannotations
- Use ktlint formatting (enforced by CI)
- Prefer Kotlin idioms (data classes, extension functions, etc.)
Android native code supports both old and new React Native architectures:
src/oldarch/— Legacy bridge implementationsrc/newarch/— TurboModule / Fabric implementationsrc/main/— Shared code
@ReactMethod
public void nativeOperation(String param, Promise promise) {
try {
boolean result = performOperation(param);
promise.resolve(result);
} catch (Exception e) {
promise.reject("OPERATION_FAILED", "Operation failed: " + e.getMessage(), e);
}
}- Build sentry-java:
cd sentry-java && make dryRelease - Add
mavenLocal()to sample'sandroid/build.gradle - Update version to locally published version