Micronaut 安卓支持
由于 Micronaut 依赖注入基于注解处理器而不依赖于反射,因此当使用 Android 插件 3.0.0 或更高版本时,它可以在 Android 上使用。
这使您可以为 Android 客户端和服务器实现使用相同的应用程序框架。
配置您的 Android 版本
首先,使用 annotationProcessor 依赖配置将 Micronaut 注释处理器添加到处理器类路径。
在 Android 构建配置的 annotationProcessor 和 compileOnly 范围中包含 Micronaut micronaut-inject-java 依赖项:
Android build.gradle 示例
dependencies {
...
annotationProcessor "io.micronaut:micronaut-inject-java:3.8.6"
compileOnly "io.micronaut:micronaut-inject-java:3.8.6"
...
}
如果您将 lint 作为构建的一部分,您可能还需要禁用无效包检查,因为 Android 包含一个硬编码检查,除非您使用 Dagger,否则将 javax.inject 包视为无效:
在 build.gradle 中配置 lint
android {
...
lintOptions {
lintOptions { warning 'InvalidPackage' }
}
}
您可以在 Android 文档中找到有关配置注释处理器的更多信息。
Micronaut inject-java 依赖项使用 Android Java 8 支持功能。
启用依赖注入
正确配置类路径后,下一步就是启动 ApplicationContext。
以下示例演示了为此目的创建 android.app.Application 的子类:
示例 Android 应用程序类
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
});
}
}
扩展 android.app.Application 类
使用 ANDROID 环境运行 ApplicationContext
注册一个 ActivityLifecycleCallbacks 实例以允许 Android Activity 实例的依赖注入
更多建议: