afeebcc4d1
So that in case the user had ntfy already installed, we don't override it. Indeed, the Ntfy icon (which is actually a BlissLauncher3 cache) would appear after the OTA and the user would not be able to remove it without cleaning BlissLauncher3 cache.
138 lines
4.5 KiB
Groovy
138 lines
4.5 KiB
Groovy
repositories {
|
|
mavenCentral()
|
|
}
|
|
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-kapt'
|
|
apply plugin: 'com.google.gms.google-services'
|
|
|
|
android {
|
|
compileSdkVersion 33
|
|
|
|
defaultConfig {
|
|
applicationId "foundation.e.ntfy"
|
|
minSdkVersion 23
|
|
targetSdkVersion 33
|
|
|
|
versionCode 33
|
|
versionName "1.17.0"
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
/* Required for Room schema migrations */
|
|
javaCompileOptions {
|
|
annotationProcessorOptions {
|
|
arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
|
|
}
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding = true
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled true
|
|
debuggable false
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
}
|
|
debug {
|
|
minifyEnabled false
|
|
debuggable true
|
|
}
|
|
}
|
|
|
|
flavorDimensions "store"
|
|
productFlavors {
|
|
play {
|
|
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true'
|
|
buildConfigField 'boolean', 'RATE_APP_AVAILABLE', 'true'
|
|
buildConfigField 'boolean', 'INSTALL_PACKAGES_AVAILABLE', 'false'
|
|
}
|
|
fdroid {
|
|
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'false'
|
|
buildConfigField 'boolean', 'RATE_APP_AVAILABLE', 'false'
|
|
buildConfigField 'boolean', 'INSTALL_PACKAGES_AVAILABLE', 'true'
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
|
freeCompilerArgs += [
|
|
'-Xjvm-default=all-compatibility' // https://stackoverflow.com/a/71234042/1440785
|
|
]
|
|
}
|
|
namespace "io.heckel.ntfy"
|
|
}
|
|
|
|
// Disables GoogleServices tasks for F-Droid variant
|
|
android.applicationVariants.all { variant ->
|
|
def shouldProcessGoogleServices = variant.flavorName == "play"
|
|
def googleTask = tasks.findByName("process${variant.name.capitalize()}GoogleServices")
|
|
googleTask.enabled = shouldProcessGoogleServices
|
|
}
|
|
|
|
// Strips out REQUEST_INSTALL_PACKAGES permission for Google Play variant
|
|
android.applicationVariants.all { variant ->
|
|
def shouldStripInstallPermission = variant.flavorName == "play"
|
|
if (shouldStripInstallPermission) {
|
|
variant.outputs.each { output ->
|
|
def processManifest = output.getProcessManifestProvider().get()
|
|
processManifest.doLast { task ->
|
|
def outputDir = task.getMultiApkManifestOutputDirectory().get().asFile
|
|
def manifestOutFile = file("$outputDir/AndroidManifest.xml")
|
|
def newFileContents = manifestOutFile.collect { s -> s.contains("android.permission.REQUEST_INSTALL_PACKAGES") ? "" : s }.join("\n")
|
|
manifestOutFile.write(newFileContents, 'UTF-8')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// AndroidX, The Basics
|
|
implementation "androidx.appcompat:appcompat:1.6.1"
|
|
implementation "androidx.core:core-ktx:1.10.1"
|
|
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
|
|
implementation "androidx.activity:activity-ktx:1.7.1"
|
|
implementation "androidx.fragment:fragment-ktx:1.5.7"
|
|
implementation "androidx.work:work-runtime-ktx:2.8.1"
|
|
implementation 'androidx.preference:preference-ktx:1.2.0'
|
|
|
|
// JSON serialization
|
|
implementation 'com.google.code.gson:gson:2.10'
|
|
|
|
// Room (SQLite)
|
|
def room_version = "2.5.1"
|
|
implementation "androidx.room:room-ktx:$room_version"
|
|
kapt "androidx.room:room-compiler:$room_version"
|
|
|
|
// OkHttp (HTTP library)
|
|
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
|
|
|
|
// Firebase, sigh ... (only Google Play)
|
|
playImplementation 'com.google.firebase:firebase-messaging:23.1.2'
|
|
|
|
// RecyclerView
|
|
implementation "androidx.recyclerview:recyclerview:1.3.0"
|
|
|
|
// Swipe down to refresh
|
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
|
|
|
// Material design
|
|
implementation "com.google.android.material:material:1.9.0"
|
|
|
|
// LiveData
|
|
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1"
|
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
|
|
|
// Image viewer
|
|
implementation 'com.github.stfalcon-studio:StfalconImageViewer:v1.0.1'
|
|
|
|
implementation 'foundation.e:elib:0.0.1-alpha11'
|
|
}
|