From 8302e7a9393d888a6c64321803937296259f31c2 Mon Sep 17 00:00:00 2001 From: Ilya Eremin Date: Fri, 21 Dec 2018 10:38:59 +0300 Subject: [PATCH 1/4] this is small move for me, but huge step for Android Department --- .circleci/config.yml | 4 +- app/build.gradle | 159 ------------------ app/build.gradle.kts | 130 ++++++++++++++ .../android/mainscreen/MainFragment.kt | 6 +- build.gradle | 25 --- build.gradle.kts | 25 +++ deps.gradle | 53 ------ deps.gradle.kts | 53 ++++++ gradle/wrapper/gradle-wrapper.properties | 4 +- settings.gradle | 1 - settings.gradle.kts | 1 + 11 files changed, 215 insertions(+), 246 deletions(-) delete mode 100644 app/build.gradle create mode 100644 app/build.gradle.kts delete mode 100644 build.gradle create mode 100644 build.gradle.kts delete mode 100644 deps.gradle create mode 100644 deps.gradle.kts delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/.circleci/config.yml b/.circleci/config.yml index 880e5df..b1c2f3c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,7 +13,7 @@ jobs: steps: - checkout - restore_cache: - key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }} + key: jars-{{ checksum "build.gradle.kts" }}-{{ checksum "app/build.gradle.kts" }} - run: name: Android SDK @@ -29,7 +29,7 @@ jobs: - save_cache: paths: - ~/.gradle - key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }} + key: jars-{{ checksum "build.gradle.kts" }}-{{ checksum "app/build.gradle.kts" }} - run: name: Checkstyle diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 4787cec..0000000 --- a/app/build.gradle +++ /dev/null @@ -1,159 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' -apply from: 'checkstyle/checkstyle.gradle' -apply from: './jacoco.gradle' - -apply from: '../deps.gradle' - -ext { - isCI = "true".equals(System.getenv("CI")) -// STORE_PASSWORD = System.getenv("PROJECT_NAME_STORE_PASSWORD") -// KEY_ALIAS = System.getenv("PROJECT_NAME_KEY_ALIAS") -// KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") -} - -detekt { - toolVersion = "1.0.0-RC11" - input = files("src/main/java") - filters = ".*/resources/.*,.*/build/.*" -} - -android { - compileSdkVersion versions.TARGET_SDK_VERSION - buildToolsVersion versions.BUILD_TOOLS_VERSION - - defaultConfig { - minSdkVersion versions.MIN_SDK_VERSION - targetSdkVersion versions.TARGET_SDK_VERSION - - applicationId 'com.flatstack.android' - versionCode 1 - versionName '0.9.1' - testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' - com.android.ddmlib.DdmPreferences.setTimeOut(60000) - javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true - } - - flavorDimensions "environment" - - productFlavors { - staging { - buildConfigField "String", "API_URL", "\"https://example-staging.com\"" - applicationIdSuffix ".staging" - dimension "environment" - } - - production { - buildConfigField "String", "API_URL", "\"https://example.com\"" - dimension "environment" - } - } - - signingConfigs { - debug { - storeFile file("$rootDir/debug.jks") - storePassword "12345678" - keyAlias "debug" - keyPassword "12345678" - } -// release { -// storeFile file("$rootDir/project_name.jks") -// storePassword STORE_PASSWORD -// keyAlias KEY_ALIAS -// keyPassword KEY_PASSWORD -// } - } - - buildTypes { - debug { - if (isCI) { - testCoverageEnabled true - } - } - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - testOptions { - if (isCI) { - unitTests.all { - jacoco { - includeNoLocationClasses = true - } - } - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - dexOptions { - preDexLibraries = !isCI - } - - packagingOptions { - exclude 'META-INF/LICENSE' - exclude 'META-INF/NOTICE' - exclude 'META-INF/services/javax.annotation.processing.Processor' - } - - lintOptions { - textReport true - textOutput "stdout" - lintConfig file("$projectDir/lint.xml") - warningsAsErrors true - } - - configurations.all { - resolutionStrategy.force "com.android.support:support-annotations:$versions.support" - } -} - -repositories { - mavenCentral() -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin" - implementation supportLibs - implementation rxJavaLibs - // implementation retrofitLibs - // implementation okHttpLibs - - compileOnly 'org.jetbrains:annotations:13.0' - implementation 'com.google.code.gson:gson:2.4' - implementation 'com.github.bumptech.glide:glide:3.7.0' - - implementation "com.jakewharton:butterknife:$versions.butterKnife" - kapt "com.jakewharton:butterknife-compiler:$versions.butterKnife" - - testImplementation unitTestLibs - androidTestImplementation androidTestsLibs -} - -// Grant animation permissions to avoid test failure because of ui sync. -task grantAnimationPermissions(type: Exec, dependsOn: ['installStagingDebug', 'installProductionDebug']) { - group = 'test' - description = 'Grant permissions for testing.' - - def absolutePath = file('..') // Get project absolute path - commandLine "$absolutePath/app/set_animation_permissions.sh com.flatstack.android".split(" ") -} - -// Source: http://stackoverflow.com/q/29908110/112705 -afterEvaluate { - // When launching individual tests from Android Studio, it seems that only the assemble tasks - // get called directly, not the install* versions - tasks.each { task -> - if (task.name.endsWith('AndroidTest')) { - task.dependsOn grantAnimationPermissions - } - } -} - -apply from: "quality.gradle" \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..7b00f76 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,130 @@ +plugins { + id("com.android.application") + kotlin("android") + kotlin("android.extensions") +} + +apply(from = "checkstyle/checkstyle.gradle") +apply(from = "./jacoco.gradle") + +//ext { +// isCI = "true".equals(System.getenv("CI")) +//// STORE_PASSWORD = System.getenv("PROJECT_NAME_STORE_PASSWORD") +//// KEY_ALIAS = System.getenv("PROJECT_NAME_KEY_ALIAS") +//// KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") +//} +// +//detekt { +// toolVersion = "1.0.0-RC11" +// input = files("src/main/java") +// filters = ".*/resources/.*,.*/build/.*" +//} + +android { + compileSdkVersion(28) + buildToolsVersion("28.0.3") + + defaultConfig { + minSdkVersion(14) + targetSdkVersion(28) + + applicationId = "com.flatstack.android" + versionCode = 1 + versionName = "0.9.1" + testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner" + javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true + } + + flavorDimensions("environment") + + signingConfigs { + getByName("debug") { + storeFile = file("$rootDir/debug.jks") + storePassword = "12345678" + keyAlias = "debug" + keyPassword = "12345678" + } +// release { +// storeFile file("$rootDir/project_name.jks") +// storePassword STORE_PASSWORD +// keyAlias KEY_ALIAS +// keyPassword KEY_PASSWORD +// } + } + + buildTypes { + getByName("debug") { + // if (isCI) { +// testCoverageEnabled = true +// } + } + getByName("release") { + isMinifyEnabled = true + } + } + +// testOptions { +// if (isCI) { +// unitTests.all { +// jacoco { +// includeNoLocationClasses = true +// } +// } +// } +// } + + compileOptions { + setSourceCompatibility(JavaVersion.VERSION_1_8) + setTargetCompatibility(JavaVersion.VERSION_1_8) + } + + dexOptions { + preDexLibraries = true + } + + packagingOptions { + exclude("META-INF/LICENSE") + exclude("META-INF/NOTICE") + exclude("META-INF/services/javax.annotation.processing.Processor") + } + + lintOptions { + textReport = true + textOutput("stdout") + setLintConfig(file("$projectDir/lint.xml")) + setWarningsAsErrors(true) + } + +// configurations.all { +// resolutionStrategy.force = "com.android.support:support-annotations:28.0.0" +// } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.10") + implementation("com.android.support:appcompat-v7:28.0.0") + implementation("com.android.support:recyclerview-v7:28.0.0") + implementation("com.android.support:design:28.0.0") + implementation("io.reactivex:rxjava:1.1.6") + implementation("io.reactivex:rxandroid:1.2.1") + + // implementation retrofitLibs + // implementation okHttpLibs + + compileOnly("org.jetbrains:annotations:13.0") + implementation("com.google.code.gson:gson:2.4") + implementation("com.github.bumptech.glide:glide:3.7.0") + + implementation("com.jakewharton:butterknife:9.0.0-rc2") + kapt("com.jakewharton:butterknife-compiler:9.0.0-rc2") + +// testImplementation(unitTestLibs) +// androidTestImplementation(androidTestsLibs) +} + + +apply(from = "quality.gradle") diff --git a/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt b/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt index 4c3bb5d..b23d525 100644 --- a/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt +++ b/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt @@ -16,12 +16,10 @@ class MainFragment : BaseFragment() { override val layoutRes: Int get() = R.layout.fragment_main - @BindView(R.id.ivImage) internal lateinit var uiImage: ImageView - @BindView(R.id.btnButton) internal lateinit var uiButton: Button - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val uiImage = view.findViewById(R.id.ivImage) uiImage.setOnClickListener { fragmentManager?.let { TestDialog.show("Example Hello", "Ublyudok, mat' tvoyu, a nu idi syuda, govno" + @@ -30,7 +28,7 @@ class MainFragment : BaseFragment() { } } - uiButton.setOnClickListener { + view.findViewById(R.id.btnButton).setOnClickListener { startActivity(Intent(activity, SecondActivity::class.java)) } diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 31ccfae..0000000 --- a/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -buildscript { - apply from: './deps.gradle' - repositories { - google() - maven { url "https://plugins.gradle.org/m2/" } - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' - classpath 'com.google.guava:guava:17.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin" - } -} - -plugins { - id("io.gitlab.arturbosch.detekt").version("1.0.0-RC11") -} - -allprojects { - repositories { - jcenter() - google() - } -} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..6c509bf --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,25 @@ +buildscript { + apply(from = "./deps.gradle.kts") + repositories { + google() + maven(url = "https://plugins.gradle.org/m2/") + jcenter() + } + + dependencies { + classpath("com.android.tools.build:gradle:3.4.0-alpha09") + classpath("com.google.guava:guava:17.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.10") + } +} + +plugins { + id("io.gitlab.arturbosch.detekt").version("1.0.0-RC11") +} + +allprojects { + repositories { + jcenter() + google() + } +} \ No newline at end of file diff --git a/deps.gradle b/deps.gradle deleted file mode 100644 index acc1ddf..0000000 --- a/deps.gradle +++ /dev/null @@ -1,53 +0,0 @@ -ext { - versions = [ - BUILD_TOOLS_VERSION: '28.0.3', - MIN_SDK_VERSION : 14, - TARGET_SDK_VERSION : 28, - kotlin : '1.2.71', - okHttp : '3.3.1', - support : '28.0.0', - retrofit : '2.0.2', - butterKnife : '9.0.0-rc2', - espressoVersion : '2.2.2' - ] - supportDeps = [ - appcompatV7 : "com.android.support:appcompat-v7:$versions.support", - recyclerView: "com.android.support:recyclerview-v7:$versions.support", - design : "com.android.support:design:$versions.support" -// gridLayout : "com.android.support:gridlayout-v7:$versions.support" -// cardView : "com.android.support:cardview-v7:$versions.support" -// palette : "com.android.support:palette-v7:$versions.support" - ] - rxJava = [ - rxJava : 'io.reactivex:rxjava:1.1.6', - rxAndroid: 'io.reactivex:rxandroid:1.2.1' - ] - retrofit = [ - retrofit : "com.squareup.retrofit2:retrofit:$versions.retrofit", - rxAdapter : "com.squareup.retrofit2:adapter-rxjava:$versions.retrofit", - gsonConverter: "com.squareup.retrofit2:converter-gson:$versions.retrofit" - ] - okHttp = [ - logger: "com.squareup.okhttp3:logging-interceptor:$versions.okHttp", - self : "com.squareup.okhttp3:okhttp:$versions.okHttp" - ] - unitTests = [ - supportAnnotation: "com.android.support:support-annotations:$versions.support", - junit : 'junit:junit:4.12', - assertj : 'com.squareup.assertj:assertj-android:1.0.0' - ] - androidTests = [ - espressoCore : "com.android.support.test.espresso:espresso-core:$versions.espressoVersion", - espressoContrib: "com.android.support.test.espresso:espresso-contrib:$versions.espressoVersion", - espressoIntents: "com.android.support.test.espresso:espresso-intents:$versions.espressoVersion", - testRunner : "com.android.support.test:runner:0.5", - testRules : "com.android.support.test:rules:0.5" - ] - - supportLibs = supportDeps.values() - retrofitLibs = retrofit.values() - okHttpLibs = okHttp.values() - rxJavaLibs = rxJava.values() - unitTestLibs = unitTests.values() - androidTestsLibs = androidTests.values() + supportLibs -} \ No newline at end of file diff --git a/deps.gradle.kts b/deps.gradle.kts new file mode 100644 index 0000000..e1409ef --- /dev/null +++ b/deps.gradle.kts @@ -0,0 +1,53 @@ +//ext { +// versions = [ +// BUILD_TOOLS_VERSION: '28.0.3', +// MIN_SDK_VERSION : 14, +// TARGET_SDK_VERSION : 28, +// kotlin : '1.3.10', +// okHttp : '3.3.1', +// support : '28.0.0', +// retrofit : '2.0.2', +// butterKnife : '9.0.0-rc2', +// espressoVersion : '2.2.2' +// ] +// supportDeps = [ +// appcompatV7 : "com.android.support:appcompat-v7:$versions.support", +// recyclerView: "com.android.support:recyclerview-v7:$versions.support", +// design : "com.android.support:design:$versions.support" +//// gridLayout : "com.android.support:gridlayout-v7:$versions.support" +//// cardView : "com.android.support:cardview-v7:$versions.support" +//// palette : "com.android.support:palette-v7:$versions.support" +// ] +// rxJava = [ +// rxJava : 'io.reactivex:rxjava:1.1.6', +// rxAndroid: 'io.reactivex:rxandroid:1.2.1' +// ] +// retrofit = [ +// retrofit : "com.squareup.retrofit2:retrofit:$versions.retrofit", +// rxAdapter : "com.squareup.retrofit2:adapter-rxjava:$versions.retrofit", +// gsonConverter: "com.squareup.retrofit2:converter-gson:$versions.retrofit" +// ] +// okHttp = [ +// logger: "com.squareup.okhttp3:logging-interceptor:$versions.okHttp", +// self : "com.squareup.okhttp3:okhttp:$versions.okHttp" +// ] +// unitTests = [ +// supportAnnotation: "com.android.support:support-annotations:$versions.support", +// junit : 'junit:junit:4.12', +// assertj : 'com.squareup.assertj:assertj-android:1.0.0' +// ] +// androidTests = [ +// espressoCore : "com.android.support.test.espresso:espresso-core:$versions.espressoVersion", +// espressoContrib: "com.android.support.test.espresso:espresso-contrib:$versions.espressoVersion", +// espressoIntents: "com.android.support.test.espresso:espresso-intents:$versions.espressoVersion", +// testRunner : "com.android.support.test:runner:0.5", +// testRules : "com.android.support.test:rules:0.5" +// ] +// +// supportLibs = supportDeps.values() +// retrofitLibs = retrofit.values() +// okHttpLibs = okHttp.values() +// rxJavaLibs = rxJava.values() +// unitTestLibs = unitTests.values() +// androidTestsLibs = androidTests.values() + supportLibs +//} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7b48bad..85f8e9b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Nov 25 14:17:23 MSK 2018 +#Fri Dec 21 09:44:32 MSK 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-milestone-1-all.zip diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index e7b4def..0000000 --- a/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':app' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..15a801b --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1 @@ +include(":app") From 7e8d91a803864067f3e78b70eccddbbc13a2b4a3 Mon Sep 17 00:00:00 2001 From: Ilya Eremin Date: Fri, 21 Dec 2018 12:02:48 +0300 Subject: [PATCH 2/4] added back more sections --- app/build.gradle.kts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7b00f76..cd1de53 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,5 @@ +import io.gitlab.arturbosch.detekt.detekt + plugins { id("com.android.application") kotlin("android") @@ -14,11 +16,11 @@ apply(from = "./jacoco.gradle") //// KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") //} // -//detekt { -// toolVersion = "1.0.0-RC11" -// input = files("src/main/java") -// filters = ".*/resources/.*,.*/build/.*" -//} +detekt { + toolVersion = "1.0.0-RC11" + input = files("src/main/java") + filters = ".*/resources/.*,.*/build/.*" +} android { compileSdkVersion(28) @@ -52,6 +54,19 @@ android { // } } + productFlavors { + create("staging") { + buildConfigField("String", "API_URL", "\"https://example-staging.com\"") + applicationIdSuffix = ".staging" + setDimension("environment") + } + + create("production") { + buildConfigField("String", "API_URL", "\"https://example.com\"") + setDimension("environment") + } + } + buildTypes { getByName("debug") { // if (isCI) { @@ -74,7 +89,7 @@ android { // } compileOptions { - setSourceCompatibility(JavaVersion.VERSION_1_8) + sourceCompatibility = JavaVersion.VERSION_1_8 setTargetCompatibility(JavaVersion.VERSION_1_8) } From ad22293d6d9e5659d3034880dca4bfd8cd4a87b3 Mon Sep 17 00:00:00 2001 From: Ilya Eremin Date: Tue, 25 Dec 2018 13:42:53 +0300 Subject: [PATCH 3/4] finished with DSL migration --- app/build.gradle.kts | 61 ++++++++++------------------ build.gradle.kts | 6 +-- buildSrc/build.gradle.kts | 9 ++++ buildSrc/settings.gradle.kts | 0 buildSrc/src/main/kotlin/Versions.kt | 29 +++++++++++++ 5 files changed, 60 insertions(+), 45 deletions(-) create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/settings.gradle.kts create mode 100644 buildSrc/src/main/kotlin/Versions.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cd1de53..ca4a172 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,8 @@ -import io.gitlab.arturbosch.detekt.detekt +import io.gitlab.arturbosch.detekt.extensions.DetektExtension plugins { id("com.android.application") + id("io.gitlab.arturbosch.detekt").version("1.0.0-RC12") kotlin("android") kotlin("android.extensions") } @@ -9,26 +10,23 @@ plugins { apply(from = "checkstyle/checkstyle.gradle") apply(from = "./jacoco.gradle") -//ext { -// isCI = "true".equals(System.getenv("CI")) -//// STORE_PASSWORD = System.getenv("PROJECT_NAME_STORE_PASSWORD") -//// KEY_ALIAS = System.getenv("PROJECT_NAME_KEY_ALIAS") -//// KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") -//} -// +// STORE_PASSWORD = System.getenv("PROJECT_NAME_STORE_PASSWORD") +// KEY_ALIAS = System.getenv("PROJECT_NAME_KEY_ALIAS") +// KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") + detekt { - toolVersion = "1.0.0-RC11" + toolVersion = "1.0.0-RC12" input = files("src/main/java") filters = ".*/resources/.*,.*/build/.*" } android { - compileSdkVersion(28) - buildToolsVersion("28.0.3") + compileSdkVersion(Versions.TARGET_SDK_VERSION) + buildToolsVersion(Versions.BUILD_TOOLS_VERSION) defaultConfig { - minSdkVersion(14) - targetSdkVersion(28) + minSdkVersion(Versions.MIN_SDK_VERSION) + targetSdkVersion(Versions.TARGET_SDK_VERSION) applicationId = "com.flatstack.android" versionCode = 1 @@ -69,25 +67,12 @@ android { buildTypes { getByName("debug") { - // if (isCI) { -// testCoverageEnabled = true -// } } getByName("release") { isMinifyEnabled = true } } -// testOptions { -// if (isCI) { -// unitTests.all { -// jacoco { -// includeNoLocationClasses = true -// } -// } -// } -// } - compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 setTargetCompatibility(JavaVersion.VERSION_1_8) @@ -110,9 +95,9 @@ android { setWarningsAsErrors(true) } -// configurations.all { -// resolutionStrategy.force = "com.android.support:support-annotations:28.0.0" -// } + configurations.all { + resolutionStrategy.force(Libs.SUPPORT_ANNOTATIONS) + } } repositories { @@ -121,24 +106,20 @@ repositories { dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.10") - implementation("com.android.support:appcompat-v7:28.0.0") - implementation("com.android.support:recyclerview-v7:28.0.0") - implementation("com.android.support:design:28.0.0") - implementation("io.reactivex:rxjava:1.1.6") - implementation("io.reactivex:rxandroid:1.2.1") - - // implementation retrofitLibs - // implementation okHttpLibs + implementation(Libs.APPCOMPATV7) + implementation(Libs.RECYCLER_VIEW) + implementation(Libs.RX_JAVA) + implementation(Libs.RX_ANDROID) - compileOnly("org.jetbrains:annotations:13.0") implementation("com.google.code.gson:gson:2.4") implementation("com.github.bumptech.glide:glide:3.7.0") implementation("com.jakewharton:butterknife:9.0.0-rc2") kapt("com.jakewharton:butterknife-compiler:9.0.0-rc2") -// testImplementation(unitTestLibs) -// androidTestImplementation(androidTestsLibs) + testImplementation(Libs.JUNIT) + testImplementation(Libs.ASSERTJ) + testImplementation(Libs.SUPPORT_ANNOTATIONS) } diff --git a/build.gradle.kts b/build.gradle.kts index 6c509bf..0ce1074 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,13 +13,9 @@ buildscript { } } -plugins { - id("io.gitlab.arturbosch.detekt").version("1.0.0-RC11") -} - allprojects { repositories { jcenter() google() } -} \ No newline at end of file +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..a3ad992 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,9 @@ +import org.gradle.kotlin.dsl.`kotlin-dsl` + +plugins { + `kotlin-dsl` +} + +repositories { + jcenter() +} diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt new file mode 100644 index 0000000..1882acc --- /dev/null +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -0,0 +1,29 @@ +object Versions { + val TARGET_SDK_VERSION = 28 + val BUILD_TOOLS_VERSION = "28.0.3" + val MIN_SDK_VERSION = 14 + val kotlin = "1.3.10" + val OKHTTP = "3.3.1" + val SUPPORT = "28.0.0" + val RETROFIT = "2.0.2" + val butterKnife = "9.0.0-rc2" + val espressoVersion = "2.2.2" +} + +object Libs { + val SUPPORT_ANNOTATIONS = "com.android.support:support-annotations:${Versions.SUPPORT}" + val APPCOMPATV7 = "com.android.support:appcompat-v7:${Versions.SUPPORT}" + val RECYCLER_VIEW = "com.android.support:recyclerview-v7:${Versions.SUPPORT}" + val RX_JAVA = "io.reactivex:rxjava:1.1.6" + val RX_ANDROID = "io.reactivex:rxandroid:1.2.1" + + val RETROFIT = "com.squareup.retrofit2:retrofit:${Versions.RETROFIT}" + val RETROFIT_RX_ADAPTER = "com.squareup.retrofit2:adapter-rxjava:${Versions.RETROFIT}" + val RETROFIT_GSON_CONVERTER = "com.squareup.retrofit2:converter-gson:${Versions.RETROFIT}" + + val OKHTTP = "com.squareup.okhttp3:okhttp:${Versions.OKHTTP}" + val OKHTTP_LOGGING_INSPECTOR = "com.squareup.okhttp3:logging-interceptor:${Versions.OKHTTP}" + + val JUNIT = "junit:junit:4.12" + val ASSERTJ = "com.squareup.assertj:assertj-android:1.0.0" +} From b4565cb034071d7908c83a83cac7a3395932461b Mon Sep 17 00:00:00 2001 From: Ilya Eremin Date: Tue, 25 Dec 2018 17:12:23 +0300 Subject: [PATCH 4/4] return back proguard --- app/build.gradle.kts | 23 ++++++++-------- .../android/mainscreen/MainFragment.kt | 2 -- .../android/mainscreen/TestDialog.kt | 27 ++++++++----------- .../android/utils/ui/BaseActivity.kt | 7 ----- .../android/utils/ui/BaseDialogFragment.kt | 18 +------------ .../android/utils/ui/BaseFragment.kt | 17 +----------- app/src/main/res/layout/activity_second.xml | 15 ++++++++--- app/src/main/res/values/strings.xml | 1 + build.gradle.kts | 3 +-- buildSrc/src/main/kotlin/Versions.kt | 5 ++-- 10 files changed, 40 insertions(+), 78 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ca4a172..48cba1f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,7 +2,7 @@ import io.gitlab.arturbosch.detekt.extensions.DetektExtension plugins { id("com.android.application") - id("io.gitlab.arturbosch.detekt").version("1.0.0-RC12") + id("io.gitlab.arturbosch.detekt").version(Versions.DETEKT) kotlin("android") kotlin("android.extensions") } @@ -10,12 +10,12 @@ plugins { apply(from = "checkstyle/checkstyle.gradle") apply(from = "./jacoco.gradle") -// STORE_PASSWORD = System.getenv("PROJECT_NAME_STORE_PASSWORD") -// KEY_ALIAS = System.getenv("PROJECT_NAME_KEY_ALIAS") -// KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") +// val STORE_PASSWORD = System.getenv("PROJECT_NAME_STORE_PASSWORD") +// val KEY_ALIAS = System.getenv("PROJECT_NAME_KEY_ALIAS") +// val KEY_PASSWORD = System.getenv("PROJECT_NAME_KEY_PASSWORD") detekt { - toolVersion = "1.0.0-RC12" + toolVersion = Versions.DETEKT input = files("src/main/java") filters = ".*/resources/.*,.*/build/.*" } @@ -44,12 +44,12 @@ android { keyAlias = "debug" keyPassword = "12345678" } -// release { + create("release") { // storeFile file("$rootDir/project_name.jks") // storePassword STORE_PASSWORD // keyAlias KEY_ALIAS // keyPassword KEY_PASSWORD -// } + } } productFlavors { @@ -70,6 +70,10 @@ android { } getByName("release") { isMinifyEnabled = true + isShrinkResources = true + isUseProguard = true +// signingConfig = signingConfigs.getByName("release") + proguardFiles(getDefaultProguardFile ("proguard-android.txt"), "proguard-rules.pro") } } @@ -105,7 +109,7 @@ repositories { } dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.10") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.KOTLIN}") implementation(Libs.APPCOMPATV7) implementation(Libs.RECYCLER_VIEW) implementation(Libs.RX_JAVA) @@ -114,9 +118,6 @@ dependencies { implementation("com.google.code.gson:gson:2.4") implementation("com.github.bumptech.glide:glide:3.7.0") - implementation("com.jakewharton:butterknife:9.0.0-rc2") - kapt("com.jakewharton:butterknife-compiler:9.0.0-rc2") - testImplementation(Libs.JUNIT) testImplementation(Libs.ASSERTJ) testImplementation(Libs.SUPPORT_ANNOTATIONS) diff --git a/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt b/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt index b23d525..77d8ee7 100644 --- a/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt +++ b/app/src/main/java/com/flatstack/android/mainscreen/MainFragment.kt @@ -3,9 +3,7 @@ package com.flatstack.android.mainscreen import android.content.Intent import android.os.Bundle import android.view.View -import android.widget.Button import android.widget.ImageView -import butterknife.BindView import com.bumptech.glide.Glide import com.flatstack.android.R diff --git a/app/src/main/java/com/flatstack/android/mainscreen/TestDialog.kt b/app/src/main/java/com/flatstack/android/mainscreen/TestDialog.kt index 97077bc..a6584fe 100644 --- a/app/src/main/java/com/flatstack/android/mainscreen/TestDialog.kt +++ b/app/src/main/java/com/flatstack/android/mainscreen/TestDialog.kt @@ -4,15 +4,11 @@ import android.os.Bundle import android.support.v4.app.FragmentManager import android.view.View import android.widget.TextView -import butterknife.BindView import com.flatstack.android.R import com.flatstack.android.utils.ui.BaseDialogFragment class TestDialog : BaseDialogFragment() { - @BindView(R.id.dialog_title) internal lateinit var uiTitle: TextView - @BindView(R.id.dialog_message) internal lateinit var uiMessage: TextView - private var title: String? = null private var message: String? = null @@ -28,8 +24,8 @@ class TestDialog : BaseDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - uiTitle.text = title - uiMessage.text = message + view.findViewById(R.id.dialog_title).text = title + view.findViewById(R.id.dialog_message).text = message } companion object { @@ -38,17 +34,16 @@ class TestDialog : BaseDialogFragment() { private const val KEY_MESSAGE = "dialogMessage" fun show( - title: String?, - message: String?, - fm: FragmentManager + title: String?, + message: String?, + fm: FragmentManager ) { - - val dialog = TestDialog() - - val args = Bundle() - args.putString(KEY_TITLE, title ?: "") - args.putString(KEY_MESSAGE, message ?: "") - dialog.arguments = args + val dialog = TestDialog().apply { + arguments = Bundle().apply { + putString(KEY_TITLE, title ?: "") + putString(KEY_MESSAGE, message ?: "") + } + } dialog.show(fm, TestDialog::class.java.name) } diff --git a/app/src/main/java/com/flatstack/android/utils/ui/BaseActivity.kt b/app/src/main/java/com/flatstack/android/utils/ui/BaseActivity.kt index ad500d7..44679d1 100644 --- a/app/src/main/java/com/flatstack/android/utils/ui/BaseActivity.kt +++ b/app/src/main/java/com/flatstack/android/utils/ui/BaseActivity.kt @@ -5,7 +5,6 @@ import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.Menu import android.view.MenuItem -import butterknife.ButterKnife import com.flatstack.android.R import com.flatstack.android.utils.Keyboard @@ -16,7 +15,6 @@ abstract class BaseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(screenConfig.layoutRes) - ButterKnife.bind(this) intent?.extras?.let { parseArguments(it) } findViewById(R.id.toolbar)?.let { setSupportActionBar(it) @@ -30,11 +28,6 @@ abstract class BaseActivity : AppCompatActivity() { } } - override fun setContentView(layoutResID: Int) { - super.setContentView(layoutResID) - ButterKnife.bind(this) - } - fun parseArguments(extras: Bundle) {} override fun onCreateOptionsMenu(menu: Menu): Boolean { diff --git a/app/src/main/java/com/flatstack/android/utils/ui/BaseDialogFragment.kt b/app/src/main/java/com/flatstack/android/utils/ui/BaseDialogFragment.kt index bbb9493..356f361 100644 --- a/app/src/main/java/com/flatstack/android/utils/ui/BaseDialogFragment.kt +++ b/app/src/main/java/com/flatstack/android/utils/ui/BaseDialogFragment.kt @@ -5,17 +5,10 @@ import android.os.Bundle import android.support.v4.app.DialogFragment import android.support.v4.app.FragmentActivity import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import android.view.Window -import butterknife.ButterKnife -import butterknife.Unbinder - abstract class BaseDialogFragment : DialogFragment() { - - private var butterKnifeUnbinder: Unbinder? = null - internal abstract val layoutRes: Int override fun onCreate(savedInstanceState: Bundle?) { @@ -40,16 +33,7 @@ abstract class BaseDialogFragment : DialogFragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - val v = inflater.inflate(layoutRes, container, false) - butterKnifeUnbinder = ButterKnife.bind(this, v) - return v - } - - override fun onDestroyView() { - butterKnifeUnbinder?.unbind() - super.onDestroyView() - } + ) = inflater.inflate(layoutRes, container, false) companion object { protected fun show( diff --git a/app/src/main/java/com/flatstack/android/utils/ui/BaseFragment.kt b/app/src/main/java/com/flatstack/android/utils/ui/BaseFragment.kt index 1dfe8c9..add7f7b 100644 --- a/app/src/main/java/com/flatstack/android/utils/ui/BaseFragment.kt +++ b/app/src/main/java/com/flatstack/android/utils/ui/BaseFragment.kt @@ -7,13 +7,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import butterknife.ButterKnife -import butterknife.Unbinder - abstract class BaseFragment : Fragment() { - - private var butterKnifeUnbinder: Unbinder? = null - @get:LayoutRes abstract val layoutRes: Int override fun onCreate(savedState: Bundle?) { @@ -27,14 +21,5 @@ abstract class BaseFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - val rootView = inflater.inflate(layoutRes, container, false) - butterKnifeUnbinder = ButterKnife.bind(this, rootView) - return rootView - } - - override fun onDestroyView() { - butterKnifeUnbinder?.unbind() - super.onDestroyView() - } + ): View? = inflater.inflate(layoutRes, container, false) } diff --git a/app/src/main/res/layout/activity_second.xml b/app/src/main/res/layout/activity_second.xml index d480040..2fd9754 100644 --- a/app/src/main/res/layout/activity_second.xml +++ b/app/src/main/res/layout/activity_second.xml @@ -1,8 +1,15 @@ - + tools:context="com.flatstack.android.SecondActivity"> + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b39f9be..f3ca8a3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ Android Base + Second Activity diff --git a/build.gradle.kts b/build.gradle.kts index 0ce1074..62d0a18 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,8 +8,7 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle:3.4.0-alpha09") - classpath("com.google.guava:guava:17.0") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.10") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.KOTLIN}") } } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 1882acc..975739e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -2,12 +2,11 @@ object Versions { val TARGET_SDK_VERSION = 28 val BUILD_TOOLS_VERSION = "28.0.3" val MIN_SDK_VERSION = 14 - val kotlin = "1.3.10" + val KOTLIN = "1.3.11" val OKHTTP = "3.3.1" val SUPPORT = "28.0.0" val RETROFIT = "2.0.2" - val butterKnife = "9.0.0-rc2" - val espressoVersion = "2.2.2" + val DETEKT = "1.0.0-RC12" } object Libs {