
NetCipher provides the interface for starting Tor on demand. It also provides the mechanism to upgrade the TLS settings to the best possible, based on what each device is capable of.
230 lines
8.1 KiB
Groovy
230 lines
8.1 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" == System.getenv("CI")
|
|
def preDexEnabled = "true" == 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 29
|
|
|
|
defaultConfig {
|
|
versionCode 1013000
|
|
versionName getVersionName()
|
|
|
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
|
minSdkVersion 22
|
|
//noinspection ExpiredTargetSdkVersion
|
|
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'
|
|
vectorDrawables.useSupportLibrary = true
|
|
}
|
|
|
|
buildTypes {
|
|
// use proguard on debug too since we have unknowingly broken
|
|
// release builds before.
|
|
all {
|
|
minifyEnabled 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"
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_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
|
|
}
|
|
systemProperty 'robolectric.dependency.repo.url', 'https://repo1.maven.org/maven2'
|
|
|
|
// hack to avoid memory leak crashes
|
|
forkEvery = 1
|
|
}
|
|
}
|
|
}
|
|
|
|
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.appcompat:appcompat:1.2.0'
|
|
implementation 'androidx.preference:preference:1.1.1'
|
|
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 'androidx.vectordrawable:vectordrawable:1.1.0'
|
|
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
implementation 'androidx.palette:palette:1.0.0'
|
|
implementation 'androidx.work:work-runtime:2.4.0'
|
|
|
|
implementation 'com.google.android.material:material:1.3.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.2.0-alpha'
|
|
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.fasterxml.jackson.core:jackson-core:2.11.1'
|
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.11.1'
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.1'
|
|
|
|
implementation 'org.bouncycastle:bcprov-jdk15on:1.65'
|
|
fullImplementation 'org.bouncycastle:bcpkix-jdk15on:1.65'
|
|
fullImplementation 'cc.mvdan.accesspoint:library:0.2.0'
|
|
fullImplementation 'org.jmdns:jmdns:3.5.5'
|
|
fullImplementation 'org.nanohttpd:nanohttpd:2.3.1'
|
|
|
|
testImplementation 'androidx.test:core:1.3.0'
|
|
testImplementation 'junit:junit:4.13.1'
|
|
testImplementation 'org.robolectric:robolectric:4.3'
|
|
testImplementation 'org.mockito:mockito-core:3.3.3'
|
|
testImplementation 'org.hamcrest:hamcrest:2.2'
|
|
testImplementation 'org.bouncycastle:bcprov-jdk15on:1.65'
|
|
|
|
androidTestImplementation 'androidx.arch.core:core-testing:2.1.0'
|
|
androidTestImplementation 'androidx.test:core:1.3.0'
|
|
androidTestImplementation 'androidx.test:runner:1.3.0'
|
|
androidTestImplementation 'androidx.test:rules:1.3.0'
|
|
androidTestImplementation 'androidx.test:monitor:1.3.0'
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
|
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
|
|
androidTestImplementation 'androidx.work:work-testing:2.4.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]) {}
|