Skip to content

Instantly share code, notes, and snippets.

View Morfly's full-sized avatar

Pavlo Stavytskyi Morfly

View GitHub Profile
package com.morfly.helloworld;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.morfly.helloworld">
<application android:label="Bazel Android Hello World">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@Morfly
Morfly / BUILD
Last active March 22, 2021 08:37
android_binary(
name = "app",
custom_package = "com.morfly.helloworld",
manifest = "AndroidManifest.xml",
srcs = ["java/com/morfly/helloworld/MainActivity.java"],
resource_files = glob(["res/**"]),
)
android_sdk_repository(
name = "androidsdk"
)
android_sdk_repository(
name = "androidsdk",
path = "/path/to/Android/sdk",
)
@Morfly
Morfly / FunctionProcessor.kt
Last active July 15, 2021 18:54
KSP function processor, process function
class FunctionProcessor(...) : SymbolProcessor {
override fun process(resolver: Resolver): List<KSAnnotated> {
val symbols = resolver
.getSymbolsWithAnnotation("com.morfly.Function")
.filterIsInstance<KSClassDeclaration>()
if (!symbols.iterator().hasNext()) return emptyList()
}
}
@Morfly
Morfly / FunctionProcessor.kt
Last active April 16, 2022 05:49
KSP function processor, process function, file
class FunctionProcessor(...) : SymbolProcessor {
override fun process(resolver: Resolver): List<KSAnnotated> {
...
val file: OutputStream = codeGenerator.createNewFile(
// Make sure to associate the generated file with sources to keep/maintain it across incremental builds.
// Learn more about incremental processing in KSP from the official docs:
// https://kotlinlang.org/docs/ksp-incremental.html
dependencies = Dependencies(false, *resolver.getAllFiles().toList().toTypedArray()),
@Morfly
Morfly / FunctionProcessor.kt
Created July 15, 2021 17:59
OutputStream write utility function
class FunctionProcessor(...) : SymbolProcessor {
operator fun OutputStream.plusAssign(str: String) {
this.write(str.toByteArray())
}
override fun process(resolver: Resolver): List<KSAnnotated> { ... }
}
@Morfly
Morfly / FunctionProcessor.kt
Last active July 15, 2021 18:53
KSP function processor, process function, visitor
class FunctionProcessor(...) : SymbolProcessor {
override fun process(resolver: Resolver): List<KSAnnotated> {
...
symbols.forEach { it.accept(Visitor(file), Unit) }
file.close()
val unableToProcess = symbols.filterNot { it.validate() }.toList()
return unableToProcess