Why Using Kotlin instead of Java?
Kotlin offers a unique advantage over standard Java, especially in the case of Android:
- Kotlin is fully interoperable with Java.
- Java and Kotlin can be used in the same project seamless.
- No need to wait for 3rd party libraries to be ported to Kotlin.
- Kotlin offers advanced features which are fully compatible with older Android versions:
- Reified Generics
- Lambdas
- Function as first class citizens.
- Advance Collection library.
- Immutability.
- Kotlin runtime is small (latest is about 900 KB).
- Nullability builtin as a language feature – instead as a constant source of Null Pointer Exceptions.
- It is officially supported by Google, (alongside Java, and C/C++):
- Google now has Kotlin specific documentation.
- Google supports Kotlin friendly android extensions.
- The language design favours developer productivity
- The language is backed by JetBrains, which means Android Studio offers excellent tooling.
How to start
You need Android Studio 3.3.x, or later. You may either start with a new project or an existing project.
To start with an existing
Goto Tools|Kotlin|Configure Kotin in Project.
- You will present with a dialog with two options. Choose "Android with Gradle":
- Choose the "app" to enable Kotlin integration (choose the latest version corresponding to the plugin on your IDE):
This will add Kotlin Gradle plugin to your project and apply the following plugins to your app project:
build.gradle (app)
apply plugin: 'com.android.application' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android' // omitted... dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
New Project
- Start with the new project wizard on Android studio.
- Choose "Kotlin" language:
Typical Integration Steps
Implement the GreenIDListener interface on your activity, for example:
GreenIDActivity.ktclass GreenIDActivity : AppCompatActity(), GreenIDListener { override fun onGreenIDSuccess(resultCode: Int, verificatationToken: String?, verificationStatus: String?) { // Your business logic here } override fun onGreenIDFailed(resultCode: Int, message: String?, description: String?) { // Handle all failures when (result) { ResultCode.NO_NETWORK -> noNetwork() ResultCode.BACK -> userPressedBack() else -> handleGeneralGreenIDError(resultCode,message) } } }
- Override is a required keyword in Kotlin.
- When overriding a function, you do not have specify the access scope:
- Public stays public,
- Protected stays protected!
Write a function to start the GreenID™ SDK:
GreenActivity.kt// In GreenActivity.kt private fun startGreenID() { val configBundle = Bundle().apply { putString("accountId", "account-id-as-provided") putString("baseUrl", "https://simpleui-uat1.vixverify.com/") // Change this putString("apiCode", "api-code-as-provided") putString("countryCode", "XX") putString("mode", "onboarding") } try { GreenID.getInstance(applicationContext).start(configBundle, this) catch(e: GreenIDConfigException) { // You have to handle this! } }
Start the GreenID™, for example on a button/view click:
// onCreate: startGreenIdBtn.setOnClickListener { startGreenID() }
Kotlin Resource for Java/Android Developers
Resource | URL |
---|---|
Web console to try out Kotlin within your browser. | https://play.kotlinlang.org |
Official Kotlin Reference | https://kotlinlang.org/docs/reference/ |
Official Android Kotlin Documentation | https://developer.android.com/kotlin/ |
Cheat Sheet | https://blog.kotlin-academy.com/kotlin-cheat-sheet-1137588c75a |