plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id("org.jetbrains.kotlin.plugin.compose") // id 'com.google.gms.google-services' } def taskName = getGradle().getStartParameter().getTaskRequests().toString() android { compileSdk 36 namespace = "com.dev.pdf.info" defaultConfig { namespace = "com.dev.pdf.info" minSdk = 24 targetSdk = 36 versionCode = 1 versionName = "0.1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled = true ndk { abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86' // 只包含需要的架构 } } sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] } } configurations { configureEach { exclude module: 'httpclient' exclude module: 'commons-logging' } } lint { abortOnError = true ignoreWarnings = true checkReleaseBuilds = taskName.contains("Pro") } testOptions { unitTests { includeAndroidResources = true returnDefaultValues = true } } signingConfigs { release { storeFile file("keystore.pkcs12") storePassword "123456" keyAlias "1" keyPassword "1" } } buildTypes { release { minifyEnabled = true signingConfig = signingConfigs.release debuggable = false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { debuggable = true } } buildFeatures { compose true } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } //compileOptions { //coreLibraryDesugaringEnabled true //sourceCompatibility JavaVersion.VERSION_1_8 //targetCompatibility JavaVersion.VERSION_1_8 //} splits { abi { enable = true reset() include "x86", "armeabi-v7a", "arm64-v8a" universalApk = true } } // flavorDimensions.add("version") def abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1, 'x86': 2, 'x86_64': 3] // applicationVariants.all { variant -> // // variant.outputs.all { output -> // // def flavor = variant.productFlavors[0].name.capitalize() // def abiName = getFilter("ABI") ///* if (abiName == "armeabi-v7a") { // variant.mergedFlavor.manifestPlaceholders.appSafeMode = "true" // //variant.resValue "string", "[appSafeMode]", "true" // println abiName + " : appSafeMode true " // } else { // variant.mergedFlavor.manifestPlaceholders.appSafeMode = "true" // //variant.resValue "string", "[appSafeMode]", "false" // println abiName + " : appSafeMode false" // } //*/ // if (abiName != null) { // def code = abiCodes.get(abiName, 0) + variant.versionCode // abiName = abiName.replace("arm64-v8a", "arm64").replace("armeabi-v7a", "arm") // // output.versionCodeOverride = code // //def fullName = "Librera ${flavor}-${versionNumber}-c${code}-d${db}-${abiName}.apk" // // def fullName = "Librera ${flavor}-${versionNumber}-${abiName}.apk" // // output.outputFileName = fullName // } else { // //def fullName = "Librera ${flavor}-${versionNumber}-c${codeNumber}-d${db}-universal.apk" // //def fullName = "Librera ${flavor}-${versionNumber}-universal.apk" // def fullName = "Librera ${flavor}-${versionNumber}-uni.apk" // output.versionCodeOverride = codeNumber // output.outputFileName = fullName // } // } // } // sourceSets { // fdroid { assets.srcDirs = ['src/fdroid/assets', 'src/fdroid/assets/'] } // } packagingOptions { resources { excludes.addAll( 'META-INF/DEPENDENCIES', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', ) } } kotlinOptions { jvmTarget = '11' } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') // proImplementation project(':libPro') // fdroidImplementation project(':libPro') implementation project(':libReflow') //compose implementation project(':appLibDrive') // curl implementation("io.github.oleksandrbalan:pagecurl:1.5.1") /** AndroidX **/ implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'androidx.work:work-runtime:2.10.2' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.7.1' /** Third-party **/ //implementation 'com.github.axet:lame:1.0.9' implementation 'org.greenrobot:eventbus:3.3.1' implementation('org.greenrobot:greendao:3.3.0') { exclude group: 'org.greenrobot.greendao.rx' } implementation 'org.greenrobot:greendao-api:3.3.0' implementation 'org.jsoup:jsoup:1.21.1' implementation 'com.github.albfernandez:juniversalchardet:2.5.0' implementation 'com.squareup.okhttp3:okhttp:3.12.6' implementation 'io.github.rburgst:okhttp-digest:1.21' implementation 'com.squareup.okio:okio-parent:1.17.6' implementation 'com.github.joniles:rtfparserkit:1.16.0' implementation 'org.zwobble.mammoth:mammoth:1.5.0' implementation 'javax.xml.stream:stax-api:1.0-2' implementation 'net.lingala.zip4j:zip4j:2.11.5' implementation 'com.github.bumptech.glide:glide:4.16.0' implementation("com.github.bumptech.glide:compose:1.0.0-beta01") implementation 'androidx.core:core-ktx:1.16.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.9.2' implementation 'androidx.activity:activity-compose:1.10.1' implementation platform('androidx.compose:compose-bom:2024.09.00') implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.ui:ui-graphics' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.compose.material3:material3' implementation 'com.google.android.material:material:1.10.0' implementation 'androidx.activity:activity:1.10.1' implementation 'androidx.constraintlayout:constraintlayout:2.2.1' androidTestImplementation platform('androidx.compose:compose-bom:2024.09.00') androidTestImplementation 'androidx.compose.ui:ui-test-junit4' annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' //implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' //conflict with worker implementation "commons-logging:commons-logging-api:1.1" implementation "com.github.junrar:junrar:4.0.0" implementation 'androidx.work:work-runtime:2.10.2' implementation 'com.google.guava:guava:33.4.8-android' //implementation "it.unimi.dsi:fastutil-core:8.5.12" //implementation "androidx.car.app:app:1.4.0-rc01" //implementation("androidx.media3:media3-ui:1.1.1") //implementation('androidx.media3:media3-session:1.3.0') //implementation "org.nanohttpd:nanohttpd:2.3.1" /** Testing **/ testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.6.2' debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation 'androidx.compose.ui:ui-test-manifest' //androidTestImplementation 'androidx.test:core:1.5.2' //androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' } task copyApks() { if (project.hasProperty('beta') || project.hasProperty("release")) { println "My Task: [copy apks]" //delete fileTree("/home/dev/Dropbox/FREE_PDF_APK/testing").include("*.apk") //delete fileTree("/home/dev/Nextcloud/LibreraBeta").include("*.apk") delete fileTree("/Users/ivanivanenko/Library/CloudStorage/Dropbox/FREE_PDF_APK/testing").include("*.apk") delete fileTree("/Users/ivanivanenko/Library/CloudStorage/Dropbox/FREE_PDF_APK/$versionNumber").include("*.apk") //delete fileTree("/home/dev/Dropbox/FREE_PDF_APK/testing/$versionNumber").include("*.apk") android.applicationVariants.all { variant -> if ("release" == variant.buildType.name) { def flavor = variant.productFlavors[0].name //println "==== " + variant.buildType.name + " " + flavor def list = [] if (project.hasProperty("beta")) { //list.add("/home/dev/Nextcloud/LibreraBeta") list.add("/Users/ivanivanenko/Library/CloudStorage/Dropbox/FREE_PDF_APK/testing") //list.add("/home/dev/Dropbox/FREE_PDF_APK/testing") } if (project.hasProperty("release")) { //list.add("/home/dev/Dropbox/FREE_PDF_APK/testing/$versionNumber") list.add("/Users/ivanivanenko/Library/CloudStorage/Dropbox/FREE_PDF_APK/testing/$versionNumber") } list.each { dest -> copy { from file( "build/outputs/apk/${flavor}/release/" ) include "*.apk" into file(dest) println "Copy: '" + flavor + "' to " + dest eachFile { project.file(dest).mkdirs() if (!file(dest).exists()) { it.exclude() } } } } } } //File file = new File('/home/data/Dropbox/FREE_PDF_APK/testing/version.txt') //file.write versionNumber } } task incVersion() { doLast { Properties props = new Properties() File progejectDir = layout.projectDirectory.getAsFile() println "progejectDir :" + progejectDir File propsFile = new File(progejectDir, 'gradle.properties') props.load(propsFile.newDataInputStream()) int appCodeNumber = Integer.parseInt(props.getProperty('appCodeNumber')) appCodeNumber += 4 int appVersionNumberIndex = Integer.parseInt(props.getProperty('appVersionNumberIndex')) appVersionNumberIndex += 1 props.setProperty('appCodeNumber', "" + appCodeNumber) props.setProperty('appVersionNumberIndex', "" + appVersionNumberIndex) props.store(propsFile.newWriter(), null) println "My Task: [incVersion]" } } //if (!taskName.contains("Fdroid")) { // dependencies { // implementation "com.github.junrar:junrar:4.0.0" // // } //}