hikage-compiler

Maven CentralMaven metadata URLAndroid Min SDK

这是 Hikage 的自动化编译模块。

配置依赖

你可以使用如下方式将此模块添加到你的项目中。

注意

你需要在你的项目中集成适合于你项目当前 Kotlin 版本的 Google KSP在新窗口中打开 插件。

SweetDependency (推荐)

在你的项目 SweetDependency 配置文件中添加依赖。

plugins:
  com.google.devtools.ksp:
    version: +

libraries:
  com.highcapable.hikage:
    hikage-compiler:
      version: +

在你的根项目 build.gradle.kts 中配置依赖。

plugins {
    // ...
    autowire(libs.plugins.com.google.devtools.ksp) apply false
}

在你的项目 build.gradle.kts 中配置依赖。

plugins {
    // ...
    autowire(libs.plugins.com.google.devtools.ksp)
}

dependencies {
    // ...
    ksp(com.highcapable.hikage.hikage.compiler)
}

传统方式

在你的根项目 build.gradle.kts 中配置依赖。

plugins {
    // ...
    id("com.google.devtools.ksp") version "<ksp-version>" apply false
}

在你的项目 build.gradle.kts 中配置依赖。

plugins {
    // ...
    id("com.google.devtools.ksp")
}

dependencies {
    // ...
    ksp("com.highcapable.hikage:hikage-compiler:<version>")
}

请将 <version> 修改为此文档顶部显示的版本,并将 <ksp-version> 修改为你项目当前使用的 Kotlin 版本对应的 KSP 版本。

功能介绍

Hikage 的编译模块将在运行时自动生成代码,在更新后,请重新运行 assembleDebugassembleRelease Task 以生成最新的代码。

生成布局组件

Hikage 可以在编译时为指定的布局组件自动生成布局组件对应的 Hikageable 函数。

自定义 View

你可以在你的自定义 View 上加入 HikageView 注解,以标记它生成为 Hikage 布局组件。

参数名称描述
lparams布局参数 ViewGroup.LayoutParams Class 对象,如果你的自定义 ViewViewGroup 的子类,则可以声明或留空使用默认值
alias布局组件的别名,即要生成的函数名称,默认获取当前 Class 的名称
requireInit是否要求填写布局的初始化方法块,默认为可省略的参数
requirePerformer是否要求填写布局的 performer 方法块,默认为可省略的参数,仅在你的自定义 ViewViewGroup 的子类时生效

示例如下

@HikageView(lparams = LinearLayout.LayoutParams::class)
class MyLayout(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
    // ...
}

编译后,你就可以在 Hikage 布局中使用 MyLayout 作为布局组件了。

示例如下

Hikageable {
    MyLayout {
        TextView(
            lparams = LayoutParams {
                topMargin = 16.dp
            }
        ) {
            text = "Hello, World!"
        }
    }
}

第三方组件

Hikage 同样可以为第三方提供的 View 组件自动生成布局组件函数,你可以使用 HikageViewDeclaration 注解来完成。

参数名称描述
view需要声明的布局组件的 Class 对象
lparams布局参数 ViewGroup.LayoutParams Class 对象,如果你的自定义 ViewViewGroup 的子类,则可以声明或留空使用默认值
alias布局组件的别名,即要生成的函数名称,默认获取 view Class 的名称
requireInit是否要求填写布局的初始化方法块,默认为可省略的参数
requirePerformer是否要求填写布局的 performer 方法块,默认为可省略的参数,仅在你的自定义 ViewViewGroup 的子类时生效

示例如下

@HikageViewDeclaration(ThirdPartyView::class)
object ThirdPartyViewDeclaration

这个注解可以声明到任意一个 object 类上,仅作为注解扫描器需要自动纳入的类来使用,你可以将可见性设为 private,但要确保被注解的类一定是使用 object 修饰的。

同样地,编译后,你就可以在 Hikage 布局中使用 ThirdPartyView 作为布局组件了。

示例如下

Hikageable {
    ThirdPartyView {
        // ...
    }
}

小提示

Hikage 生成布局组件的函数包名路径为 com.highcapable.hikage.widget + 你的 View 或第三方 View 组件的完整包名。