Skip to content

Instantly share code, notes, and snippets.

View mkj-gram's full-sized avatar

Morten Krogh-Jespersen mkj-gram

View GitHub Profile
@mkj-gram
mkj-gram / proguard-config.txt
Created July 9, 2020 16:01
Proguard Config ReflectOnMe
# Keep the class that is reflected on and its methods.
-keep,allowobfuscation class ReflectOnMe {
<methods>;
}
# Keep kotlin.Metadata annotations to maintain metadata on kept items.
-keepattributes RuntimeVisibleAnnotations
-keep class kotlin.Metadata { *; }
@mkj-gram
mkj-gram / ReflectOnMe.kt
Created July 9, 2020 16:01
Reflect on me
class ReflectOnMe() {
fun String.extension(): String {
return capitalize()
}
}
fun reflect(receiver: ReflectOnMe): String {
return ReflectOnMe::class
.declaredMemberExtensionFunctions
.first()
# Keep the D8CommandBuilder and all their methods.
-keep class com.example.mylibrary.D8CommandBuilder {
<methods>;
}
# Keep the extension functions.
-keep class com.example.mylibrary.CommandBuilderKt {
<methods>;
}
@mkj-gram
mkj-gram / D8CommandBuilder.kt
Created July 9, 2020 15:56
D8CommandBuilder.kt
package com.example.mylibrary
/** D8CommandBuilder to build a D8 command. */
class D8CommandBuilder: CommandBuilderBase() {
internal var intermediateOutput: Boolean = false
override fun getCommandName() = "d8"
override fun getExtraArgs() = "--intermediate=$intermediateOutput"
}
fun D8CommandBuilder.setIntermediateOutput(intermediate: Boolean) : D8CommandBuilder {
intermediateOutput = intermediate
@mkj-gram
mkj-gram / CommandBuilder.kt
Last active July 9, 2020 15:54
Command Builder
package com.example.mylibrary
/** CommandBuilderBase contains options common for D8 and R8. */
abstract class CommandBuilderBase {
internal var minApi: Int = 0
internal var inputs: MutableList<String> = mutableListOf()
abstract fun getCommandName(): String
abstract fun getExtraArgs(): String