$npx -y skills add hyperb1iss/hyperdroid-skill --skill android-buildUse when building Android apps (Gradle CLI) or ROMs (AOSP, LineageOS). Triggers on "gradle build", "assemble", "AOSP", "LineageOS", "lunch", "mka", "breakfast", "brunch", "compile android", "device tree", "kernel build".
| 1 | # Android Build Systems |
| 2 | |
| 3 | This skill covers building Android apps via Gradle CLI and building custom ROMs via AOSP/LineageOS. |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | ## App Building (Gradle CLI) |
| 8 | |
| 9 | ### Essential Commands |
| 10 | |
| 11 | ```bash |
| 12 | ./gradlew tasks # List available tasks |
| 13 | ./gradlew assembleDebug # Build debug APK |
| 14 | ./gradlew assembleRelease # Build release APK |
| 15 | ./gradlew installDebug # Build + install to device |
| 16 | ./gradlew bundleRelease # Build AAB (App Bundle) |
| 17 | |
| 18 | # APK output location |
| 19 | # app/build/outputs/apk/debug/app-debug.apk |
| 20 | # app/build/outputs/apk/release/app-release.apk |
| 21 | ``` |
| 22 | |
| 23 | ### Build Variants |
| 24 | |
| 25 | ```bash |
| 26 | ./gradlew assembleFreeDebug # Flavor + build type |
| 27 | ./gradlew assemblePaidRelease |
| 28 | ./gradlew assembleDebug --info # Verbose output |
| 29 | ./gradlew assembleRelease -x test # Skip tests |
| 30 | ``` |
| 31 | |
| 32 | ### Testing |
| 33 | |
| 34 | ```bash |
| 35 | ./gradlew test # Unit tests |
| 36 | ./gradlew testDebugUnitTest # Debug unit tests only |
| 37 | ./gradlew connectedAndroidTest # Instrumented tests |
| 38 | ./gradlew connectedCheck # All connected tests |
| 39 | |
| 40 | # Run specific test |
| 41 | ./gradlew test --tests "*.MyTestClass" |
| 42 | ``` |
| 43 | |
| 44 | ### Linting & Analysis |
| 45 | |
| 46 | ```bash |
| 47 | ./gradlew lint # Run lint |
| 48 | ./gradlew lintDebug # Debug only (faster) |
| 49 | ./gradlew ktlintCheck # Kotlin style (if configured) |
| 50 | ./gradlew detekt # Detekt analysis (if configured) |
| 51 | ``` |
| 52 | |
| 53 | ### Clean & Refresh |
| 54 | |
| 55 | ```bash |
| 56 | ./gradlew clean # Clean build |
| 57 | ./gradlew clean assembleDebug # Clean + build |
| 58 | ./gradlew --refresh-dependencies # Force dependency refresh |
| 59 | ./gradlew --stop # Stop Gradle daemon |
| 60 | ``` |
| 61 | |
| 62 | ### Dependencies |
| 63 | |
| 64 | ```bash |
| 65 | ./gradlew dependencies # All dependencies |
| 66 | ./gradlew app:dependencies # Module dependencies |
| 67 | ./gradlew dependencyInsight --dependency <name> |
| 68 | ``` |
| 69 | |
| 70 | ### Signing |
| 71 | |
| 72 | Debug keystore location: |
| 73 | |
| 74 | - Linux: `~/.android/debug.keystore` |
| 75 | - macOS: `~/.android/debug.keystore` |
| 76 | - Windows: `C:\Users\<user>\.android\debug.keystore` |
| 77 | |
| 78 | Password: `android`, Alias: `androiddebugkey` |
| 79 | |
| 80 | ```bash |
| 81 | # Create release keystore |
| 82 | keytool -genkey -v -keystore release.keystore \ |
| 83 | -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 |
| 84 | ``` |
| 85 | |
| 86 | ### Performance |
| 87 | |
| 88 | ```bash |
| 89 | ./gradlew assembleDebug --parallel # Parallel builds |
| 90 | ./gradlew assembleDebug --build-cache # Use cache |
| 91 | ./gradlew assembleDebug --offline # Offline mode |
| 92 | ./gradlew --scan # Build scan (uploads data) |
| 93 | ./gradlew --profile # Local profile report |
| 94 | ``` |
| 95 | |
| 96 | ### gradle.properties Optimization |
| 97 | |
| 98 | ```properties |
| 99 | org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError |
| 100 | org.gradle.parallel=true |
| 101 | org.gradle.caching=true |
| 102 | org.gradle.configuration-cache=true |
| 103 | android.useAndroidX=true |
| 104 | ``` |
| 105 | |
| 106 | --- |
| 107 | |
| 108 | ## SDK Management |
| 109 | |
| 110 | ### sdkmanager |
| 111 | |
| 112 | ```bash |
| 113 | sdkmanager --list # List available packages |
| 114 | sdkmanager --list | grep system # Filter system images |
| 115 | sdkmanager "platform-tools" # Install package |
| 116 | sdkmanager "platforms;android-34" # Install platform |
| 117 | sdkmanager "system-images;android-34;google_apis;x86_64" |
| 118 | sdkmanager --update # Update all |
| 119 | sdkmanager --licenses # Accept licenses |
| 120 | ``` |
| 121 | |
| 122 | ### avdmanager |
| 123 | |
| 124 | ```bash |
| 125 | avdmanager list device # List device profiles |
| 126 | avdmanager list avd # List created AVDs |
| 127 | |
| 128 | # Create AVD |
| 129 | avdmanager create avd -n my_avd \ |
| 130 | -k "system-images;android-34;google_apis;x86_64" \ |
| 131 | -d pixel_6 |
| 132 | |
| 133 | avdmanager delete avd -n my_avd |
| 134 | ``` |
| 135 | |
| 136 | ### Emulator CLI |
| 137 | |
| 138 | ```bash |
| 139 | emulator -list-avds # List AVDs |
| 140 | emulator @my_avd # Start AVD |
| 141 | emulator @my_avd -no-snapshot # Fresh boot |
| 142 | emulator @my_avd -no-window # Headless |
| 143 | emulator @my_avd -wipe-data # Factory reset |
| 144 | ``` |
| 145 | |
| 146 | --- |
| 147 | |
| 148 | ## ROM Building (AOSP/LineageOS) |
| 149 | |
| 150 | ### Environment Setup |
| 151 | |
| 152 | ```bash |
| 153 | # Install repo tool |
| 154 | mkdir -p ~/.bin |
| 155 | curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo |
| 156 | chmod a+x ~/.bin/repo |
| 157 | export PATH="$HOME/.bin:$PATH" |
| 158 | |
| 159 | # Initialize repo |
| 160 | mkdir android && cd android |
| 161 | repo init -u https://github.com/LineageOS/android.git -b lineage-21.0 |
| 162 | # Or AOSP: repo init -u https://android.googlesource.com/platform/manifest |
| 163 | |
| 164 | # Sync source |
| 165 | repo sync -c -j$(nproc) --force-sync --no-tags --no-clone-bundle |
| 166 | ``` |
| 167 | |
| 168 | ### Build Commands |
| 169 | |
| 170 | ```bash |
| 171 | # Setup environment |
| 172 | source build/envsetup.sh |
| 173 | |
| 174 | # Select device |
| 175 | lunch <device>-userdebug # AOSP |
| 176 | breakfast <device> # LineageOS |
| 177 | |
| 178 | # Build |
| 179 | m # Full build |
| 180 | mka bacon # LineageOS (with flashable zip) |
| 181 | mka bootimage # Just boot.img |
| 182 | mka systemimage # Just system |
| 183 | |
| 184 | # Parallel build |
| 185 | m -j$(nproc) |
| 186 | ``` |
| 187 | |
| 188 | ### |