/* * Copyright 2014 serso aka se.solovyev * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Contact details * * Email: se.solovyev@gmail.com * Site: http://se.solovyev.org */ apply plugin: 'com.android.application' apply plugin: 'signing' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' android { compileSdk versions.sdk.compile defaultConfig { applicationId "org.solovyev.android.calculator" minSdkVersion versions.sdk.min targetSdkVersion versions.sdk.target versionCode 157 versionName '2.2.7' testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildFeatures { dataBinding true viewBinding true } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard.cfg' } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-debug.cfg' // multidex is enabled only in debug builds as in release builds proguard should // strip all unused methods multiDexEnabled true } } namespace 'org.solovyev.android.calculator' lint { abortOnError false disable 'ContentDescription', 'IconLauncherShape' warning 'MissingTranslation' } testOptions { unitTests { includeAndroidResources = true } } } java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:${versions.kotlin}" implementation "androidx.viewpager:viewpager:1.1.0-alpha01" implementation "androidx.preference:preference-ktx:1.2.1" implementation 'com.google.android.material:material:1.9.0' implementation ':measure:' implementation ':square-otto:1.3.9-SNAPSHOT' kapt ':square-otto:1.3.9-SNAPSHOT' kapt ':square-otto-compiler:1.3.9-SNAPSHOT' kapt 'com.squareup:javapoet:1.9.0' implementation project(':plotter:lib') implementation project(':dragbutton') implementation(project(':jscl')) { exclude(module: 'xercesImpl') } implementation 'org.solovyev.android:checkout:1.3.0' implementation platform('com.google.firebase:firebase-bom:32.2.3') implementation "com.google.firebase:firebase-crashlytics" implementation "com.google.firebase:firebase-analytics" implementation 'com.google.android.gms:play-services-ads:22.4.0' implementation 'com.google.guava:guava:32.1.2-android' implementation('org.simpleframework:simple-xml:2.7.1') { exclude(module: 'stax') exclude(module: 'stax-api') exclude(module: 'xpp3') } implementation 'com.google.dagger:dagger:2.0.2' kapt "com.google.dagger:dagger-compiler:2.0.2" implementation 'javax.annotation:javax.annotation-api:1.3.2' kapt "javax.annotation:javax.annotation-api:1.3.2" testImplementation 'junit:junit:4.13.2' testImplementation 'net.sf.opencsv:opencsv:2.0' testImplementation 'org.mockito:mockito-core:5.3.1' testImplementation 'org.robolectric:robolectric:4.10.3' testImplementation 'org.skyscreamer:jsonassert:1.5.0' testImplementation(name: 'org.apache.http.legacy', ext: 'jar') androidTestImplementation 'androidx.annotation:annotation:1.7.0' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test:rules:1.5.0' androidTestImplementation'org.hamcrest:hamcrest-library:1.3' androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { // use version of jsr305 provided by Checkout exclude group: 'com.google.code.findbugs', module: 'jsr305' })} tasks.withType(Test) { scanForTestClasses = false include "**/*Test.class" exclude "**/*BaseCalculatorTest*" exclude "**/*AndroidCalculatorEditorViewTest*" exclude "**/*CalculatorWizardActivityTest*" exclude "**/*OnScreenCalculatorWizardStepTest*" exclude "**/*CalculatorWizardTest*" exclude "**/*WizardStepTest*" exclude "**/*AngleUnitsButtonTest*" exclude "**/*NumeralBasesButtonTest*" } /* task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.bootClasspath.join(File.pathSeparator)) configurations.compile.each { File file -> classpath += project.files(file.path) } } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = 'javadoc' from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.srcDirs } artifacts { archives androidSourcesJar archives file: file('build/outputs/apk/release/app-release.apk'), name: 'calculatorpp-app', classifier: 'signed', type: 'apk' archives file: file('build/outputs/mapping/release/mapping.txt'), name: 'calculatorpp-app', classifier: 'proguard', type: 'txt' } signing { sign configurations.archives } group = "org.solovyev.android" version = android.defaultConfig.versionName uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) // for some reason Gradle :uploadArchives tries to upload null.txt.asc and null.map artifacts. // As we don't want those let's filter them now (note that these files are not included in the // list of project artifacts, so their origin is not clear) def removeCond = { artifact -> return !artifact.classifier && (artifact.type == "map" || artifact.type == "txt.asc") } deployment.artifacts.removeAll(removeCond) deployment.attachedArtifacts.removeAll(removeCond) } repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { authentication(userName: ossrhUsername, password: ossrhPassword) } snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { authentication(userName: ossrhUsername, password: ossrhPassword) } pom.project { artifactId = 'calculatorpp-app' name 'Calculator++ Application' packaging 'apk' description 'Calculator for Android' url 'https://github.com/serso/android-calculatorpp' scm { url 'https://github.com/serso/android-calculatorpp' connection 'scm:https://serso@github.com/serso/android-calculatorpp.git' developerConnection 'scm:git://github.com/serso/android-calculatorpp.git' } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } developers { developer { id 'se.solovyev' name 'Sergey Solovyev' email 'se.solovyev@gmail.com' } } } } } } */