This page is only available in Korean for now.
개발 환경 준비를 마쳤다면, 켜지고 꺼질 때 로그를 남기는 플러그인을 만들어 볼게요.
1. 플러그인 클래스 작성
StarlightPlugin을 상속한 클래스를 만들어요. 이 클래스가 플러그인의 진입점(main_class)이에요.
package com.example.hello
import dev.mooner.starlight.plugincore.logger.LoggerFactory
import dev.mooner.starlight.plugincore.plugin.StarlightPlugin
class HelloPlugin : StarlightPlugin() {
private val log = LoggerFactory.logger("HelloPlugin")
override fun onEnable() {
log.info { "Hello, StarLight! (${info.fullName})" }
}
override fun onDisable() {
log.info { "Bye!" }
}
}- 클래스는
public이고 인자 없는 public 생성자가 있어야 해요. StarLight가 이 생성자로 플러그인을 만들어요. onEnable()은 플러그인이 켜질 때,onDisable()은 꺼질 때 호출돼요. API, 이벤트, 위젯 등록은 보통onEnable()에서 해요.info에는starlight.json의 내용이 들어 있어요.info.fullName은"이름 v버전"형식이에요.
2. 매니페스트 작성
플러그인 정보는 starlight.json에 적어요. Gradle 플러그인의 manifest { } 블록을 쓰면 빌드할 때 파일을 만들어 줘요.
starlight {
sdk {
pluginCore = file("libs/PluginCore-release.aar")
configDsl = file("libs/ConfigDSL-release.aar")
excludeHostKotlinLibraries = true
}
manifest {
id = "hello"
name = "Hello"
mainClass = "com.example.hello.HelloPlugin"
apiVersion = "0.3.2"
authors.add("me")
description = "My first StarLight plugin"
category = "utility" // 생략하면 other
// version을 생략하면 android.defaultConfig.versionName을 써요.
}
}manifest { } 대신 src/main/assets/starlight.json을 직접 써도 돼요. 이때는 Gradle 플러그인이 파일을 검증만 해요. 키와 규칙은 starlight.json에서 자세히 볼 수 있어요.
팁
이전 앱(0.3.4b)에서도 동작해야 한다면 apiVersion을 0.3.2로 두세요. 0.3.4b와 1.0.0이 모두 이 플러그인을 불러와요. 1.0.0 전용이라면 1.0.0으로 둬도 돼요. 이유는 API 버전 호환에 정리해 두었어요.
3. 빌드
./gradlew assembleDebugSlpbuild/outputs/starlight/debug/hello-debug.slp가 만들어져요. 빌드 중에 Gradle 플러그인이 아래 항목을 검사하고, 문제가 있으면 빌드를 멈춰요.
starlight.json의 필수 키와 형식main_class가 APK 안에 있고StarlightPlugin을 상속하며 인자 없는 public 생성자가 있는지- 앱이 이미 제공하는 라이브러리를 플러그인에 넣지 않았는지(경고)
4. 기기에 배포
기기를 USB 디버깅이나 무선 디버깅으로 연결하고 실행해요.
./gradlew deployDebugSlp -Pstarlight.restartApp=true플러그인이 기기의 /sdcard/StarLight/plugins/hello.slp로 복사되고, StarLight가 다시 시작돼요. StarLight는 플러그인을 앱이 시작될 때만 불러와서(핫 리로드 없음), 플러그인을 바꿀 때마다 앱을 다시 시작해야 해요.
5. 로그 확인
./gradlew starlightLogcatStarLight의 로그캣이 스트리밍돼요(Ctrl+C로 종료). Hello, StarLight! (Hello v1.0.0)이 보이면 성공이에요. 앱의 로그 화면과 플러그인 목록에서도 확인할 수 있어요.
플러그인이 목록에 보이지 않는다면 로그캣에서 플러그인을 제외한 이유를 찾아보세요. API 버전이 맞지 않거나, 필요한 의존성 플러그인이 없을 때 이유가 로그로 남아요. 빌드와 배포에 자주 있는 경우를 정리해 두었어요.
다음 단계
- 스크립트에서 쓸 객체를 제공하려면 → 스크립트에 API 노출하기
- 플러그인 설정 화면을 만들려면 → 설정 화면 만들기