Skip to content

Instantly share code, notes, and snippets.

View marukami's full-sized avatar

Mitchell Tilbrook marukami

  • Sydney, Australia
View GitHub Profile
@marukami
marukami / WireBuildTask.kt
Created February 26, 2020 21:22
Wire proto3 Android Gradle BuildTask
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.JavaExec
import org.gradle.api.tasks.OutputDirectory
import java.io.File
import javax.inject.Inject
@CacheableTask
@marukami
marukami / NetworkModule.kt
Created August 5, 2019 07:45
Nested Dagger Module
@Module(includes = [NetworkModule.OkHttpClientModule::class])
abstract class NetworkModule {
@Binds abstract fun provideService(retrofitService: RetrofitService): Service
@Module
object OkHttpClientModule {
@JvmStatic
@Provides
@marukami
marukami / mvrx-dagger.kt
Created November 15, 2018 03:52
MvRx Dagger Boilerplate
package au.tilbrook.mvrx.dagger
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.ViewModel
import com.airbnb.mvrx.BaseMvRxViewModel
import com.airbnb.mvrx.MvRxState
import com.airbnb.mvrx.MvRxViewModelFactory
import javax.inject.Provider
@marukami
marukami / build.gradle
Created November 12, 2018 00:28
Enable JaCoCo for all Android Modules
subprojects {
afterEvaluate { project ->
BaseExtension android = project.extensions.findByName("android")
if (android != null) {
enableJacoco(project)
}
}
}
@marukami
marukami / build.gradle
Created September 24, 2018 11:30
Root Build.gradle allopen
buildscript {
dependencies {
// android-gradle-plugin
// …
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
}
}
@marukami
marukami / OpenForTesting.kt
Created September 11, 2018 22:42
Release allopen annotation
@Target(AnnotationTarget.CLASS)
annotation class OpenForTesting
apply plugin: 'kotlin-allopen'
allOpen {
// allows mocking for classes w/o directly opening them for release builds
annotation 'com.android.example.github.testing.OpenClass'
}
// Forked from https://github.com/googlesamples/android-architecture-components/blob/d81da2cb1e3d61e40f052e631bb15883d0f9f637/GithubBrowserSample/app/build.gradle
@marukami
marukami / openClass.kt
Last active September 11, 2018 22:40
kotlin-allopen annotation
/**
* This annotation allows us to open some classes for mocking purposes while they are final in
* release builds.
*/
@Target(AnnotationTarget.ANNOTATION_CLASS)
annotation class OpenClass
/**
* Annotate a class with [OpenForTesting] if you want it to be extendable in debug builds.
*/
def mainSrc = [
'src/main/java',
"src/$productFlavorName/java",
"src/$buildTypeName/java"
// Kotlin src folders
'src/main/kotlin',
"src/$productFlavorName/kotlin",
"src/$buildTypeName/kotlin"
]
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'org.jacoco:org.jacoco.core:0.8.2'
}
}