diff --git a/Jenkinsfile b/Jenkinsfile index 6625c19..3718118 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,15 +2,15 @@ library "openiumpipeline" openiumDroidJob modules: [ "consentium": [ - testTasks: [], - unitTestTasks: [], + unitTestTasks: ["testDevDebugUnitTest"], ], "consentium-ui": [ - testTasks: [], - unitTestTasks: [], + unitTestTasks: ["testDevDebugUnitTest"], ], "app": [ - testTasks: [], - unitTestTasks: [], + unitTestTasks: ["testDevDebugUnitTest"], + testTasks: ["pixel5DevDebugAndroidTest"], + publishApkVariants : ["devRelease", "demoRelease", "prodRelease"], ], ] +publishChannel: '#int-consentium' \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c9e6ab8..3585a7c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ import org.gradle.language.nativeplatform.internal.BuildType import java.io.FileInputStream import java.util.Properties +import com.android.build.api.dsl.ManagedVirtualDevice plugins { alias(libs.plugins.ksp) @@ -48,6 +49,7 @@ android { buildTypes { debug { isMinifyEnabled = false + isShrinkResources = false versionNameSuffix = "-debug" applicationIdSuffix = ".debug" @@ -91,6 +93,19 @@ android { buildFeatures { compose = true } + + testOptions { + animationsDisabled = true + managedDevices { + devices { + create("pixel5") { + device = "Pixel 5" + apiLevel = 34 + systemImageSource = "google" + } + } + } + } } dependencies { diff --git a/consentium-ui/build.gradle.kts b/consentium-ui/build.gradle.kts index f8b87c3..616112c 100644 --- a/consentium-ui/build.gradle.kts +++ b/consentium-ui/build.gradle.kts @@ -19,12 +19,26 @@ android { } buildTypes { - release { + debug { isMinifyEnabled = false + proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) + + consumerProguardFiles("proguard-rules.pro") + } + + release { + isMinifyEnabled = true + + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + + consumerProguardFiles("proguard-rules.pro") } } diff --git a/consentium-ui/proguard-rules.pro b/consentium-ui/proguard-rules.pro index 481bb43..9b0d87f 100644 --- a/consentium-ui/proguard-rules.pro +++ b/consentium-ui/proguard-rules.pro @@ -18,4 +18,56 @@ # If you keep the line number information, uncomment this to # hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file +#-renamesourcefileattribute SourceFile + +-dontwarn fr.openium.consentium.data.di.ConsentiumUrl +-dontwarn fr.openium.consentium.data.di.OkHttpClientDefault +-dontwarn java.lang.invoke.StringConcatFactory + +-keepattributes SourceFile,LineNumberTable +-keep public class * extends java.lang.Exception + +-keep class com.google.firebase.crashlytics.** { *; } +-dontwarn com.google.firebase.crashlytics.** + +# Keep enums +-keep public enum fr.openium.consentium.**{ + *; +} + +# Garder les annotations de Kotlin +-keepattributes *Annotation* + +# Garder les classes et les membres annotés avec @Keep +-keep @androidx.annotation.Keep class * { *; } +-keepclassmembers class ** { + @androidx.annotation.Keep *; +} + +# Garder les classes et les membres annotés avec @Serializable +-keep @kotlinx.serialization.Serializable class * { *; } +-keepclassmembers class ** { + @kotlinx.serialization.Serializable *; +} + +# Garder les classes annotées avec @HiltAndroidApp +-keep @dagger.hilt.android.HiltAndroidApp class * { *; } + +# Garder les classes et les membres pour Timber +-keep class timber.log.Timber { *; } +-keep interface timber.log.Timber$Tree { *; } + +-keep public enum fr.openium.consentium_ui.ui.model.ConsentiumPageUI +-keepclassmembers enum fr.openium.consentium_ui.ui.model.ConsentiumPageUI { + ; +} + +-keep class fr.openium.consentium_ui.data.** { *; } +-keep class fr.openium.consentium_ui.domain.repository.** { *; } +-keep class fr.openium.consentium_ui.domain.usecase.** { *; } +-keep class fr.openium.consentium_ui.ui.** { *; } +-keepclassmembers class fr.openium.consentium_ui.data.** { *; } +-keepclassmembers class fr.openium.consentium_ui.domain.repository.** { *; } +-keepclassmembers class fr.openium.consentium_ui.domain.usecase.** { *; } +-keepclassmembers class fr.openium.consentium_ui.ui.** { *; } + diff --git a/consentium/build.gradle.kts b/consentium/build.gradle.kts index 05e868a..e1b6265 100644 --- a/consentium/build.gradle.kts +++ b/consentium/build.gradle.kts @@ -20,11 +20,14 @@ android { buildTypes { debug { isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + consumerProguardFiles("proguard-rules.pro") } release { isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + consumerProguardFiles("proguard-rules.pro") } } diff --git a/consentium/proguard-rules.pro b/consentium/proguard-rules.pro index 481bb43..585c3bd 100644 --- a/consentium/proguard-rules.pro +++ b/consentium/proguard-rules.pro @@ -18,4 +18,42 @@ # If you keep the line number information, uncomment this to # hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file +#-renamesourcefileattribute SourceFile + +-dontwarn java.lang.invoke.StringConcatFactory + +-keepattributes SourceFile,LineNumberTable +-keep public class * extends java.lang.Exception + +-keep class com.google.firebase.crashlytics.** { *; } +-dontwarn com.google.firebase.crashlytics.** + +# Keep enums +-keep public enum fr.openium.consentium.**{ + *; +} + +# Garder les annotations de Kotlin +-keepattributes *Annotation* + +# Garder les classes et les membres annotés avec @Keep +-keep @androidx.annotation.Keep class * { *; } +-keepclassmembers class ** { + @androidx.annotation.Keep *; +} + +# Garder les classes et les membres annotés avec @Serializable +-keep @kotlinx.serialization.Serializable class * { *; } +-keepclassmembers class ** { + @kotlinx.serialization.Serializable *; +} + +# Garder les classes annotées avec @HiltAndroidApp +-keep @dagger.hilt.android.HiltAndroidApp class * { *; } + +# Garder les classes et les membres pour Timber +-keep class timber.log.Timber { *; } +-keep interface timber.log.Timber$Tree { *; } + +-keep class fr.openium.consentium.** { *; } +-keepclassmembers class fr.openium.consentium.** { *; } diff --git a/consentium/src/demo/kotlin/fr/openium/consentium/DemoNetworkModule.kt b/consentium/src/demo/kotlin/fr/openium/consentium/DemoNetworkModule.kt new file mode 100644 index 0000000..267165d --- /dev/null +++ b/consentium/src/demo/kotlin/fr/openium/consentium/DemoNetworkModule.kt @@ -0,0 +1,37 @@ +package fr.openium.consentium + +import android.content.Context +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import fr.openium.consentium.data.di.ConsentiumUrl +import fr.openium.consentium.data.di.NetworkModule +import okhttp3.HttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import timber.log.Timber + +@Module +@InstallIn(SingletonComponent::class) +class DevNetworkModule { + + @Provides + fun provideOkHttpBuilder( + @ApplicationContext context: Context, + ): OkHttpClient.Builder = + NetworkModule.standardOkHttpBuilder(context) + .addNetworkInterceptor(HttpLoggingInterceptor { message -> + Timber.tag("OkHttp") + Timber.v(message) + }.apply { + level = HttpLoggingInterceptor.Level.BODY + }) + + @ConsentiumUrl + @Provides + fun okHttpUrlConsentium(@ApplicationContext context: Context): HttpUrl = + "https://www.exemple.com".toHttpUrl() +} \ No newline at end of file diff --git a/consentium/src/dev/kotlin/fr/openium/consentium/ConsentiumDebugNetworkModule.kt b/consentium/src/dev/kotlin/fr/openium/consentium/DevNetworkModule.kt similarity index 96% rename from consentium/src/dev/kotlin/fr/openium/consentium/ConsentiumDebugNetworkModule.kt rename to consentium/src/dev/kotlin/fr/openium/consentium/DevNetworkModule.kt index e2f1513..adca230 100644 --- a/consentium/src/dev/kotlin/fr/openium/consentium/ConsentiumDebugNetworkModule.kt +++ b/consentium/src/dev/kotlin/fr/openium/consentium/DevNetworkModule.kt @@ -16,7 +16,7 @@ import timber.log.Timber @Module @InstallIn(SingletonComponent::class) -class ConsentiumDebugNetworkModule { +class DevNetworkModule { @Provides fun provideOkHttpBuilder( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bd64599..8cb8b2f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -43,7 +43,7 @@ junitExtVersion = "1.2.1" preferencesDataStore = "1.1.1" # Plugins -agp = "8.7.3" +agp = "8.8.1" kotlin = "2.0.0" ksp = "2.0.0-1.0.24" junitVersion = "1.2.1" @@ -65,7 +65,6 @@ clarityVersion = "1.3.2" # Coil coil = "3.0.4" - # GA4 ga4 = "22.1.2" runtimeAndroid = "1.7.6" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0bc5bee..a37cf89 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 09 14:35:54 CET 2024 +#Mon Feb 17 11:35:23 CET 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists