GroovyInAndroid

Run Groovy In Android

APACHE-2.0 License

Stars
7

GroovyInAndroid

Run Groovy in Android, compile groovy code to dex using D8 and run it in Android.

Quick Start

implementation "io.github.dingyi222666:groovy-android:1.0.7-beta4"

Using ScriptFactory

 val scriptFactory = GroovyScriptFactory()
scriptFactory
    .evaluate(
        """
                import android.widget.Toast
                import xx.xx.YouApplication
                Toast.makeText(YouApplication.instance, "Hello World for groovy", Toast.LENGTH_SHORT).show()
            """.trimIndent()
    )

Using DynamicGrooidClassLoader

val classLoader = DynamicGrooidClassLoader(this.classLoader)
val scriptClass =
    kotlin.runCatching { classLoader.parseClass(groovyCode) as Class<Script> }
        .onFailure {
            //do something in parseClass failure
            it.printStackTrace()
        }
        .getOrNull() ?: error("parseClass failure")

scriptClass.newInstance().run()

or use java

DynamicGrooidClassLoader classLoader = new DynamicGrooidClassLoader(this.getClass().getClassLoader(), null, false);

try {
    //your groovyCode here
    String groovyCode = "";

    Class<Script> scriptClass = classLoader.parseClass(groovyCode);
    
    scriptClass.newInstance().run();
} catch (Exception e) {
     //do something in parseClass failure
}

TODO

  • Support caching dex
    • always compile the dex into memory, we don't need to be concerned about repeatedly compiling the dex causing much cache dex
Package Rankings
Top 42.46% on Repo1.maven.org