|
| 1 | +# Android Libraries Documentation Reference |
| 2 | + |
| 3 | +This document provides a comprehensive reference for all libraries used in the bitkit-android project, including their documentation links and key usage patterns. |
| 4 | + |
| 5 | +## Core Android Libraries |
| 6 | + |
| 7 | +### Kotlin |
| 8 | +- **Documentation**: https://kotlinlang.org/docs/ |
| 9 | +- **API Reference**: https://kotlinlang.org/api/latest/jvm/stdlib/ |
| 10 | + |
| 11 | +### Android Core |
| 12 | +- **Core KTX**: https://developer.android.com/kotlin/ktx |
| 13 | +- **AppCompat**: https://developer.android.com/jetpack/androidx/releases/appcompat |
| 14 | +- **Material Design**: https://material.io/develop/android |
| 15 | +- **Core Splashscreen**: https://developer.android.com/develop/ui/views/launch/splash-screen |
| 16 | + |
| 17 | +## UI Framework |
| 18 | + |
| 19 | +### Jetpack Compose |
| 20 | +- **Main Documentation**: https://developer.android.com/jetpack/compose |
| 21 | +- **BOM Mapping**: https://developer.android.com/develop/ui/compose/bom/bom-mapping |
| 22 | +- **Material 3**: https://developer.android.com/jetpack/compose/designsystems/material3 |
| 23 | +- **Navigation**: https://developer.android.com/jetpack/compose/navigation |
| 24 | +- **Tooling**: https://developer.android.com/jetpack/compose/tooling |
| 25 | + |
| 26 | +### Accompanist |
| 27 | +- **Documentation**: https://google.github.io/accompanist/ |
| 28 | +- **Permissions**: https://google.github.io/accompanist/permissions/ |
| 29 | +- **Pager Indicators**: https://google.github.io/accompanist/pager/ |
| 30 | + |
| 31 | +### Layout |
| 32 | +- **ConstraintLayout Compose**: https://developer.android.com/jetpack/compose/layouts/constraintlayout |
| 33 | + |
| 34 | +## Architecture & Dependency Injection |
| 35 | + |
| 36 | +### Hilt |
| 37 | +- **Documentation**: https://dagger.dev/hilt/ |
| 38 | +- **Android Guide**: https://developer.android.com/training/dependency-injection/hilt-android |
| 39 | +- **Compose Integration**: https://developer.android.com/jetpack/compose/libraries#hilt |
| 40 | + |
| 41 | +### Lifecycle Components |
| 42 | +- **Documentation**: https://developer.android.com/jetpack/androidx/releases/lifecycle |
| 43 | +- **ViewModel**: https://developer.android.com/topic/libraries/architecture/viewmodel |
| 44 | +- **Compose Integration**: https://developer.android.com/jetpack/compose/libraries#viewmodel |
| 45 | + |
| 46 | +### Data Persistence |
| 47 | +- **DataStore Preferences**: https://developer.android.com/topic/libraries/architecture/datastore |
| 48 | +- **Room**: https://developer.android.com/training/data-storage/room |
| 49 | + |
| 50 | +## Networking & Serialization |
| 51 | + |
| 52 | +### Ktor |
| 53 | +- **Documentation**: https://ktor.io/docs/ |
| 54 | +- **Client Documentation**: https://ktor.io/docs/getting-started-ktor-client.html |
| 55 | +- **Android Guide**: https://ktor.io/docs/client-engines.html#android |
| 56 | + |
| 57 | +### Serialization |
| 58 | +- **Kotlinx Serialization**: https://kotlinlang.org/docs/serialization.html |
| 59 | +- **Protobuf**: https://protobuf.dev/ |
| 60 | + |
| 61 | +## Bitcoin & Lightning Network |
| 62 | + |
| 63 | +### LDK Node Android |
| 64 | +- **GitHub**: https://github.com/synonymdev/ldk-node (Fork) |
| 65 | +- **Upstream Docs**: https://lightningdevkit.org/ |
| 66 | +- **API Reference**: https://docs.rs/ldk-node/latest/ldk_node/ |
| 67 | + |
| 68 | +### Bitkit Core |
| 69 | +- **GitHub**: https://github.com/synonymdev/bitkit-core |
| 70 | +- **Custom Android bindings for Bitcoin operations** |
| 71 | + |
| 72 | +### Cryptography |
| 73 | +- **BouncyCastle**: https://www.bouncycastle.org/java.html |
| 74 | +- **Provider Documentation**: https://www.bouncycastle.org/documentation.html |
| 75 | + |
| 76 | +## Media & Scanning |
| 77 | + |
| 78 | +### Camera |
| 79 | +- **CameraX**: https://developer.android.com/training/camerax |
| 80 | +- **Camera2 API**: https://developer.android.com/training/camerax/architecture |
| 81 | + |
| 82 | +### Barcode/QR Scanning |
| 83 | +- **ZXing**: https://github.com/zxing/zxing |
| 84 | +- **ML Kit Barcode**: https://developers.google.com/ml-kit/vision/barcode-scanning |
| 85 | + |
| 86 | +### Animations |
| 87 | +- **Lottie Compose**: https://airbnb.io/lottie/#/android-compose |
| 88 | + |
| 89 | +## Firebase |
| 90 | + |
| 91 | +### Firebase Platform |
| 92 | +- **Documentation**: https://firebase.google.com/docs/android/setup |
| 93 | +- **Messaging**: https://firebase.google.com/docs/cloud-messaging/android/client |
| 94 | +- **Analytics**: https://firebase.google.com/docs/analytics/get-started?platform=android |
| 95 | + |
| 96 | +## Security & Authentication |
| 97 | + |
| 98 | +### Biometric |
| 99 | +- **Documentation**: https://developer.android.com/jetpack/androidx/releases/biometric |
| 100 | +- **Guide**: https://developer.android.com/training/sign-in/biometric-auth |
| 101 | + |
| 102 | +## Background Processing |
| 103 | + |
| 104 | +### WorkManager |
| 105 | +- **Documentation**: https://developer.android.com/topic/libraries/architecture/workmanager |
| 106 | +- **Hilt Integration**: https://developer.android.com/training/dependency-injection/hilt-jetpack |
| 107 | + |
| 108 | +## Utilities |
| 109 | + |
| 110 | +### Date/Time |
| 111 | +- **Kotlinx DateTime**: https://github.com/Kotlin/kotlinx-datetime |
| 112 | + |
| 113 | +### Charts |
| 114 | +- **Compose Charts**: https://github.com/ehsannarmani/ComposeCharts |
| 115 | + |
| 116 | +### Native Libraries |
| 117 | +- **JNA**: https://github.com/java-native-access/jna |
| 118 | + |
| 119 | +## Testing Libraries |
| 120 | + |
| 121 | +### Unit Testing |
| 122 | +- **JUnit**: https://junit.org/junit4/ |
| 123 | +- **Mockito Kotlin**: https://github.com/mockito/mockito-kotlin |
| 124 | +- **Robolectric**: http://robolectric.org/ |
| 125 | +- **Turbine**: https://github.com/cashapp/turbine |
| 126 | + |
| 127 | +### Android Testing |
| 128 | +- **Espresso**: https://developer.android.com/training/testing/espresso |
| 129 | +- **Compose Testing**: https://developer.android.com/jetpack/compose/testing |
| 130 | +- **Hilt Testing**: https://developer.android.com/training/dependency-injection/hilt-testing |
| 131 | + |
| 132 | +## Key Configuration Notes |
| 133 | + |
| 134 | +### Compose Compiler Flags |
| 135 | +- StrongSkipping is disabled |
| 136 | +- OptimizeNonSkippingGroups is enabled |
| 137 | + |
| 138 | +### Build Configuration |
| 139 | +- Minimum SDK: 28 |
| 140 | +- Target SDK: 35 |
| 141 | +- Kotlin JVM Target: 11 |
| 142 | +- Compose BOM manages all Compose library versions |
| 143 | + |
| 144 | +## Development Guidelines |
| 145 | + |
| 146 | +### When Adding New Libraries |
| 147 | +1. Check if functionality exists in current libraries first |
| 148 | +2. Prefer AndroidX/Jetpack libraries when available |
| 149 | +3. Ensure compatibility with current Compose BOM version |
| 150 | +4. Add to libs.versions.toml for version management |
| 151 | +5. Update this documentation with links and usage notes |
| 152 | + |
| 153 | +### Version Management |
| 154 | +- All versions are centralized in `gradle/libs.versions.toml` |
| 155 | +- Use BOM (Bill of Materials) for related library groups |
| 156 | +- Keep major dependencies (Compose, Kotlin, Hilt) aligned |
| 157 | + |
| 158 | +### Testing Strategy |
| 159 | +- Unit tests: JUnit + Mockito + Robolectric |
| 160 | +- Integration tests: Hilt testing + Room testing |
| 161 | +- UI tests: Compose testing + Espresso |
| 162 | +- Flow testing: Turbine for StateFlow/Flow testing |
0 commit comments