From a01bb5b09af9db9fa4de7cecf710c70af3b4a4b9 Mon Sep 17 00:00:00 2001 From: Andrey Mischenko Date: Wed, 29 Nov 2017 09:40:42 +0800 Subject: [PATCH] Add sample demonstrating Kapt plugin usage in Android project with DataBinding and Dagger --- samples/android-kapt/README.md | 11 ++ samples/android-kapt/build.gradle.kts | 48 +++++ samples/android-kapt/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52978 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + samples/android-kapt/gradlew | 164 ++++++++++++++++++ samples/android-kapt/gradlew.bat | 90 ++++++++++ samples/android-kapt/settings.gradle.kts | 13 ++ .../android-kapt/src/main/AndroidManifest.xml | 20 +++ .../com/example/kotlingradle/MainActivity.kt | 41 +++++ .../src/main/res/layout/activity_main.xml | 30 ++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes .../src/main/res/values/colors.xml | 6 + .../src/main/res/values/strings.xml | 4 + .../src/main/res/values/styles.xml | 11 ++ 19 files changed, 443 insertions(+) create mode 100644 samples/android-kapt/README.md create mode 100644 samples/android-kapt/build.gradle.kts create mode 100644 samples/android-kapt/gradle.properties create mode 100644 samples/android-kapt/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/android-kapt/gradle/wrapper/gradle-wrapper.properties create mode 100755 samples/android-kapt/gradlew create mode 100644 samples/android-kapt/gradlew.bat create mode 100644 samples/android-kapt/settings.gradle.kts create mode 100644 samples/android-kapt/src/main/AndroidManifest.xml create mode 100644 samples/android-kapt/src/main/kotlin/com/example/kotlingradle/MainActivity.kt create mode 100644 samples/android-kapt/src/main/res/layout/activity_main.xml create mode 100644 samples/android-kapt/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 samples/android-kapt/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 samples/android-kapt/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 samples/android-kapt/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 samples/android-kapt/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 samples/android-kapt/src/main/res/values/colors.xml create mode 100644 samples/android-kapt/src/main/res/values/strings.xml create mode 100644 samples/android-kapt/src/main/res/values/styles.xml diff --git a/samples/android-kapt/README.md b/samples/android-kapt/README.md new file mode 100644 index 000000000..fbd570743 --- /dev/null +++ b/samples/android-kapt/README.md @@ -0,0 +1,11 @@ +Kotlin Android project with Kapt +=============== + +This sample demonstrates how to use kapt in Android project with Kotlin DSL. + +To check that annotation processing works properly we use these libraries: + +- [Data Binding Library](https://developer.android.com/topic/libraries/data-binding/index.html) that generates a layout binding for MainActivity +- [Dagger 2](https://google.github.io/dagger/) for dependency injection + +You can also check those [Kotlin examples for different Android frameworks](https://kotlinlang.org/docs/tutorials/android-frameworks.html) using annotation processing (but using Groovy DSL) diff --git a/samples/android-kapt/build.gradle.kts b/samples/android-kapt/build.gradle.kts new file mode 100644 index 000000000..6bc5a3748 --- /dev/null +++ b/samples/android-kapt/build.gradle.kts @@ -0,0 +1,48 @@ +import org.gradle.api.internal.file.pattern.PatternMatcherFactory.compile +import org.gradle.kotlin.dsl.kotlin + +plugins { + id("com.android.application") version "3.0.1" + kotlin("android") version "1.1.61" + kotlin("kapt") version "1.1.61" +} + +android { + buildToolsVersion("27.0.1") + compileSdkVersion(27) + + defaultConfig { + minSdkVersion(15) + targetSdkVersion(27) + + applicationId = "com.example.kotlingradle.kapt" + versionCode = 1 + versionName = "1.0" + } + + // Enable databinding library for this project + dataBinding.isEnabled = true +} + +dependencies { + val supportLibraryVersion = "27.0.1" + implementation("com.android.support:appcompat-v7:$supportLibraryVersion") + implementation(kotlin("stdlib", "1.1.61")) + + //Dagger 2 dependencies + implementation("com.google.dagger:dagger:2.13") + kapt("com.google.dagger:dagger-compiler:2.13") + + // Version of databinding compiler should be equal to version of android plugin + // Use kapt to run databinding annotation processor + kapt("com.android.databinding:compiler:3.0.1") + + //com.android.databinding:library:1.3.1 depends on support-v4 (this dependency added implictly by Android plugi, + //to prevent dependency version conflict set v4 version explicitly + implementation("com.android.support:support-v4:$supportLibraryVersion") +} + +repositories { + jcenter() + google() +} diff --git a/samples/android-kapt/gradle.properties b/samples/android-kapt/gradle.properties new file mode 100644 index 000000000..e69de29bb diff --git a/samples/android-kapt/gradle/wrapper/gradle-wrapper.jar b/samples/android-kapt/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..4123b1525278d7b81af85fdd381fb3432273424f GIT binary patch literal 52978 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�ug>d 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 literal 0 HcmV?d00001 diff --git a/samples/android-kapt/gradle/wrapper/gradle-wrapper.properties b/samples/android-kapt/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..41fc268a8 --- /dev/null +++ b/samples/android-kapt/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://repo.gradle.org/gradle/dist-snapshots/gradle-kotlin-dsl-4.4-20171124203416+0000-all.zip diff --git a/samples/android-kapt/gradlew b/samples/android-kapt/gradlew new file mode 100755 index 000000000..27309d923 --- /dev/null +++ b/samples/android-kapt/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/samples/android-kapt/gradlew.bat b/samples/android-kapt/gradlew.bat new file mode 100644 index 000000000..832fdb607 --- /dev/null +++ b/samples/android-kapt/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/android-kapt/settings.gradle.kts b/samples/android-kapt/settings.gradle.kts new file mode 100644 index 000000000..e20428ed8 --- /dev/null +++ b/samples/android-kapt/settings.gradle.kts @@ -0,0 +1,13 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "com.android.application") { + useModule("com.android.tools.build:gradle:${requested.version}") + } + } + } +} diff --git a/samples/android-kapt/src/main/AndroidManifest.xml b/samples/android-kapt/src/main/AndroidManifest.xml new file mode 100644 index 000000000..3ea8e961d --- /dev/null +++ b/samples/android-kapt/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/samples/android-kapt/src/main/kotlin/com/example/kotlingradle/MainActivity.kt b/samples/android-kapt/src/main/kotlin/com/example/kotlingradle/MainActivity.kt new file mode 100644 index 000000000..20ac186cf --- /dev/null +++ b/samples/android-kapt/src/main/kotlin/com/example/kotlingradle/MainActivity.kt @@ -0,0 +1,41 @@ +package com.example.kotlingradle.kapt + +import android.support.v7.app.AppCompatActivity +import android.os.Bundle +import android.databinding.ObservableField +import android.databinding.DataBindingUtil +import com.example.kotlingradle.kapt.databinding.ActivityMainBinding +import dagger.Component +import javax.inject.Inject + +class MainActivity : AppCompatActivity() { + + @Inject + internal lateinit var viewModel: MainViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + DaggerMainComponent.create().inject(this) + super.onCreate(savedInstanceState) + + val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main) + binding.model = viewModel + } +} + +class MainViewModel @Inject constructor() { + private var counter = 0 + + val title = ObservableField(formatTitle(counter)) + + fun increment() { + counter++ + title.set(formatTitle(counter)) + } + + private fun formatTitle(counter: Int) = "$counter clicks" +} + +@Component +interface MainComponent { + fun inject(activity: MainActivity) +} diff --git a/samples/android-kapt/src/main/res/layout/activity_main.xml b/samples/android-kapt/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..f8f28d141 --- /dev/null +++ b/samples/android-kapt/src/main/res/layout/activity_main.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + +