Skip to content

Commit

Permalink
Merge pull request #2213 from element-hq/feature/bma/fdroid
Browse files Browse the repository at this point in the history
Feature/bma/fdroid
  • Loading branch information
bmarty authored Jan 17, 2024
2 parents 4bbaced + 592bdb0 commit e2c9389
Show file tree
Hide file tree
Showing 13 changed files with 53 additions and 40 deletions.
9 changes: 5 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,15 @@ jobs:
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
run: ./gradlew :app:assembleDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
run: ./gradlew :app:assembleGplayDebug :app:assembleFDroidDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
- name: Upload APK APKs
if: ${{ matrix.variant == 'debug' }}
uses: actions/upload-artifact@v4
with:
name: elementx-debug
path: |
app/build/outputs/apk/debug/*.apk
app/build/outputs/apk/gplay/debug/*.apk
app/build/outputs/apk/fdroid/debug/*.apk
- uses: rnkdsh/action-upload-diawi@v1.5.4
id: diawi
# Do not fail the whole build if Diawi upload fails
Expand All @@ -64,7 +65,7 @@ jobs:
if: ${{ matrix.variant == 'debug' && github.event_name == 'pull_request' && env.token != '' }}
with:
token: ${{ env.token }}
file: app/build/outputs/apk/debug/app-arm64-v8a-debug.apk
file: app/build/outputs/apk/gplay/debug/app-gplay-arm64-v8a-debug.apk
- name: Add or update PR comment with QR Code to download APK.
if: ${{ matrix.variant == 'debug' && github.event_name == 'pull_request' && steps.diawi.conclusion == 'success' }}
uses: NejcZdovc/comment-pr@v2
Expand All @@ -82,7 +83,7 @@ jobs:
run: ./gradlew compileReleaseSources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
- name: Compile nightly sources
if: ${{ matrix.variant == 'nightly' }}
run: ./gradlew compileNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
run: ./gradlew compileGplayNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
- name: Compile samples minimal
if: ${{ matrix.variant == 'samples' }}
run: ./gradlew :samples:minimal:assemble $CI_GRADLE_ARG_PROPERTIES
2 changes: 1 addition & 1 deletion .github/workflows/maestro.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
# Doc says (https://github.com/mobile-dev-inc/action-maestro-cloud#android):
# app-file should point to an x86 compatible APK file, so upload the x86_64 one (much smaller than the universal APK).
app-file: app/build/outputs/apk/debug/app-x86_64-debug.apk
app-file: app/build/outputs/apk/gplay/debug/app-gplay-x86_64-debug.apk
env: |
USERNAME=maestroelement
PASSWORD=${{ secrets.MATRIX_MAESTRO_ACCOUNT_PASSWORD }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
- name: Additionally upload Nightly APK to browserstack for testing
continue-on-error: true # don't block anything by this upload failing (for now)
run: |
curl -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_PASSWORD" -X POST "https://api-cloud.browserstack.com/app-automate/upload" -F "file=@app/build/outputs/apk/nightly/app-universal-nightly.apk" -F "custom_id=element-x-android-nightly"
curl -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_PASSWORD" -X POST "https://api-cloud.browserstack.com/app-automate/upload" -F "file=@app/build/outputs/apk/gplay/nightly/app-gplay-universal-nightly.apk" -F "custom_id=element-x-android-nightly"
env:
BROWSERSTACK_USERNAME: ${{ secrets.ELEMENT_ANDROID_BROWSERSTACK_USERNAME }}
BROWSERSTACK_PASSWORD: ${{ secrets.ELEMENT_ANDROID_BROWSERSTACK_ACCESS_KEY }}
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
run: ./gradlew bundleRelease $CI_GRADLE_ARG_PROPERTIES
run: ./gradlew bundleGplayRelease $CI_GRADLE_ARG_PROPERTIES
- name: Upload bundle as artifact
uses: actions/upload-artifact@v4
with:
name: elementx-app-bundle-unsigned
name: elementx-app-gplay-bundle-unsigned
path: |
app/build/outputs/bundle/release/app-release.aab
app/build/outputs/bundle/gplayRelease/app-gplay-release.aab
32 changes: 28 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import com.android.build.api.variant.FilterConfiguration.FilterType.ABI
import extension.allFeaturesImpl
import extension.allLibrariesImpl
import extension.allServicesImpl
import extension.koverDependencies
import extension.setupKover
import org.jetbrains.kotlin.cli.common.toBooleanLenient

plugins {
Expand All @@ -36,6 +38,8 @@ plugins {
// id("com.google.gms.google-services")
}

setupKover()

android {
namespace = "io.element.android.x"

Expand Down Expand Up @@ -69,7 +73,7 @@ android {
}

signingConfigs {
named("debug") {
getByName("debug") {
keyAlias = "androiddebugkey"
keyPassword = "android"
storeFile = file("./signature/debug.keystore")
Expand All @@ -87,13 +91,13 @@ android {
}

buildTypes {
named("debug") {
getByName("debug") {
resValue("string", "app_name", "Element X dbg")
applicationIdSuffix = ".debug"
signingConfig = signingConfigs.getByName("debug")
}

named("release") {
getByName("release") {
resValue("string", "app_name", "Element X")
signingConfig = signingConfigs.getByName("debug")

Expand Down Expand Up @@ -124,7 +128,7 @@ android {
// We upload the universal APK to fix this error:
// "App Distribution found more than 1 output file for this variant.
// Please contact firebase-support@google.com for help using APK splits with App Distribution."
artifactPath = "$rootDir/app/build/outputs/apk/nightly/app-universal-nightly.apk"
artifactPath = "$rootDir/app/build/outputs/apk/gplay/nightly/app-gplay-universal-nightly.apk"
// artifactType = "AAB"
// artifactPath = "$rootDir/app/build/outputs/bundle/nightly/app-nightly.aab"
// This file will be generated by the GitHub action
Expand All @@ -143,6 +147,20 @@ android {
buildFeatures {
buildConfig = true
}
flavorDimensions += "store"
productFlavors {
create("gplay") {
dimension = "store"
isDefault = true
buildConfigField("String", "SHORT_FLAVOR_DESCRIPTION", "\"G\"")
buildConfigField("String", "FLAVOR_DESCRIPTION", "\"GooglePlay\"")
}
create("fdroid") {
dimension = "store"
buildConfigField("String", "SHORT_FLAVOR_DESCRIPTION", "\"F\"")
buildConfigField("String", "FLAVOR_DESCRIPTION", "\"FDroid\"")
}
}
}

androidComponents {
Expand Down Expand Up @@ -222,6 +240,11 @@ dependencies {
implementation(projects.appconfig)
anvil(projects.anvilcodegen)

// Comment to not include firebase in the project
"gplayImplementation"(projects.libraries.pushproviders.firebase)
// Comment to not include unified push in the project
implementation(projects.libraries.pushproviders.unifiedpush)

implementation(libs.appyx.core)
implementation(libs.androidx.splash)
implementation(libs.androidx.core)
Expand Down Expand Up @@ -251,4 +274,5 @@ dependencies {
testImplementation(projects.libraries.matrix.test)

ksp(libs.showkase.processor)
koverDependencies()
}
6 changes: 2 additions & 4 deletions app/src/main/kotlin/io/element/android/x/di/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,8 @@ object AppModule {
gitRevisionDate = "TODO",
// BuildConfig.GIT_BRANCH_NAME,
gitBranchName = "TODO",
// BuildConfig.FLAVOR_DESCRIPTION,
flavorDescription = "TODO",
// BuildConfig.SHORT_FLAVOR_DESCRIPTION,
flavorShortDescription = "TODO",
flavorDescription = BuildConfig.FLAVOR_DESCRIPTION,
flavorShortDescription = BuildConfig.SHORT_FLAVOR_DESCRIPTION,
)

@Provides
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ class DefaultBugReporter @Inject constructor(

// add some github labels
builder.addFormDataPart("label", buildMeta.versionName)
builder.addFormDataPart("label", buildMeta.flavorDescription)
if (crashCallStack.isNotEmpty() && withCrashLogs) {
builder.addFormDataPart("label", "crash")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class DefaultBugReporterTest {
val sut = createDefaultBugReporter(server)
var onUploadCancelledCalled = false
var onUploadFailedCalled = false
var progressValues = mutableListOf<Int>()
val progressValues = mutableListOf<Int>()
var onUploadSucceedCalled = false
sut.sendBugReport(
withDevicesLogs = true,
Expand Down Expand Up @@ -80,7 +80,7 @@ class DefaultBugReporterTest {
server.shutdown()
assertThat(onUploadCancelledCalled).isFalse()
assertThat(onUploadFailedCalled).isFalse()
assertThat(progressValues.size).isEqualTo(10)
assertThat(progressValues.size).isEqualTo(11)
assertThat(onUploadSucceedCalled).isTrue()
}

Expand All @@ -97,7 +97,7 @@ class DefaultBugReporterTest {
var onUploadCancelledCalled = false
var onUploadFailedCalled = false
var onUploadFailedReason: String? = null
var progressValues = mutableListOf<Int>()
val progressValues = mutableListOf<Int>()
var onUploadSucceedCalled = false
sut.sendBugReport(
withDevicesLogs = true,
Expand Down Expand Up @@ -131,7 +131,7 @@ class DefaultBugReporterTest {
assertThat(onUploadCancelledCalled).isFalse()
assertThat(onUploadFailedCalled).isTrue()
assertThat(onUploadFailedReason).isEqualTo("An error body")
assertThat(progressValues.size).isEqualTo(10)
assertThat(progressValues.size).isEqualTo(11)
assertThat(onUploadSucceedCalled).isFalse()
}

Expand Down
4 changes: 0 additions & 4 deletions plugins/src/main/kotlin/extension/DependencyHandleScope.kt
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,6 @@ fun DependencyHandlerScope.allLibrariesImpl() {
implementation(project(":libraries:permissions:impl"))
implementation(project(":libraries:push:impl"))
implementation(project(":libraries:push:impl"))
// Comment to not include firebase in the project
implementation(project(":libraries:pushproviders:firebase"))
// Comment to not include unified push in the project
implementation(project(":libraries:pushproviders:unifiedpush"))
implementation(project(":libraries:featureflag:impl"))
implementation(project(":libraries:pushstore:impl"))
implementation(project(":libraries:preferences:impl"))
Expand Down
6 changes: 3 additions & 3 deletions plugins/src/main/kotlin/extension/KoverExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ fun Project.setupKover() {

defaults {
// add reports of both 'debug' and 'release' Android build variants to default reports
mergeWith("debug")
mergeWith("release")
mergeWith("gplayDebug")
mergeWith("gplayRelease")

verify {
onCheck = true
Expand Down Expand Up @@ -202,7 +202,7 @@ fun Project.setupKover() {
}
}

androidReports("release") {}
androidReports("gplayRelease") {}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,10 @@
/**
* This will generate the plugin "io.element.android-compose-application" to use by app and samples modules
*/
import extension.koverDependencies
import extension.androidConfig
import extension.commonDependencies
import extension.composeConfig
import extension.composeDependencies
import extension.setupKover
import org.gradle.accessors.dm.LibrariesForLibs

val libs = the<LibrariesForLibs>()
Expand All @@ -32,8 +30,6 @@ plugins {
id("com.autonomousapps.dependency-analysis")
}

setupKover()

android {
androidConfig(project)
composeConfig(libs)
Expand All @@ -46,5 +42,4 @@ dependencies {
commonDependencies(libs)
composeDependencies(libs)
coreLibraryDesugaring(libs.android.desugar)
koverDependencies()
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,8 @@ object Singleton {
gitRevisionDate = "TODO",
// BuildConfig.GIT_BRANCH_NAME,
gitBranchName = "TODO",
// BuildConfig.FLAVOR_DESCRIPTION,
flavorDescription = "TODO",
// BuildConfig.SHORT_FLAVOR_DESCRIPTION,
flavorShortDescription = "TODO",
flavorDescription = "NA",
flavorShortDescription = "NA",
)

init {
Expand Down
6 changes: 3 additions & 3 deletions tools/release/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ git commit -a -m "Setting version for the release ${version}"

printf "\n================================================================================\n"
printf "Building the bundle locally first...\n"
./gradlew clean app:bundleRelease
./gradlew clean app:bundleGplayRelease

printf "\n================================================================================\n"
printf "Running towncrier...\n"
Expand Down Expand Up @@ -218,7 +218,7 @@ fi

printf "\n================================================================================\n"
printf "Wait for the GitHub action https://github.com/element-hq/element-x-android/actions/workflows/release.yml?query=branch%%3Amain to build the 'main' branch.\n"
read -p "After GHA is finished, please enter the artifact URL (for 'elementx-app-bundle-unsigned'): " artifactUrl
read -p "After GHA is finished, please enter the artifact URL (for 'elementx-app-gplay-bundle-unsigned'): " artifactUrl

printf "\n================================================================================\n"
printf "Downloading the artifact...\n"
Expand All @@ -235,7 +235,7 @@ python3 ./tools/github/download_github_artifacts.py \
printf "\n================================================================================\n"
printf "Unzipping the artifact...\n"

unzip ${targetPath}/elementx-app-bundle-unsigned.zip -d ${targetPath}
unzip ${targetPath}/elementx-app-gplay-bundle-unsigned.zip -d ${targetPath}

unsignedBundlePath="${targetPath}/app-release.aab"
signedBundlePath="${targetPath}/app-release-signed.aab"
Expand Down

0 comments on commit e2c9389

Please sign in to comment.