mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-27 04:43:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			270 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			270 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| plugins {
 | |
|     id 'com.github.triplet.play' version '2.2.1' apply false
 | |
| }
 | |
| apply from: '../gitutils.gradle'
 | |
| apply plugin: 'com.android.application'
 | |
| apply plugin: 'kotlin-android'
 | |
| apply plugin: 'kotlin-kapt'
 | |
| apply plugin: 'jacoco-android'
 | |
| apply from: 'quality.gradle'
 | |
| 
 | |
| def isRunningOnTravisAndIsNotPRBuild = System.getenv("CI") == "true" && file('../play.p12').exists()
 | |
| 
 | |
| if(isRunningOnTravisAndIsNotPRBuild) {
 | |
|     apply plugin: 'com.github.triplet.play'
 | |
| }
 | |
| 
 | |
| dependencies {
 | |
| 
 | |
|     // Utils
 | |
|     implementation 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07'
 | |
|     implementation 'in.yuvi:http.fluent:1.3'
 | |
|     implementation 'com.google.code.gson:gson:2.8.5'
 | |
|     implementation 'com.squareup.okhttp3:okhttp:4.2.0'
 | |
|     implementation 'com.squareup.okio:okio:2.2.2'
 | |
|     implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
 | |
|     implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
 | |
|     implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
 | |
|     implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.1.1'
 | |
|     implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.1.1'
 | |
|     implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.1.1'
 | |
|     implementation 'com.facebook.fresco:fresco:1.13.0'
 | |
|     implementation 'org.apache.commons:commons-lang3:3.8.1'
 | |
|     implementation 'com.github.maskaravivek:wikimedia-android-data-client:v0.0.28'
 | |
| 
 | |
|     // UI
 | |
|     implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
 | |
|     implementation 'com.github.chrisbanes:PhotoView:2.0.0'
 | |
|     implementation 'com.github.pedrovgs:renderers:3.3.3'
 | |
|     implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization:0.6.0'
 | |
|     implementation 'com.github.deano2390:MaterialShowcaseView:1.2.0'
 | |
|     implementation 'com.dinuscxj:circleprogressbar:1.1.1'
 | |
|     implementation 'com.karumi:dexter:5.0.0'
 | |
|     implementation "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
 | |
|     kapt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
 | |
| 
 | |
|     // Logging
 | |
|     implementation 'ch.acra:acra-dialog:5.3.0'
 | |
|     implementation 'ch.acra:acra-mail:5.3.0'
 | |
|     implementation 'org.slf4j:slf4j-api:1.7.25'
 | |
|     api('com.github.tony19:logback-android-classic:1.1.1-6') {
 | |
|         exclude group: 'com.google.android', module: 'android'
 | |
|     }
 | |
|     implementation "com.squareup.okhttp3:logging-interceptor:4.2.0"
 | |
| 
 | |
|     // Dependency injector
 | |
|     implementation "com.google.dagger:dagger-android-support:$DAGGER_VERSION"
 | |
|     kapt "com.google.dagger:dagger-android-processor:$DAGGER_VERSION"
 | |
|     kapt "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
 | |
| 
 | |
|     // Unit testing
 | |
|     testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
 | |
|     testImplementation "org.jetbrains.kotlin:kotlin-reflect:$KOTLIN_VERSION"
 | |
|     testImplementation 'junit:junit:4.12'
 | |
|     testImplementation 'org.robolectric:robolectric:4.3'
 | |
|     testImplementation 'androidx.test:core:1.2.0'
 | |
|     testImplementation 'com.nhaarman:mockito-kotlin:1.5.0'
 | |
|     testImplementation 'com.squareup.okhttp3:mockwebserver:3.12.1'
 | |
|     testImplementation "org.powermock:powermock-module-junit4:2.0.0-beta.5"
 | |
|     testImplementation "org.powermock:powermock-api-mockito2:2.0.0-beta.5"
 | |
| 
 | |
|     // Android testing
 | |
|     androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
 | |
|     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
 | |
|     androidTestImplementation 'androidx.test.espresso:espresso-intents:3.2.0'
 | |
|     androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0'
 | |
|     androidTestImplementation 'androidx.test:runner:1.2.0'
 | |
|     androidTestImplementation 'androidx.test:rules:1.2.0'
 | |
|     androidTestImplementation 'androidx.annotation:annotation:1.1.0'
 | |
|     androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.12.1'
 | |
|     androidTestImplementation 'org.mockito:mockito-core:2.13.0'
 | |
|     androidTestUtil 'androidx.test:orchestrator:1.2.0'
 | |
| 
 | |
|     // Debugging
 | |
|     debugImplementation "com.squareup.leakcanary:leakcanary-android:$LEAK_CANARY_VERSION"
 | |
|     releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$LEAK_CANARY_VERSION"
 | |
|     testImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$LEAK_CANARY_VERSION"
 | |
| 
 | |
|     // Support libraries
 | |
|     implementation "com.google.android.material:material:1.1.0-alpha04"
 | |
|     implementation "androidx.browser:browser:1.0.0"
 | |
|     implementation "androidx.cardview:cardview:1.0.0"
 | |
|     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
 | |
|     implementation "androidx.exifinterface:exifinterface:1.0.0"
 | |
|     //metadata extractor
 | |
|     implementation 'com.drewnoakes:metadata-extractor:2.11.0'
 | |
| }
 | |
| 
 | |
| android {
 | |
|     compileSdkVersion 28
 | |
|     buildToolsVersion "28.0.3"
 | |
| 
 | |
|     defaultConfig {
 | |
|         applicationId 'fr.free.nrw.commons'
 | |
|         versionCode 475
 | |
|         versionName '2.11.0'
 | |
|         setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
 | |
| 
 | |
|         minSdkVersion 19
 | |
|         targetSdkVersion 28
 | |
|         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | |
|         testInstrumentationRunnerArguments clearPackageData: 'true'
 | |
| 
 | |
|         testOptions {
 | |
|             execution 'ANDROIDX_TEST_ORCHESTRATOR'
 | |
|         }
 | |
| 
 | |
|         vectorDrawables.useSupportLibrary = true
 | |
|     }
 | |
| 
 | |
|     packagingOptions {
 | |
|         exclude 'META-INF/androidx.*'
 | |
|         exclude 'META-INF/proguard/androidx-annotations.pro'
 | |
|     }
 | |
| 
 | |
|     testOptions {
 | |
|         unitTests.returnDefaultValues = true
 | |
|         unitTests.includeAndroidResources = true
 | |
| 
 | |
|         unitTests.all {
 | |
|             jvmArgs '-noverify'
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     sourceSets {
 | |
|         // use kotlin only in tests (for now)
 | |
|         test.java.srcDirs += 'src/test/kotlin'
 | |
| 
 | |
|         // use main assets and resources in test
 | |
|         test.assets.srcDirs += 'src/main/assets'
 | |
|         test.resources.srcDirs += 'src/main/resoures'
 | |
|     }
 | |
| 
 | |
| 	signingConfigs {
 | |
|         release
 | |
|     }
 | |
| 
 | |
|     buildTypes {
 | |
|         release {
 | |
|             minifyEnabled true
 | |
|             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
 | |
|             testProguardFile 'test-proguard-rules.txt'
 | |
|             if(isRunningOnTravisAndIsNotPRBuild) {
 | |
|                 signingConfig signingConfigs.release
 | |
|             }
 | |
|         }
 | |
|         debug {
 | |
|             minifyEnabled true
 | |
|             testCoverageEnabled project.hasProperty('coverage')
 | |
|             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
 | |
|             testProguardFile 'test-proguard-rules.txt'
 | |
|             versionNameSuffix "-debug-" + getBranchName()
 | |
|         }
 | |
|     }
 | |
| 	
 | |
|     if (isRunningOnTravisAndIsNotPRBuild) {
 | |
|         // configure keystore based on env vars in Travis for automated alpha builds
 | |
|         signingConfigs.release.storeFile = file("../nr-commons.keystore")
 | |
|         signingConfigs.release.storePassword = System.getenv("keystore_password")
 | |
|         signingConfigs.release.keyAlias = System.getenv("key_alias")
 | |
|         signingConfigs.release.keyPassword = System.getenv("key_password")
 | |
|     }
 | |
| 
 | |
|     configurations.all {
 | |
|         resolutionStrategy.force 'androidx.annotation:annotation:1.0.2'
 | |
|     }
 | |
| 
 | |
|     flavorDimensions 'tier'
 | |
|     productFlavors {
 | |
|         prod {
 | |
| 
 | |
| 			applicationId 'fr.free.nrw.commons'
 | |
| 
 | |
|             buildConfigField "String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\""
 | |
|             buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.org/w/api.php\""
 | |
|             buildConfigField "String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\""
 | |
|             buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
 | |
|             buildConfigField "String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json\""
 | |
|             buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\""
 | |
|             buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\""
 | |
|             buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.org\""
 | |
|             buildConfigField "String", "WIKIDATA_URL", "\"https://wikidata.org\""
 | |
|             buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\""
 | |
|             buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
 | |
|             buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\""
 | |
|             buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\""
 | |
|             buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\""
 | |
|             buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons\""
 | |
|             buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.contributions.contentprovider\""
 | |
|             buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.modifications.contentprovider\""
 | |
|             buildConfigField "String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.categories.contentprovider\""
 | |
|             buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.explore.recentsearches.contentprovider\""
 | |
|             buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.contentprovider\""
 | |
|             buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.locations.contentprovider\""
 | |
|             buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
 | |
|             buildConfigField "String", "TEST_USERNAME", "\"" + System.getenv("test_user_name") + "\""
 | |
|             buildConfigField "String", "TEST_PASSWORD", "\"" + System.getenv("test_user_password") + "\""
 | |
| 
 | |
|             dimension 'tier'
 | |
|         }
 | |
| 
 | |
|         beta {
 | |
|             applicationId 'fr.free.nrw.commons.beta'
 | |
| 
 | |
|             // What values do we need to hit the BETA versions of the site / api ?
 | |
|             buildConfigField "String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\""
 | |
|             buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.beta.wmflabs.org/w/api.php\""
 | |
|             buildConfigField "String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\""
 | |
|             buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
 | |
|             buildConfigField "String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns_beta_active.json\""
 | |
|             buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\""
 | |
|             buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\""
 | |
|             buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\""
 | |
|             buildConfigField "String", "WIKIDATA_URL", "\"https://wikidata.org\""
 | |
|             buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\""
 | |
|             buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
 | |
|             buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\""
 | |
|             buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\""
 | |
|             buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\""
 | |
|             buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons.beta\""
 | |
|             buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.beta.contributions.contentprovider\""
 | |
|             buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.beta.modifications.contentprovider\""
 | |
|             buildConfigField "String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.beta.categories.contentprovider\""
 | |
|             buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.beta.explore.recentsearches.contentprovider\""
 | |
|             buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.contentprovider\""
 | |
|             buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.locations.contentprovider\""
 | |
|             buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
 | |
|             buildConfigField "String", "TEST_USERNAME", "\"" + System.getenv("test_user_name") + "\""
 | |
|             buildConfigField "String", "TEST_PASSWORD", "\"" + System.getenv("test_user_password") + "\""
 | |
| 
 | |
|             dimension 'tier'
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     lintOptions {
 | |
|         disable 'MissingTranslation'
 | |
|         disable 'ExtraTranslation'
 | |
|         abortOnError false
 | |
|     }
 | |
| 
 | |
|     compileOptions {
 | |
|         sourceCompatibility JavaVersion.VERSION_1_8
 | |
|         targetCompatibility JavaVersion.VERSION_1_8
 | |
|     }
 | |
| 
 | |
|     buildToolsVersion buildToolsVersion
 | |
| }
 | |
| 
 | |
| if(isRunningOnTravisAndIsNotPRBuild) {
 | |
|     play {
 | |
|         track = "alpha"
 | |
|         userFraction = 1
 | |
|         serviceAccountEmail = System.getenv("SERVICE_ACCOUNT_NAME")
 | |
|         serviceAccountCredentials = file("../play.p12")
 | |
| 
 | |
|         resolutionStrategy = "auto"
 | |
|         outputProcessor { // this: ApkVariantOutput
 | |
|             versionNameOverride = "$versionNameOverride.$versionCode"
 | |
|         }
 | |
|     }
 | |
| }
 | 
