diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml index 07d116950..533a6a714 100644 --- a/.github/workflows/android-build.yml +++ b/.github/workflows/android-build.yml @@ -51,10 +51,10 @@ jobs: EOF - name: Build release APK - run: ./gradlew assembleRelease + run: ./gradlew assembleTermuxRelease - name: Upload APK uses: actions/upload-artifact@v4 with: name: clawdroid-release-apk - path: android/app/build/outputs/apk/release/*.apk + path: android/app/build/outputs/apk/termuxRelease/*.apk diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4caec1b20..51257fd4b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -120,16 +120,16 @@ jobs: EOF - name: Build release APK - run: ./gradlew assembleRelease + run: ./gradlew assembleTermuxRelease - name: Rename APK with version run: | - mv app/build/outputs/apk/release/app-release.apk \ - app/build/outputs/apk/release/clawdroid-${{ inputs.tag }}.apk + mv app/build/outputs/apk/termuxRelease/app-termux-release.apk \ + app/build/outputs/apk/termuxRelease/clawdroid-${{ inputs.tag }}.apk - name: Upload APK to release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release upload "${{ inputs.tag }}" \ - app/build/outputs/apk/release/clawdroid-${{ inputs.tag }}.apk + app/build/outputs/apk/termuxRelease/clawdroid-${{ inputs.tag }}.apk diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index d84906d3c..24407a23c 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -49,8 +49,20 @@ android { } } + flavorDimensions += "variant" + productFlavors { + create("termux") { dimension = "variant" } + create("embedded") { dimension = "variant" } + } + buildFeatures { compose = true + buildConfig = true + } + + sourceSets { + getByName("termux") { java.srcDirs("src/termux/java") } + getByName("embedded") { java.srcDirs("src/embedded/java") } } compileOptions { @@ -67,6 +79,8 @@ dependencies { implementation(project(":backend:api")) implementation(project(":backend:config")) + "termuxImplementation"(project(":backend:loader-noop")) + implementation(platform(libs.compose.bom)) implementation(libs.compose.ui) implementation(libs.compose.material3) diff --git a/android/app/src/embedded/java/io/clawdroid/di/FlavorModule.kt b/android/app/src/embedded/java/io/clawdroid/di/FlavorModule.kt new file mode 100644 index 000000000..0eda7f92e --- /dev/null +++ b/android/app/src/embedded/java/io/clawdroid/di/FlavorModule.kt @@ -0,0 +1,10 @@ +package io.clawdroid.di + +import io.clawdroid.backend.api.BackendLifecycle +import io.clawdroid.backend.api.NoopBackendLifecycle +import org.koin.dsl.module + +val flavorModule = module { + // Step 13 で EmbeddedBackendLifecycle に差し替え予定 + single { NoopBackendLifecycle() } +} diff --git a/android/app/src/main/java/io/clawdroid/ClawDroidApp.kt b/android/app/src/main/java/io/clawdroid/ClawDroidApp.kt index f8d1f1d4a..718f7fa86 100644 --- a/android/app/src/main/java/io/clawdroid/ClawDroidApp.kt +++ b/android/app/src/main/java/io/clawdroid/ClawDroidApp.kt @@ -7,6 +7,7 @@ import io.clawdroid.backend.config.ConfigApiClient import io.clawdroid.backend.config.configModule import io.clawdroid.core.data.remote.WebSocketClient import io.clawdroid.di.appModule +import io.clawdroid.di.flavorModule import io.clawdroid.receiver.NotificationHelper import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.distinctUntilChanged @@ -23,7 +24,7 @@ class ClawDroidApp : Application() { super.onCreate() val koinApp = startKoin { androidContext(this@ClawDroidApp) - modules(appModule, configModule) + modules(appModule, flavorModule, configModule) } NotificationHelper.createNotificationChannel(this) diff --git a/android/app/src/termux/java/io/clawdroid/di/FlavorModule.kt b/android/app/src/termux/java/io/clawdroid/di/FlavorModule.kt new file mode 100644 index 000000000..126f50cea --- /dev/null +++ b/android/app/src/termux/java/io/clawdroid/di/FlavorModule.kt @@ -0,0 +1,9 @@ +package io.clawdroid.di + +import io.clawdroid.backend.api.BackendLifecycle +import io.clawdroid.backend.api.NoopBackendLifecycle +import org.koin.dsl.module + +val flavorModule = module { + single { NoopBackendLifecycle() } +} diff --git a/android/backend/loader-noop/build.gradle.kts b/android/backend/loader-noop/build.gradle.kts new file mode 100644 index 000000000..346428e1e --- /dev/null +++ b/android/backend/loader-noop/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + alias(libs.plugins.android.library) +} + +android { + namespace = "io.clawdroid.backend.loader.noop" + compileSdk = libs.versions.android.compileSdk.get().toInt() + defaultConfig { minSdk = libs.versions.android.minSdk.get().toInt() } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} + +dependencies { + implementation(project(":backend:api")) +} diff --git a/android/backend/loader-noop/src/main/AndroidManifest.xml b/android/backend/loader-noop/src/main/AndroidManifest.xml new file mode 100644 index 000000000..8072ee00d --- /dev/null +++ b/android/backend/loader-noop/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index 70700201d..b34dcf446 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -20,3 +20,4 @@ include(":core:data") include(":core:ui") include(":backend:api") include(":backend:config") +include(":backend:loader-noop")