
- remove constants annotation - Most @Implementation methods in shadow classes are now protected instead of public. Tests should always prefer to call SDK methods directly on Android classes rather than on their shadows
223 lines
7.8 KiB
Groovy
223 lines
7.8 KiB
Groovy
apply plugin: 'com.android.application'
|
|
apply plugin: 'checkstyle'
|
|
apply plugin: 'pmd'
|
|
|
|
/* gets the version name from the latest Git tag */
|
|
def getVersionName = { ->
|
|
def stdout = new ByteArrayOutputStream()
|
|
exec {
|
|
commandLine 'git', 'describe', '--tags', '--always'
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
}
|
|
|
|
def isCi = "true".equals(System.getenv("CI"))
|
|
def preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
|
|
|
|
def fullApplicationId = "org.fdroid.fdroid"
|
|
def basicApplicationId = "org.fdroid.basic"
|
|
// yes, this actually needs both quotes https://stackoverflow.com/a/41391841
|
|
def privilegedExtensionApplicationId = '"org.fdroid.fdroid.privileged"'
|
|
|
|
android {
|
|
compileSdkVersion 28
|
|
|
|
defaultConfig {
|
|
versionCode 1010000
|
|
versionName getVersionName()
|
|
|
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
|
minSdkVersion 14
|
|
targetSdkVersion 25
|
|
/*
|
|
The Android Testing Support Library collects analytics to continuously improve the testing
|
|
experience. More specifically, it uploads a hash of the package name of the application
|
|
under test for each invocation. If you do not wish to upload this data, you can opt-out by
|
|
passing the following argument to the test runner: disableAnalytics "true".
|
|
*/
|
|
testInstrumentationRunnerArguments disableAnalytics: 'true'
|
|
}
|
|
|
|
buildTypes {
|
|
// use proguard on debug too since we have unknowingly broken
|
|
// release builds before.
|
|
all {
|
|
minifyEnabled true
|
|
useProguard true
|
|
shrinkResources true
|
|
buildConfigField "String", "PRIVILEGED_EXTENSION_PACKAGE_NAME", privilegedExtensionApplicationId
|
|
buildConfigField "String", "ACRA_REPORT_EMAIL", '"reports@f-droid.org"' // String needs both quotes
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'src/androidTest/proguard-rules.pro'
|
|
}
|
|
debug {
|
|
applicationIdSuffix ".debug"
|
|
resValue "string", "applicationId", fullApplicationId + applicationIdSuffix
|
|
versionNameSuffix "-debug"
|
|
println 'buildTypes.debug defaultConfig.versionCode ' + defaultConfig.versionCode
|
|
}
|
|
}
|
|
|
|
flavorDimensions "base"
|
|
productFlavors {
|
|
full {
|
|
dimension "base"
|
|
applicationId fullApplicationId
|
|
resValue "string", "applicationId", fullApplicationId
|
|
}
|
|
basic {
|
|
dimension "base"
|
|
applicationId basicApplicationId
|
|
resValue "string", "applicationId", basicApplicationId
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
compileOptions.encoding = "UTF-8"
|
|
}
|
|
|
|
aaptOptions {
|
|
cruncherEnabled = false
|
|
}
|
|
|
|
dexOptions {
|
|
// Improve build server performance by allowing disabling of pre-dexing
|
|
// see http://tools.android.com/tech-docs/new-build-system/tips#TOC-Improving-Build-Server-performance
|
|
// Skip pre-dexing when running on CI or when disabled via -Dpre-dex=false.
|
|
preDexLibraries = preDexEnabled && !isCi
|
|
}
|
|
|
|
testOptions {
|
|
unitTests {
|
|
includeAndroidResources = true
|
|
// prevent tests from dying on android.util.Log calls
|
|
returnDefaultValues = true
|
|
all {
|
|
// All the usual Gradle options.
|
|
testLogging {
|
|
events "skipped", "failed", "standardOut", "standardError"
|
|
showStandardStreams = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
test {
|
|
java.srcDirs += "$projectDir/src/testShared/java"
|
|
}
|
|
|
|
androidTest {
|
|
java.srcDirs += "$projectDir/src/testShared/java"
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
checkReleaseBuilds false
|
|
abortOnError true
|
|
|
|
htmlReport true
|
|
xmlReport false
|
|
textReport false
|
|
|
|
lintConfig file("lint.xml")
|
|
}
|
|
|
|
packagingOptions {
|
|
exclude 'META-INF/LICENSE'
|
|
exclude 'META-INF/LICENSE.txt'
|
|
exclude 'META-INF/NOTICE'
|
|
exclude 'META-INF/NOTICE.txt'
|
|
exclude 'META-INF/INDEX.LIST'
|
|
exclude '.readme'
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
|
implementation 'androidx.gridlayout:gridlayout:1.0.0'
|
|
implementation 'androidx.annotation:annotation:1.1.0'
|
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
|
implementation 'androidx.cardview:cardview:1.0.0'
|
|
implementation 'com.google.android.material:material:1.1.0'
|
|
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
|
|
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
implementation 'androidx.palette:palette:1.0.0'
|
|
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
|
|
|
|
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
|
|
implementation 'com.google.zxing:core:3.3.3'
|
|
implementation 'info.guardianproject.netcipher:netcipher:2.0.0-beta1'
|
|
implementation 'info.guardianproject.panic:panic:1.0'
|
|
implementation 'commons-io:commons-io:2.6'
|
|
implementation 'commons-net:commons-net:3.6'
|
|
implementation 'ch.acra:acra:4.9.1'
|
|
implementation 'io.reactivex:rxjava:1.1.0'
|
|
implementation 'com.hannesdorfmann:adapterdelegates3:3.0.1'
|
|
implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.5'
|
|
|
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.8.11'
|
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.8.11'
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.11'
|
|
|
|
implementation 'org.bouncycastle:bcprov-jdk15on:1.60'
|
|
fullImplementation 'org.bouncycastle:bcpkix-jdk15on:1.60'
|
|
fullImplementation 'cc.mvdan.accesspoint:library:0.2.0'
|
|
fullImplementation 'org.jmdns:jmdns:3.5.5'
|
|
fullImplementation 'org.nanohttpd:nanohttpd:2.3.1'
|
|
|
|
testImplementation 'org.robolectric:robolectric:4.3'
|
|
testImplementation 'androidx.test:monitor:1.1.1'
|
|
testImplementation 'org.bouncycastle:bcprov-jdk15on:1.60'
|
|
testImplementation 'junit:junit:4.13'
|
|
testImplementation 'org.hamcrest:hamcrest:2.2'
|
|
testImplementation 'org.mockito:mockito-core:2.7.22'
|
|
|
|
|
|
androidTestImplementation 'androidx.test:core:1.2.0'
|
|
androidTestImplementation 'androidx.test:runner:1.2.0'
|
|
androidTestImplementation 'androidx.test:rules:1.2.0'
|
|
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
|
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
|
|
androidTestImplementation 'androidx.annotation:annotation:1.1.0'
|
|
}
|
|
|
|
checkstyle {
|
|
toolVersion = '7.2'
|
|
}
|
|
|
|
task checkstyle(type: Checkstyle) {
|
|
configFile file("${project.rootDir}/config/checkstyle/checkstyle.xml")
|
|
source 'src/main/java', 'src/test/java', 'src/androidTest/java'
|
|
include '**/*.java'
|
|
|
|
classpath = files()
|
|
}
|
|
|
|
pmd {
|
|
toolVersion = '6.20.0'
|
|
consoleOutput = true
|
|
}
|
|
|
|
task pmdMain(type: Pmd) {
|
|
dependsOn 'assembleDebug'
|
|
ruleSetFiles = files("${project.rootDir}/config/pmd/rules.xml", "${project.rootDir}/config/pmd/rules-main.xml")
|
|
ruleSets = [] // otherwise defaults clash with the list in rules.xml
|
|
source 'src/main/java'
|
|
include '**/*.java'
|
|
}
|
|
|
|
task pmdTest(type: Pmd) {
|
|
dependsOn 'assembleDebug'
|
|
ruleSetFiles = files("${project.rootDir}/config/pmd/rules.xml", "${project.rootDir}/config/pmd/rules-test.xml")
|
|
ruleSets = [] // otherwise defaults clash with the list in rules.xml
|
|
source 'src/test/java', 'src/androidTest/java'
|
|
include '**/*.java'
|
|
}
|
|
|
|
task pmd(dependsOn: [pmdMain, pmdTest]) {}
|