apply plugin: 'com.android.application' 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')}") } android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "net.schueller.peertube" minSdkVersion 21 targetSdkVersion 29 versionCode Integer.valueOf(System.getenv("VERSION_CODE") ?: 1) versionName System.getenv("VERSION_NAME") + "-" + System.getenv("VERSION_SHA") 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 } } def room_version = "2.2.6" def lifecycleVersion = '2.2.0' def exoplayer = '2.12.3' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // Layouts and design implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" implementation 'de.hdodenhof:circleimageview:3.0.0' // font awesome implementation "com.mikepenz:iconics-core:3.1.0" implementation 'com.mikepenz:fontawesome-typeface:5.3.1.1@aar' // http client / REST implementation 'com.squareup.okhttp3:okhttp:4.9.0' 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 implementation 'org.ocpsoft.prettytime:prettytime:4.0.4.Final' // Version comparison implementation 'org.apache.maven:maven-artifact:3.5.0' // database lib implementation "androidx.room:room-runtime:$room_version" implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' annotationProcessor "androidx.room:room-compiler:$room_version" androidTestImplementation "androidx.room:room-testing:$room_version" // Lifecycle components implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion" annotationProcessor "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion" implementation 'androidx.preference:preference:1.1.1' // testing testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }