176 lines
6.4 KiB
Groovy
176 lines
6.4 KiB
Groovy
plugins {
|
|
id 'com.android.application'
|
|
id 'kotlin-android'
|
|
id 'kotlin-parcelize'
|
|
id 'kotlin-kapt'
|
|
}
|
|
|
|
ext.readProperty = { paramName -> readPropertyWithDefault(paramName, null) }
|
|
ext.readPropertyWithDefault = { paramName, defaultValue ->
|
|
if (project.hasProperty(paramName)) {
|
|
return project.getProperties().get(paramName)
|
|
} else {
|
|
Properties properties = new Properties()
|
|
if (project.rootProject.file('local.properties').exists()) {
|
|
properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
|
}
|
|
if (properties.getProperty(paramName) != null) {
|
|
return properties.getProperty(paramName)
|
|
} else {
|
|
return defaultValue
|
|
}
|
|
}
|
|
}
|
|
|
|
// Try reading secrets from file
|
|
def secretsPropertiesFile = rootProject.file("secrets.properties")
|
|
def secretProperties = new Properties()
|
|
|
|
if (secretsPropertiesFile.exists()) {
|
|
secretProperties.load(new FileInputStream(secretsPropertiesFile))
|
|
}
|
|
// Otherwise read from environment variables, this happens in CI
|
|
else {
|
|
secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
|
|
secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
|
|
secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
|
|
}
|
|
|
|
apply plugin: 'kotlin-kapt'
|
|
|
|
android {
|
|
compileSdkVersion 32
|
|
buildToolsVersion "30.0.2"
|
|
|
|
defaultConfig {
|
|
applicationId "net.schueller.peertube"
|
|
minSdkVersion 21
|
|
targetSdkVersion 32
|
|
versionCode 1079
|
|
versionName "1.12.1"
|
|
buildConfigField "long", "BUILD_TIME", readPropertyWithDefault('buildTimestamp', System.currentTimeMillis()) + 'L'
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
javaCompileOptions {
|
|
annotationProcessorOptions {
|
|
arguments = [
|
|
"room.schemaLocation" : "$projectDir/schemas".toString(),
|
|
"room.incremental" : "true",
|
|
"room.expandProjection": "true"]
|
|
}
|
|
}
|
|
}
|
|
signingConfigs {
|
|
release {
|
|
// You need to specify either an absolute path or include the
|
|
// keystore file in the same directory as the build.gradle file.
|
|
storeFile file("../android-signing-keystore.jks")
|
|
storePassword "${secretProperties['signing_keystore_password']}"
|
|
keyAlias "${secretProperties['signing_key_alias']}"
|
|
keyPassword "${secretProperties['signing_key_password']}"
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
testCoverageEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
signingConfig signingConfigs.release
|
|
}
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
applicationVariants.all { variant ->
|
|
variant.resValue "string", "versionName", variant.versionName
|
|
}
|
|
|
|
buildFeatures{
|
|
viewBinding true
|
|
}
|
|
|
|
}
|
|
|
|
def room_version = "2.4.0"
|
|
def lifecycleVersion = '2.4.0'
|
|
def exoplayer = '2.16.1'
|
|
def fragment_version = "1.4.0"
|
|
|
|
dependencies {
|
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
|
|
|
// Layouts and design
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
|
|
implementation 'androidx.appcompat:appcompat:1.4.0'
|
|
implementation 'com.google.android.material:material:1.4.0'
|
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
|
|
implementation "androidx.fragment:fragment-ktx:$fragment_version"
|
|
|
|
implementation 'de.hdodenhof:circleimageview:3.1.0'
|
|
|
|
// font awesome
|
|
implementation 'com.mikepenz:iconics-core:5.2.4'
|
|
implementation 'com.mikepenz:fontawesome-typeface:5.9.0.2-kotlin@aar'
|
|
|
|
// http client / REST
|
|
implementation 'com.squareup.okhttp3:okhttp:4.9.2'
|
|
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
|
|
|
// image downloading and caching library
|
|
implementation 'com.squareup.picasso:picasso:2.71828'
|
|
|
|
// json decoder/encoder
|
|
implementation 'com.google.code.gson:gson:2.8.6'
|
|
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
|
|
|
// Torrents and WebRTC
|
|
implementation 'com.github.TorrentStream:TorrentStream-Android:2.7.0'
|
|
// implementation "com.github.TorrentStream:TorrentStreamServer-Android:1.0.1"
|
|
// implementation 'org.webrtc:google-webrtc:1.0.+'
|
|
|
|
// video player repo:jcenter()
|
|
implementation "com.google.android.exoplayer:exoplayer-core:$exoplayer"
|
|
implementation "com.google.android.exoplayer:exoplayer-dash:$exoplayer"
|
|
implementation "com.google.android.exoplayer:exoplayer-ui:$exoplayer"
|
|
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayer"
|
|
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:$exoplayer"
|
|
implementation "com.google.android.exoplayer:extension-mediasession:$exoplayer"
|
|
implementation "com.google.android.exoplayer:extension-okhttp:$exoplayer"
|
|
|
|
// date formatter, do not update past 4.0.4 https://github.com/sschueller/peertube-android/issues/262
|
|
implementation 'org.ocpsoft.prettytime:prettytime:4.0.4.Final'
|
|
|
|
// Version comparison
|
|
implementation 'org.apache.maven:maven-artifact:3.6.3'
|
|
|
|
// database lib
|
|
implementation "androidx.room:room-runtime:$room_version"
|
|
implementation "androidx.room:room-ktx:$room_version"
|
|
kapt "androidx.room:room-compiler:$room_version"
|
|
|
|
// Lifecycle components
|
|
kapt "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
|
|
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
|
|
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion"
|
|
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion"
|
|
|
|
implementation 'androidx.preference:preference-ktx:1.1.1'
|
|
|
|
// testing
|
|
testImplementation 'junit:junit:4.13.1'
|
|
androidTestImplementation 'androidx.test:runner:1.4.0'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
|
androidTestImplementation "androidx.room:room-testing:$room_version"
|
|
}
|
|
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
}
|
|
}
|