Update android projects used in AGP integration tests.
This commit is contained in:
committed by
Alexander Udalov
parent
294395f4cc
commit
b2dc2ed0be
@@ -1,8 +0,0 @@
|
|||||||
import android.view.*
|
|
||||||
import android.app.*
|
|
||||||
import android.widget.*
|
|
||||||
import kotlinx.android.synthetic.main.layout.*
|
|
||||||
|
|
||||||
class MyActivity : Activity() {
|
|
||||||
init { textView.setText("Some text") }
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
-d
|
|
||||||
$TEMP_DIR$
|
|
||||||
-Xplugin=dist/kotlinc/lib/android-extensions-compiler.jar
|
|
||||||
-P
|
|
||||||
plugin\:org.jetbrains.kotlin.android\:package=com.myapp
|
|
||||||
-P
|
|
||||||
plugin\:org.jetbrains.kotlin.android\:variant=main;$TESTDATA_DIR$/../androidPlugin/res
|
|
||||||
$TESTDATA_DIR$/pluginSimple.kt
|
|
||||||
$TESTDATA_DIR$/../androidPlugin
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
OK
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
-d
|
|
||||||
$TEMP_DIR$
|
|
||||||
-Xcompiler-plugin=dist/kotlinc/lib/android-extensions-compiler.jar=package=com.myapp,variant=main;$TESTDATA_DIR$/../androidPlugin/res
|
|
||||||
$TESTDATA_DIR$/pluginSimple.kt
|
|
||||||
$TESTDATA_DIR$/../androidPlugin
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
error: -Xcompiler-plugin argument is allowed only for for K2 compiler. Please use -Xplugin argument or enable -Xuse-k2
|
|
||||||
COMPILATION_ERROR
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
import android.view.*
|
|
||||||
import android.app.*
|
|
||||||
import android.widget.*
|
|
||||||
import kotlinx.android.synthetic.main.layout.*
|
|
||||||
|
|
||||||
class MyActivity : Activity() {
|
|
||||||
init { textView.setText("Some text") }
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
-d
|
|
||||||
$TEMP_DIR$
|
|
||||||
-Xplugin=dist/kotlinc/lib/android-extensions-compiler.jar
|
|
||||||
-P
|
|
||||||
plugin\:org.jetbrains.kotlin.android\:package=com.myapp
|
|
||||||
-P
|
|
||||||
plugin\:org.jetbrains.kotlin.android\:variant=main;$TESTDATA_DIR$/../androidPlugin/res
|
|
||||||
$TESTDATA_DIR$/pluginSimple.kt
|
|
||||||
$TESTDATA_DIR$/../androidPlugin
|
|
||||||
-Xuse-k2
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
warning: ATTENTION!
|
|
||||||
This build uses experimental K2 compiler:
|
|
||||||
-Xuse-k2
|
|
||||||
error: there are some plugins incompatible with K2 compiler:
|
|
||||||
org.jetbrains.kotlin.android.synthetic.AndroidComponentRegistrar
|
|
||||||
Please remove -Xuse-k2
|
|
||||||
COMPILATION_ERROR
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
-d
|
|
||||||
$TEMP_DIR$
|
|
||||||
-Xcompiler-plugin=dist/kotlinc/lib/android-extensions-compiler.jar=package=com.myapp,variant=main;$TESTDATA_DIR$/../androidPlugin/res
|
|
||||||
$TESTDATA_DIR$/pluginSimple.kt
|
|
||||||
$TESTDATA_DIR$/../androidPlugin
|
|
||||||
-Xuse-k2
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
warning: ATTENTION!
|
|
||||||
This build uses experimental K2 compiler:
|
|
||||||
-Xuse-k2
|
|
||||||
error: there are some plugins incompatible with K2 compiler:
|
|
||||||
org.jetbrains.kotlin.android.synthetic.AndroidComponentRegistrar
|
|
||||||
Please remove -Xuse-k2
|
|
||||||
COMPILATION_ERROR
|
|
||||||
@@ -103,26 +103,6 @@ public class CliTestGenerated extends AbstractCliTest {
|
|||||||
public void testNoPluginInClasspath() throws Exception {
|
public void testNoPluginInClasspath() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/plugins/noPluginInClasspath.args");
|
runTest("compiler/testData/cli/jvm/plugins/noPluginInClasspath.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("pluginSimple_legacy.args")
|
|
||||||
public void testPluginSimple_legacy() throws Exception {
|
|
||||||
runTest("compiler/testData/cli/jvm/plugins/pluginSimple_legacy.args");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("pluginSimple_modern_noK2.args")
|
|
||||||
public void testPluginSimple_modern_noK2() throws Exception {
|
|
||||||
runTest("compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.args");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("pluginWithK2Error_legacy.args")
|
|
||||||
public void testPluginWithK2Error_legacy() throws Exception {
|
|
||||||
runTest("compiler/testData/cli/jvm/plugins/pluginWithK2Error_legacy.args");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("pluginWithK2Error_modern.args")
|
|
||||||
public void testPluginWithK2Error_modern() throws Exception {
|
|
||||||
runTest("compiler/testData/cli/jvm/plugins/pluginWithK2Error_modern.args");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/cli/jvm")
|
@TestMetadata("compiler/testData/cli/jvm")
|
||||||
|
|||||||
@@ -69,7 +69,6 @@ dependencies {
|
|||||||
|
|
||||||
testImplementation(project(path = ":examples:annotation-processor-example"))
|
testImplementation(project(path = ":examples:annotation-processor-example"))
|
||||||
testImplementation(kotlinStdlib("jdk8"))
|
testImplementation(kotlinStdlib("jdk8"))
|
||||||
testImplementation(project(":kotlin-android-extensions"))
|
|
||||||
testImplementation(project(":kotlin-parcelize-compiler"))
|
testImplementation(project(":kotlin-parcelize-compiler"))
|
||||||
testImplementation(commonDependency("org.jetbrains.intellij.deps", "trove4j"))
|
testImplementation(commonDependency("org.jetbrains.intellij.deps", "trove4j"))
|
||||||
testImplementation(commonDependency("io.ktor", "ktor-server-test-host"))
|
testImplementation(commonDependency("io.ktor", "ktor-server-test-host"))
|
||||||
@@ -82,7 +81,6 @@ dependencies {
|
|||||||
testImplementation(commonDependency("com.google.code.gson:gson"))
|
testImplementation(commonDependency("com.google.code.gson:gson"))
|
||||||
testApiJUnit5(vintageEngine = true, jupiterParams = true)
|
testApiJUnit5(vintageEngine = true, jupiterParams = true)
|
||||||
|
|
||||||
testRuntimeOnly(project(":kotlin-android-extensions"))
|
|
||||||
testRuntimeOnly(project(":compiler:tests-mutes"))
|
testRuntimeOnly(project(":compiler:tests-mutes"))
|
||||||
|
|
||||||
// Workaround for missing transitive import of the common(project `kotlin-test-common`
|
// Workaround for missing transitive import of the common(project `kotlin-test-common`
|
||||||
|
|||||||
-138
@@ -270,28 +270,6 @@ open class KotlinAndroid36GradleIT : KotlinAndroid3GradleIT() {
|
|||||||
assertFileExists("app/build/tmp/kotlin-classes/$variant/com/example/app/AKt.class")
|
assertFileExists("app/build/tmp/kotlin-classes/$variant/com/example/app/AKt.class")
|
||||||
assertFileExists("app/build/tmp/kotlin-classes/$variant/com/example/app/KtUsageKt.class")
|
assertFileExists("app/build/tmp/kotlin-classes/$variant/com/example/app/KtUsageKt.class")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that Android extensions arguments are available only in the Android source sets:
|
|
||||||
val compilerPluginArgsRegex = "(\\w+)${Regex.escape("=args=>")}(.*)".toRegex()
|
|
||||||
val compilerPluginOptionsBySourceSet =
|
|
||||||
compilerPluginArgsRegex.findAll(output).associate { it.groupValues[1] to it.groupValues[2] }
|
|
||||||
|
|
||||||
compilerPluginOptionsBySourceSet.entries.forEach { (sourceSetName, argsString) ->
|
|
||||||
val shouldHaveAndroidExtensionArgs = sourceSetName.startsWith("androidApp") &&
|
|
||||||
(androidGradlePluginVersion < AGPVersion.v7_0_0 || !sourceSetName.contains("AndroidTestRelease")) &&
|
|
||||||
(androidGradlePluginVersion < AGPVersion.v7_1_0 || !sourceSetName.contains("androidAppTestFixtures"))
|
|
||||||
|
|
||||||
if (shouldHaveAndroidExtensionArgs)
|
|
||||||
assertTrue("$sourceSetName is an Android source set and should have Android Extensions in the args") {
|
|
||||||
"plugin:org.jetbrains.kotlin.android" in argsString
|
|
||||||
}
|
|
||||||
else
|
|
||||||
assertEquals(
|
|
||||||
"[]",
|
|
||||||
argsString,
|
|
||||||
"$sourceSetName is not an Android source set and should not have Android Extensions in the args"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val groupDir = "lib/build/repo/com/example/"
|
val groupDir = "lib/build/repo/com/example/"
|
||||||
@@ -704,16 +682,6 @@ open class KotlinAndroid70GradleIT : KotlinAndroid36GradleIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testNamespaceDSLInsteadOfPackageAttributeInManifest() {
|
|
||||||
val project = Project("AndroidExtensionsProjectAGP7")
|
|
||||||
val options = defaultBuildOptions().copy(incremental = false)
|
|
||||||
|
|
||||||
project.build("assembleDebug", options = options) {
|
|
||||||
assertSuccessful()
|
|
||||||
assertContains("The 'kotlin-android-extensions' Gradle plugin is deprecated")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinAndroid71GradleIT : KotlinAndroid70GradleIT() {
|
open class KotlinAndroid71GradleIT : KotlinAndroid70GradleIT() {
|
||||||
@@ -1024,42 +992,6 @@ abstract class AbstractKotlinAndroidGradleTests : BaseGradleIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// KT-51177: when experimental flag is enabled
|
|
||||||
@Test
|
|
||||||
fun testIncrementalBuildAfterResourceChangeAndroidExtensions() {
|
|
||||||
val project = Project("AndroidExtensionsProject")
|
|
||||||
project.setupWorkingDir()
|
|
||||||
|
|
||||||
project.projectDir.resolve("app/build.gradle").appendText(
|
|
||||||
"""
|
|
||||||
|
|
|
||||||
|androidExtensions {
|
|
||||||
| experimental = true
|
|
||||||
|}
|
|
||||||
|
|
|
||||||
""".trimMargin()
|
|
||||||
)
|
|
||||||
|
|
||||||
project.build("assembleDebug") {
|
|
||||||
assertSuccessful()
|
|
||||||
assertTasksExecuted(":app:compileDebugKotlin")
|
|
||||||
}
|
|
||||||
|
|
||||||
project.projectDir
|
|
||||||
.resolve("app/src/main/res/layout/activity_main.xml")
|
|
||||||
.modify {
|
|
||||||
it.replace("android:layout_width=\"wrap_content\"", "android:layout_width=\"match_parent\"")
|
|
||||||
}
|
|
||||||
|
|
||||||
project.build("assembleDebug") {
|
|
||||||
assertSuccessful()
|
|
||||||
assertTasksExecuted(":app:compileDebugKotlin")
|
|
||||||
assertContainsRegex(
|
|
||||||
"compilerMode=INCREMENTAL_COMPILER.*areFileChangesKnown=true.*app/build/kotlin".toRegex()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testAndroidDaggerIC() {
|
fun testAndroidDaggerIC() {
|
||||||
val project = Project("AndroidDaggerProject")
|
val project = Project("AndroidDaggerProject")
|
||||||
@@ -1108,17 +1040,6 @@ abstract class AbstractKotlinAndroidGradleTests : BaseGradleIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testAndroidExtensions() {
|
|
||||||
val project = Project("AndroidExtensionsProject")
|
|
||||||
val options = defaultBuildOptions().copy(incremental = false)
|
|
||||||
|
|
||||||
project.build("assembleDebug", options = options) {
|
|
||||||
assertSuccessful()
|
|
||||||
assertContains("The 'kotlin-android-extensions' Gradle plugin is deprecated")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testParcelize() {
|
fun testParcelize() {
|
||||||
val project = Project("AndroidParcelizeProject")
|
val project = Project("AndroidParcelizeProject")
|
||||||
@@ -1129,65 +1050,6 @@ abstract class AbstractKotlinAndroidGradleTests : BaseGradleIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testAndroidExtensionsIncremental() {
|
|
||||||
val project = Project("AndroidExtensionsProject")
|
|
||||||
val options = defaultBuildOptions().copy(incremental = true, useClasspathSnapshot = true)
|
|
||||||
|
|
||||||
project.build("assembleDebug", options = options) {
|
|
||||||
assertSuccessful()
|
|
||||||
val affectedSources = project.projectDir.getFilesByNames(
|
|
||||||
"MyActivity.kt", "noLayoutUsages.kt"
|
|
||||||
)
|
|
||||||
val relativePaths = project.relativize(affectedSources)
|
|
||||||
assertCompiledKotlinSources(relativePaths)
|
|
||||||
}
|
|
||||||
|
|
||||||
val activityLayout = File(project.projectDir, "app/src/main/res/layout/activity_main.xml")
|
|
||||||
activityLayout.modify { it.replace("textView", "newTextView") }
|
|
||||||
|
|
||||||
project.build("assembleDebug", options = options) {
|
|
||||||
assertFailed()
|
|
||||||
val affectedSources = project.projectDir.getFilesByNames("MyActivity.kt")
|
|
||||||
val relativePaths = project.relativize(affectedSources)
|
|
||||||
assertCompiledKotlinSources(relativePaths)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testAndroidExtensionsManyVariants() {
|
|
||||||
val project = Project("AndroidExtensionsManyVariants")
|
|
||||||
val options = defaultBuildOptions().copy(incremental = false)
|
|
||||||
|
|
||||||
project.build("assemble", options = options) {
|
|
||||||
assertSuccessful()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testAndroidExtensionsSpecificFeatures() {
|
|
||||||
val project = Project("AndroidExtensionsSpecificFeatures")
|
|
||||||
val options = defaultBuildOptions().copy(incremental = false)
|
|
||||||
|
|
||||||
project.build("assemble", options = options) {
|
|
||||||
assertFailed()
|
|
||||||
assertContains("Unresolved reference: textView")
|
|
||||||
}
|
|
||||||
|
|
||||||
File(project.projectDir, "app/build.gradle").modify { it.replace("[\"parcelize\"]", "[\"views\"]") }
|
|
||||||
|
|
||||||
project.build("assemble", options = options) {
|
|
||||||
assertFailed()
|
|
||||||
assertContainsRegex("Class 'User' is not abstract and does not implement abstract member public abstract fun (writeToParcel|describeContents)".toRegex())
|
|
||||||
}
|
|
||||||
|
|
||||||
File(project.projectDir, "app/build.gradle").modify { it.replace("[\"views\"]", "[\"parcelize\", \"views\"]") }
|
|
||||||
|
|
||||||
project.build("assemble", options = options) {
|
|
||||||
assertSuccessful()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun shouldAllowToApplyPluginWhenAndroidPluginIsMissing() {
|
fun shouldAllowToApplyPluginWhenAndroidPluginIsMissing() {
|
||||||
with(Project("simpleProject", minLogLevel = LogLevel.WARN)) {
|
with(Project("simpleProject", minLogLevel = LogLevel.WARN)) {
|
||||||
|
|||||||
-40
@@ -208,46 +208,6 @@ class BuildCacheRelocationIT : KGPBaseTest() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@AndroidGradlePluginTests
|
|
||||||
@DisplayName("KT-48849: Kotlin compile should ignore empty layout resource directories added by kotlin android extensions")
|
|
||||||
@GradleTestVersions(minVersion = TestVersions.Gradle.G_6_8)
|
|
||||||
@AndroidTestVersions(minVersion = TestVersions.AGP.AGP_42)
|
|
||||||
@GradleAndroidTest
|
|
||||||
fun compileIgnoreEmptyAndroidResLayoutDirs(
|
|
||||||
gradleVersion: GradleVersion,
|
|
||||||
agpVersion: String,
|
|
||||||
jdkProvider: JdkVersions.ProvidedJdk
|
|
||||||
) {
|
|
||||||
val (firstProject, secondProject) = prepareTestProjects(
|
|
||||||
"AndroidExtensionsProject",
|
|
||||||
gradleVersion,
|
|
||||||
defaultBuildOptions.copy(androidVersion = agpVersion),
|
|
||||||
jdkProvider.location
|
|
||||||
) {
|
|
||||||
it.subProject("app").buildGradle.append(
|
|
||||||
"""
|
|
||||||
|
|
|
||||||
|androidExtensions {
|
|
||||||
| experimental = true
|
|
||||||
|}
|
|
||||||
""".trimMargin()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
firstProject
|
|
||||||
.subProject("app")
|
|
||||||
.projectPath
|
|
||||||
.resolve("src/main/res/layout-ar")
|
|
||||||
.createDirectory()
|
|
||||||
|
|
||||||
checkBuildCacheRelocation(
|
|
||||||
firstProject,
|
|
||||||
secondProject,
|
|
||||||
listOf("assembleDebug"),
|
|
||||||
listOf(":app:compileDebugKotlin")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@NativeGradlePluginTests
|
@NativeGradlePluginTests
|
||||||
@DisplayName("with native project")
|
@DisplayName("with native project")
|
||||||
@GradleTest
|
@GradleTest
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ buildscript {
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-parcelize'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 23
|
compileSdkVersion 23
|
||||||
|
|||||||
+3
-3
@@ -20,11 +20,11 @@ import android.content.Intent
|
|||||||
import android.location.LocationManager
|
import android.location.LocationManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
|
import android.widget.TextView
|
||||||
import com.example.dagger.kotlin.DemoActivity
|
import com.example.dagger.kotlin.DemoActivity
|
||||||
import com.example.dagger.kotlin.DemoApplication
|
import com.example.dagger.kotlin.DemoApplication
|
||||||
import com.example.dagger.kotlin.R
|
import com.example.dagger.kotlin.R
|
||||||
import kotlinx.android.parcel.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import kotlinx.android.synthetic.main.activity_main.locationInfo
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class HomeActivity : DemoActivity() {
|
class HomeActivity : DemoActivity() {
|
||||||
@@ -37,7 +37,7 @@ class HomeActivity : DemoActivity() {
|
|||||||
(application as DemoApplication).component.inject(this)
|
(application as DemoApplication).component.inject(this)
|
||||||
|
|
||||||
// TODO do something with the injected dependencies here!
|
// TODO do something with the injected dependencies here!
|
||||||
locationInfo.text = "Injected LocationManager:\n$locationManager"
|
(findViewById(R.id.locationInfo) as TextView).text = "Injected LocationManager:\n$locationManager"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-56
@@ -1,56 +0,0 @@
|
|||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 23
|
|
||||||
buildToolsVersion "25.0.2"
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "org.example.manyvariants"
|
|
||||||
minSdkVersion 15
|
|
||||||
targetSdkVersion 23
|
|
||||||
versionCode 1
|
|
||||||
versionName "1.0"
|
|
||||||
}
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
minifyEnabled false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Needed for older AGP. It can be removed when the lowest supported AGP version is 4.2.0 or newer.
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility 1.8
|
|
||||||
targetCompatibility 1.8
|
|
||||||
}
|
|
||||||
|
|
||||||
flavorDimensions "color"
|
|
||||||
|
|
||||||
productFlavors {
|
|
||||||
demo {
|
|
||||||
dimension "color"
|
|
||||||
applicationIdSuffix ".demo"
|
|
||||||
versionNameSuffix "-demo"
|
|
||||||
}
|
|
||||||
full {
|
|
||||||
dimension "color"
|
|
||||||
applicationIdSuffix ".full"
|
|
||||||
versionNameSuffix "-full"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lintOptions {
|
|
||||||
checkReleaseBuilds false
|
|
||||||
abortOnError false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
androidExtensions {
|
|
||||||
experimental = true
|
|
||||||
features = ["views", "parcelize"]
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
||||||
}
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.debug.activity_debug.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
|
|
||||||
fun Activity.debug() {
|
|
||||||
viewMain
|
|
||||||
viewDebug
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewDebug"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.demo.activity_demo.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
|
|
||||||
fun Activity.demo() {
|
|
||||||
viewMain
|
|
||||||
viewDemo
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewDemo"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.debug.activity_debug.*
|
|
||||||
import kotlinx.android.synthetic.demo.activity_demo.*
|
|
||||||
import kotlinx.android.synthetic.demoDebug.activity_demo_debug.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
|
|
||||||
fun Activity.demoDebug() {
|
|
||||||
viewMain
|
|
||||||
viewDemo
|
|
||||||
viewDebug
|
|
||||||
viewDemoDebug
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewDemoDebug"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.full.activity_full.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
|
|
||||||
fun Activity.full() {
|
|
||||||
viewMain
|
|
||||||
viewFull
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewFull"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.full.activity_full.*
|
|
||||||
import kotlinx.android.synthetic.fullRelease.activity_full_release.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
import kotlinx.android.synthetic.release.activity_release.*
|
|
||||||
|
|
||||||
fun Activity.fullRelease() {
|
|
||||||
viewMain
|
|
||||||
viewFull
|
|
||||||
viewRelease
|
|
||||||
viewFullRelease
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewFullRelease"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-15
@@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="org.example.manyvariants">
|
|
||||||
|
|
||||||
<application android:allowBackup="true" android:supportsRtl="true">
|
|
||||||
<activity android:name=".MainActivity">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
</application>
|
|
||||||
|
|
||||||
</manifest>
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.os.Bundle
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
import kotlinx.android.parcel.Parcelize
|
|
||||||
import android.os.Parcelable
|
|
||||||
|
|
||||||
class MainActivity : Activity() {
|
|
||||||
override fun onCreate(savedInstanceState: Bundle) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(R.layout.activity_main)
|
|
||||||
viewMain
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Parcelize
|
|
||||||
class User(val firstName: String, val lastName: String) : Parcelable
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewMain"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
package org.example.manyvariants
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.release.activity_release.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
|
|
||||||
fun Activity.release() {
|
|
||||||
viewMain
|
|
||||||
viewRelease
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/viewRelease"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
classpath "com.android.tools.build:gradle:$android_tools_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task clean(type: Delete) {
|
|
||||||
delete rootProject.buildDir
|
|
||||||
}
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
include ':app'
|
|
||||||
-30
@@ -1,30 +0,0 @@
|
|||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 23
|
|
||||||
buildToolsVersion "25.0.2"
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "com.example.dagger.kotlin"
|
|
||||||
minSdkVersion 14
|
|
||||||
targetSdkVersion 23
|
|
||||||
versionCode 1
|
|
||||||
versionName "1.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Needed for older AGP. It can be removed when the lowest supported AGP version is 4.2.0 or newer.
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility 1.8
|
|
||||||
targetCompatibility 1.8
|
|
||||||
}
|
|
||||||
sourceSets {
|
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
||||||
}
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidextensions">
|
|
||||||
|
|
||||||
<application android:label="app_name">
|
|
||||||
<activity
|
|
||||||
android:label="app_name"
|
|
||||||
android:name="com.example.androidextensions.MyActivity">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
</application>
|
|
||||||
</manifest>
|
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.example.androidextensions
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.textView
|
|
||||||
|
|
||||||
class HomeActivity : Activity() {
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
myUtilFunction()
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(R.layout.activity_main)
|
|
||||||
|
|
||||||
this.textView.setText("Hello, world!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
package com.example.androidextensions
|
|
||||||
|
|
||||||
fun myUtilFunction() = "OK"
|
|
||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/textView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
<resources>
|
|
||||||
<string name="app_name">kotlin</string>
|
|
||||||
</resources>
|
|
||||||
-24
@@ -1,24 +0,0 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
classpath "com.android.tools.build:gradle:$android_tools_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
org.gradle.jvmargs=-XX:MaxPermSize=512m
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
include ':app'
|
|
||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 23
|
|
||||||
buildToolsVersion "25.0.2"
|
|
||||||
namespace "com.example.androidextensions"
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "com.example.dagger.kotlin"
|
|
||||||
minSdkVersion 14
|
|
||||||
targetSdkVersion 23
|
|
||||||
versionCode 1
|
|
||||||
versionName "1.0"
|
|
||||||
}
|
|
||||||
sourceSets {
|
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
||||||
}
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<application android:label="app_name">
|
|
||||||
<activity
|
|
||||||
android:label="app_name"
|
|
||||||
android:name="com.example.androidextensions.MyActivity">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
</application>
|
|
||||||
</manifest>
|
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.example.androidextensions
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.textView
|
|
||||||
|
|
||||||
class HomeActivity : Activity() {
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
myUtilFunction()
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(R.layout.activity_main)
|
|
||||||
|
|
||||||
this.textView.setText("Hello, world!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
package com.example.androidextensions
|
|
||||||
|
|
||||||
fun myUtilFunction() = "OK"
|
|
||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/textView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
<resources>
|
|
||||||
<string name="app_name">kotlin</string>
|
|
||||||
</resources>
|
|
||||||
-24
@@ -1,24 +0,0 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
classpath "com.android.tools.build:gradle:$android_tools_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
org.gradle.jvmargs=-XX:MaxPermSize=512m
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
include ':app'
|
|
||||||
-40
@@ -1,40 +0,0 @@
|
|||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 23
|
|
||||||
buildToolsVersion "25.0.2"
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "com.example.dagger.kotlin"
|
|
||||||
minSdkVersion 14
|
|
||||||
targetSdkVersion 23
|
|
||||||
versionCode 1
|
|
||||||
versionName "1.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Needed for older AGP. It can be removed when the lowest supported AGP version is 4.2.0 or newer.
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility 1.8
|
|
||||||
targetCompatibility 1.8
|
|
||||||
}
|
|
||||||
sourceSets {
|
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
|
||||||
}
|
|
||||||
|
|
||||||
lintOptions {
|
|
||||||
checkReleaseBuilds false
|
|
||||||
abortOnError false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
androidExtensions {
|
|
||||||
experimental = true
|
|
||||||
features = ["parcelize"]
|
|
||||||
}
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidextensions">
|
|
||||||
|
|
||||||
<application android:label="app_name">
|
|
||||||
<activity
|
|
||||||
android:label="app_name"
|
|
||||||
android:name="com.example.androidextensions.MyActivity">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
</application>
|
|
||||||
</manifest>
|
|
||||||
-35
@@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.example.androidextensions
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.app.Activity
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.textView
|
|
||||||
import kotlinx.android.parcel.Parcelize
|
|
||||||
import android.os.Parcelable
|
|
||||||
|
|
||||||
class HomeActivity : Activity() {
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(R.layout.activity_main)
|
|
||||||
|
|
||||||
this.textView.setText("Hello, world!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Parcelize
|
|
||||||
class User(val firstName: String, val lastName: String) : Parcelable
|
|
||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/textView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
<resources>
|
|
||||||
<string name="app_name">kotlin</string>
|
|
||||||
</resources>
|
|
||||||
-24
@@ -1,24 +0,0 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
classpath "com.android.tools.build:gradle:$android_tools_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
maven { url 'https://maven.google.com' }
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = uri("https://jcenter.bintray.com/") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
org.gradle.jvmargs=-XX:MaxPermSize=512m
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
include ':app'
|
|
||||||
-2
@@ -7,14 +7,12 @@ buildscript {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
|
|
||||||
classpath 'com.android.tools.build:gradle:' + android_tools_version
|
classpath 'com.android.tools.build:gradle:' + android_tools_version
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 23
|
compileSdkVersion 23
|
||||||
|
|||||||
-1
@@ -32,5 +32,4 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
implementation "org.jetbrains.kotlin:kotlin-android-extensions-runtime:$kotlin_version"
|
|
||||||
}
|
}
|
||||||
-1
@@ -1,7 +1,6 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 23
|
compileSdkVersion 23
|
||||||
|
|||||||
+2
-2
@@ -17,10 +17,10 @@ package com.example.dagger.kotlin.ui
|
|||||||
|
|
||||||
import android.location.LocationManager
|
import android.location.LocationManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.widget.TextView
|
||||||
import com.example.dagger.kotlin.DemoActivity
|
import com.example.dagger.kotlin.DemoActivity
|
||||||
import com.example.dagger.kotlin.DemoApplication
|
import com.example.dagger.kotlin.DemoApplication
|
||||||
import com.example.dagger.kotlin.R
|
import com.example.dagger.kotlin.R
|
||||||
import kotlinx.android.synthetic.main.activity_main.locationInfo
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class HomeActivity : DemoActivity() {
|
class HomeActivity : DemoActivity() {
|
||||||
@@ -33,7 +33,7 @@ class HomeActivity : DemoActivity() {
|
|||||||
(application as DemoApplication).component.inject(this)
|
(application as DemoApplication).component.inject(this)
|
||||||
|
|
||||||
// TODO do something with the injected dependencies here!
|
// TODO do something with the injected dependencies here!
|
||||||
locationInfo.text = "Injected LocationManager:\n$locationManager"
|
(findViewById(R.id.locationInfo) as TextView).text = "Injected LocationManager:\n$locationManager"
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class InnerClass
|
inner class InnerClass
|
||||||
|
|||||||
-1
@@ -1,7 +1,6 @@
|
|||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 27
|
compileSdkVersion 27
|
||||||
|
|||||||
-1
@@ -1,6 +1,5 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@ import android.graphics.BitmapFactory
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v7.app.AppCompatActivity
|
import android.support.v7.app.AppCompatActivity
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import android.support.v7.widget.Toolbar
|
||||||
import mobi.porquenao.poc.kotlin.R
|
import mobi.porquenao.poc.kotlin.R
|
||||||
|
|
||||||
abstract class BaseActivity : AppCompatActivity() {
|
abstract class BaseActivity : AppCompatActivity() {
|
||||||
@@ -17,7 +17,7 @@ abstract class BaseActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
override fun setContentView(layoutResID: Int) {
|
override fun setContentView(layoutResID: Int) {
|
||||||
super.setContentView(layoutResID)
|
super.setContentView(layoutResID)
|
||||||
setSupportActionBar(toolbar)
|
setSupportActionBar(findViewById(R.id.toolbar) as Toolbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun prepareTaskDescription() {
|
private fun prepareTaskDescription() {
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@ package mobi.porquenao.poc.kotlin.ui
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
import android.support.v7.widget.LinearLayoutManager
|
||||||
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
import mobi.porquenao.poc.kotlin.R
|
import mobi.porquenao.poc.kotlin.R
|
||||||
|
|
||||||
class MainActivity : BaseActivity() {
|
class MainActivity : BaseActivity() {
|
||||||
@@ -14,7 +14,7 @@ class MainActivity : BaseActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
|
|
||||||
with (list) {
|
with (findViewById(R.id.list) as RecyclerView) {
|
||||||
setHasFixedSize(true)
|
setHasFixedSize(true)
|
||||||
layoutManager = LinearLayoutManager(this@MainActivity)
|
layoutManager = LinearLayoutManager(this@MainActivity)
|
||||||
listAdapter = MainAdapter()
|
listAdapter = MainAdapter()
|
||||||
@@ -29,7 +29,7 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
|
||||||
listAdapter.add()
|
listAdapter.add()
|
||||||
list.smoothScrollToPosition(0)
|
(findViewById(R.id.list) as RecyclerView).smoothScrollToPosition(0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-5
@@ -1,12 +1,14 @@
|
|||||||
package mobi.porquenao.poc.kotlin.ui
|
package mobi.porquenao.poc.kotlin.ui
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.support.v7.widget.CardView
|
||||||
import android.support.v7.widget.RecyclerView
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.text.format.DateFormat
|
import android.text.format.DateFormat
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import kotlinx.android.synthetic.main.main_item.view.*
|
import android.widget.TextView
|
||||||
|
import android.widget.LinearLayout
|
||||||
import mobi.porquenao.poc.kotlin.R
|
import mobi.porquenao.poc.kotlin.R
|
||||||
import mobi.porquenao.poc.kotlin.core.Item
|
import mobi.porquenao.poc.kotlin.core.Item
|
||||||
import mobi.porquenao.poc.kotlin.core.ItemRepository
|
import mobi.porquenao.poc.kotlin.core.ItemRepository
|
||||||
@@ -59,9 +61,9 @@ class MainAdapter : RecyclerView.Adapter<MainAdapter.ViewHolder>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
val card = view.card
|
val card = view.findViewById(R.id.card) as CardView
|
||||||
val container = view.container
|
val container = view.findViewById(R.id.container) as LinearLayout
|
||||||
val title = view.title
|
val title = view.findViewById(R.id.title) as TextView
|
||||||
val date = view.date
|
val date = view.findViewById(R.id.date) as TextView
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -19,7 +19,6 @@ buildscript {
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
apply plugin: 'realm-android'
|
apply plugin: 'realm-android'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|||||||
-1
@@ -14,7 +14,6 @@ buildscript {
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
apply plugin: 'androidx.navigation.safeargs'
|
apply plugin: 'androidx.navigation.safeargs'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|||||||
+3
-4
@@ -7,10 +7,9 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Button
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import kotlinx.android.synthetic.main.fragment_start.*
|
|
||||||
import kotlinx.android.synthetic.main.fragment_start.view.*
|
|
||||||
|
|
||||||
// TODO: Rename parameter arguments, choose names that match
|
// TODO: Rename parameter arguments, choose names that match
|
||||||
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||||
@@ -47,11 +46,11 @@ class StartFragment : Fragment() {
|
|||||||
|
|
||||||
val inf = inflater.inflate(R.layout.fragment_start,container,false)
|
val inf = inflater.inflate(R.layout.fragment_start,container,false)
|
||||||
|
|
||||||
inf.button.setOnClickListener {
|
(inf.findViewById(R.id.button) as Button).setOnClickListener {
|
||||||
it.findNavController().navigate(StartFragmentDirections.actionStartFragmentToDestinationFragment1())
|
it.findNavController().navigate(StartFragmentDirections.actionStartFragmentToDestinationFragment1())
|
||||||
}
|
}
|
||||||
|
|
||||||
inf.button2.setOnClickListener {
|
(inf.findViewById(R.id.button2) as Button).setOnClickListener {
|
||||||
it.findNavController().navigate(StartFragmentDirections.actionStartFragmentToDestinationFragment2())
|
it.findNavController().navigate(StartFragmentDirections.actionStartFragmentToDestinationFragment2())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -1,6 +1,5 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-multiplatform'
|
apply plugin: 'kotlin-multiplatform'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
group 'com.example'
|
group 'com.example'
|
||||||
version '1.0'
|
version '1.0'
|
||||||
|
|||||||
Reference in New Issue
Block a user