Merge pull request #2213 from element-hq/feature/bma/fdroid
Feature/bma/fdroid
This commit is contained in:
commit
e2c9389d36
13 changed files with 53 additions and 40 deletions
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
.github/workflows/maestro.yml
vendored
2
.github/workflows/maestro.yml
vendored
|
|
@ -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 }}
|
||||
|
|
|
|||
2
.github/workflows/nightly.yml
vendored
2
.github/workflows/nightly.yml
vendored
|
|
@ -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
.github/workflows/release.yml
vendored
6
.github/workflows/release.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
@ -36,6 +38,8 @@ plugins {
|
|||
// id("com.google.gms.google-services")
|
||||
}
|
||||
|
||||
setupKover()
|
||||
|
||||
android {
|
||||
namespace = "io.element.android.x"
|
||||
|
||||
|
|
@ -69,7 +73,7 @@ android {
|
|||
}
|
||||
|
||||
signingConfigs {
|
||||
named("debug") {
|
||||
getByName("debug") {
|
||||
keyAlias = "androiddebugkey"
|
||||
keyPassword = "android"
|
||||
storeFile = file("./signature/debug.keystore")
|
||||
|
|
@ -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")
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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 {
|
||||
|
|
@ -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)
|
||||
|
|
@ -251,4 +274,5 @@ dependencies {
|
|||
testImplementation(projects.libraries.matrix.test)
|
||||
|
||||
ksp(libs.showkase.processor)
|
||||
koverDependencies()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
@ -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,
|
||||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -202,7 +202,7 @@ fun Project.setupKover() {
|
|||
}
|
||||
}
|
||||
|
||||
androidReports("release") {}
|
||||
androidReports("gplayRelease") {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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>()
|
||||
|
|
@ -32,8 +30,6 @@ plugins {
|
|||
id("com.autonomousapps.dependency-analysis")
|
||||
}
|
||||
|
||||
setupKover()
|
||||
|
||||
android {
|
||||
androidConfig(project)
|
||||
composeConfig(libs)
|
||||
|
|
@ -46,5 +42,4 @@ dependencies {
|
|||
commonDependencies(libs)
|
||||
composeDependencies(libs)
|
||||
coreLibraryDesugaring(libs.android.desugar)
|
||||
koverDependencies()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
@ -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"
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue