Micronaut 安卓支持

2023-02-28 17:16 更新

由于 Micronaut 依賴注入基于注解處理器而不依賴于反射,因此當(dāng)使用 Android 插件 3.0.0 或更高版本時(shí),它可以在 Android 上使用。

這使您可以為 Android 客戶端和服務(wù)器實(shí)現(xiàn)使用相同的應(yīng)用程序框架。

配置您的 Android 版本

首先,使用 annotationProcessor 依賴配置將 Micronaut 注釋處理器添加到處理器類(lèi)路徑。

在 Android 構(gòu)建配置的 annotationProcessor 和 compileOnly 范圍中包含 Micronaut micronaut-inject-java 依賴項(xiàng):

Android build.gradle 示例

dependencies {
    ...
    annotationProcessor "io.micronaut:micronaut-inject-java:3.8.6"
    compileOnly "io.micronaut:micronaut-inject-java:3.8.6"
    ...
}

如果您將 lint 作為構(gòu)建的一部分,您可能還需要禁用無(wú)效包檢查,因?yàn)?nbsp;Android 包含一個(gè)硬編碼檢查,除非您使用 Dagger,否則將 javax.inject 包視為無(wú)效:

在 build.gradle 中配置 lint

android {
    ...
    lintOptions {
        lintOptions { warning 'InvalidPackage' }
    }
}

您可以在 Android 文檔中找到有關(guān)配置注釋處理器的更多信息。

Micronaut inject-java 依賴項(xiàng)使用 Android Java 8 支持功能。

啟用依賴注入

正確配置類(lèi)路徑后,下一步就是啟動(dòng) ApplicationContext。

以下示例演示了為此目的創(chuàng)建 android.app.Application 的子類(lèi):

示例 Android 應(yīng)用程序類(lèi)

import android.app.Activity;
import android.app.Application;
import android.os.Bundle;

import io.micronaut.context.ApplicationContext;
import io.micronaut.context.env.Environment;

public class BaseApplication extends Application { (1)

    private ApplicationContext ctx;

    @Override
    public void onCreate() {
        super.onCreate();
        ctx = ApplicationContext.run(MainActivity.class, Environment.ANDROID); (2)
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { (3)
            @Override
            public void onActivityCreated(Activity activity, Bundle bundle) {
                ctx.inject(activity);
            }
            ... // shortened for brevity; it is not necessary to implement other methods
        });
    }
}
  1. 擴(kuò)展 android.app.Application 類(lèi)

  2. 使用 ANDROID 環(huán)境運(yùn)行 ApplicationContext

  3. 注冊(cè)一個(gè) ActivityLifecycleCallbacks 實(shí)例以允許 Android Activity 實(shí)例的依賴注入


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)