mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
If an Android module depends on another module's default configuration, Android Studio's linter won't recognise references to classes in the other module. Instead, the Android module must depend on the other module without specifying a configuration. This entails some changes in the handling of transitive dependencies, and the other module must include its main classes in its testOutput artifact so the Android module's tests can use them.
118 lines
3.0 KiB
Groovy
118 lines
3.0 KiB
Groovy
apply plugin: 'com.android.library'
|
|
apply plugin: 'witness'
|
|
apply from: 'witness.gradle'
|
|
|
|
android {
|
|
compileSdkVersion 33
|
|
buildToolsVersion '33.0.0'
|
|
|
|
packagingOptions {
|
|
doNotStrip '**/*.so'
|
|
}
|
|
|
|
defaultConfig {
|
|
minSdkVersion 16
|
|
targetSdkVersion 31
|
|
versionCode 10417
|
|
versionName "1.4.17"
|
|
consumerProguardFiles 'proguard-rules.txt'
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
testInstrumentationRunnerArguments disableAnalytics: 'true'
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
lintOptions {
|
|
// FIXME
|
|
warning "LintError"
|
|
warning "InvalidPackage"
|
|
warning "MissingPermission"
|
|
warning "InlinedApi", "ObsoleteSdkInt", "Override", "NewApi", "UnusedAttribute"
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
tor
|
|
}
|
|
|
|
dependencies {
|
|
// To satisfy Android Studio's linter, an Android module that depends on another module must
|
|
// not specify which configuration of the other module it depends on. Therefore we don't
|
|
// inherit implementation dependencies of the other module and must declare any such
|
|
// dependencies we want to use.
|
|
implementation project(':bramble-api')
|
|
implementation project(':bramble-core')
|
|
|
|
implementation 'androidx.annotation:annotation:1.5.0'
|
|
implementation "org.briarproject:jtorctl:$jtorctl_version"
|
|
implementation "com.google.dagger:dagger:$dagger_version"
|
|
|
|
tor "org.briarproject:tor-android:$tor_version"
|
|
tor "org.briarproject:obfs4proxy-android:$obfs4proxy_version"
|
|
tor "org.briarproject:snowflake-android:$snowflake_version"
|
|
|
|
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
|
|
|
|
compileOnly 'javax.annotation:jsr250-api:1.0'
|
|
|
|
testImplementation project(path: ':bramble-api', configuration: 'testOutput')
|
|
|
|
testImplementation "junit:junit:$junit_version"
|
|
testImplementation "org.jmock:jmock:$jmock_version"
|
|
testImplementation "org.jmock:jmock-junit4:$jmock_version"
|
|
testImplementation "org.jmock:jmock-imposters:$jmock_version"
|
|
}
|
|
|
|
def torLibsDir = 'src/main/jniLibs'
|
|
|
|
task cleanTorBinaries {
|
|
outputs.dir torLibsDir
|
|
doLast {
|
|
delete fileTree(torLibsDir) { include '**/*.so' }
|
|
}
|
|
}
|
|
|
|
clean.dependsOn cleanTorBinaries
|
|
|
|
task unpackTorBinaries {
|
|
outputs.dir torLibsDir
|
|
doLast {
|
|
configurations.tor.each { outer ->
|
|
zipTree(outer).each { inner ->
|
|
if (inner.name.endsWith('_arm_pie.zip')) {
|
|
copy {
|
|
from zipTree(inner)
|
|
into torLibsDir
|
|
rename '(.*)', 'armeabi-v7a/lib$1.so'
|
|
}
|
|
} else if (inner.name.endsWith('_arm64_pie.zip')) {
|
|
copy {
|
|
from zipTree(inner)
|
|
into torLibsDir
|
|
rename '(.*)', 'arm64-v8a/lib$1.so'
|
|
}
|
|
} else if (inner.name.endsWith('_x86_pie.zip')) {
|
|
copy {
|
|
from zipTree(inner)
|
|
into torLibsDir
|
|
rename '(.*)', 'x86/lib$1.so'
|
|
}
|
|
} else if (inner.name.endsWith('_x86_64_pie.zip')) {
|
|
copy {
|
|
from zipTree(inner)
|
|
into torLibsDir
|
|
rename '(.*)', 'x86_64/lib$1.so'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
dependsOn cleanTorBinaries
|
|
}
|
|
|
|
preBuild.dependsOn unpackTorBinaries
|