Skip to content

Releases: kekxv/AndroidAutoWired

v0.2.15-1

Choose a tag to compare

@github-actions github-actions released this 10 Apr 02:40

在 Android 应用中使用 Dagger

Dagger 效果更好,建议使用,当前项目就作为一个学习的参考项目吧。

https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

API 文档参照 API。

仓库 : Repo 。

引入方式 : Introduce

使用方式 : Usage

更新记录

  • 20230901 增加 http 服务,基于 NanoHTTPD ,使用@Controller("路径")和@RequestMapping({"/方法"})方式指定 。

  • 20230901 增加 com.kekxv.uvcamera 的 UVCamera操作v4l2摄像头。

  • 20210127 修复 interface 接口包含变量没有注入问题。

  • 20210126 修复重复依赖陷入无限回调的问题。

  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

  • 20210124 修复重复依赖陷入无限回调的问题。

  • 20210124 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。

  • 20210114 增加Service内service标记,用于开启调用start()。

  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。

  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。

  • 20201226 增加Sign标记,用于区分各个不一样的实例。

  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。
Constructor<?> constructor = cla.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance()
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    field.set(source, target);
}

本项目是用于模拟自动注入,通过添加注解@AutoWired,举个例子:Usage

注意:所有自动注入的同类型类,为同一个对象。

为了能够区分对应的自动注入实例 ,则需要添加注解@Service,方便AutoWired确认。

不足之处

  1. 目前还是有些不足的地方 ,例如当有多个实现类,希望能够根据指定参数或者指定注解,自动注入不一样的实现类,从而更灵活智能,但这个只能看后期项目需求或者是否有时间以及是否有好心人帮忙完善了(已在 0.2.6版本加上)。
  2. DexFile已经被 API 29 以上列为过时(Deprecated),这个在扫描当前类时候用上,需要寻找一个替换方案。不过在虚拟机Android11上面能够正常使用。

参考文档

仿springboot @Autowired自动注入:https://blog.csdn.net/qq_38527695/article/details/104217397

其他互联网文档

备注:由于找资料比较多和杂,部分资料查看后关闭页面,导致没有加入到参考文档内,如果您发现本文章内有借鉴您的文档的部分,请将您的文献地址提交Issues或者提交 PR(pull requests)到https://github.com/kekxv/AndroidAutoWired

v0.2.15

Choose a tag to compare

@github-actions github-actions released this 10 Apr 02:38

在 Android 应用中使用 Dagger

Dagger 效果更好,建议使用,当前项目就作为一个学习的参考项目吧。

https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

API 文档参照 API。

仓库 : Repo 。

引入方式 : Introduce

使用方式 : Usage

更新记录

  • 20230901 增加 http 服务,基于 NanoHTTPD ,使用@Controller("路径")和@RequestMapping({"/方法"})方式指定 。

  • 20230901 增加 com.kekxv.uvcamera 的 UVCamera操作v4l2摄像头。

  • 20210127 修复 interface 接口包含变量没有注入问题。

  • 20210126 修复重复依赖陷入无限回调的问题。

  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

  • 20210124 修复重复依赖陷入无限回调的问题。

  • 20210124 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。

  • 20210114 增加Service内service标记,用于开启调用start()。

  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。

  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。

  • 20201226 增加Sign标记,用于区分各个不一样的实例。

  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。
Constructor<?> constructor = cla.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance()
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    field.set(source, target);
}

本项目是用于模拟自动注入,通过添加注解@AutoWired,举个例子:Usage

注意:所有自动注入的同类型类,为同一个对象。

为了能够区分对应的自动注入实例 ,则需要添加注解@Service,方便AutoWired确认。

不足之处

  1. 目前还是有些不足的地方 ,例如当有多个实现类,希望能够根据指定参数或者指定注解,自动注入不一样的实现类,从而更灵活智能,但这个只能看后期项目需求或者是否有时间以及是否有好心人帮忙完善了(已在 0.2.6版本加上)。
  2. DexFile已经被 API 29 以上列为过时(Deprecated),这个在扫描当前类时候用上,需要寻找一个替换方案。不过在虚拟机Android11上面能够正常使用。

参考文档

仿springboot @Autowired自动注入:https://blog.csdn.net/qq_38527695/article/details/104217397

其他互联网文档

备注:由于找资料比较多和杂,部分资料查看后关闭页面,导致没有加入到参考文档内,如果您发现本文章内有借鉴您的文档的部分,请将您的文献地址提交Issues或者提交 PR(pull requests)到https://github.com/kekxv/AndroidAutoWired

v0.2.14

Choose a tag to compare

@github-actions github-actions released this 10 Apr 02:15

在 Android 应用中使用 Dagger

Dagger 效果更好,建议使用,当前项目就作为一个学习的参考项目吧。

https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

API 文档参照 API。

仓库 : Repo 。

引入方式 : Introduce

使用方式 : Usage

更新记录

  • 20230901 增加 http 服务,基于 NanoHTTPD ,使用@Controller("路径")和@RequestMapping({"/方法"})方式指定 。

  • 20230901 增加 com.kekxv.uvcamera 的 UVCamera操作v4l2摄像头。

  • 20210127 修复 interface 接口包含变量没有注入问题。

  • 20210126 修复重复依赖陷入无限回调的问题。

  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

  • 20210124 修复重复依赖陷入无限回调的问题。

  • 20210124 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。

  • 20210114 增加Service内service标记,用于开启调用start()。

  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。

  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。

  • 20201226 增加Sign标记,用于区分各个不一样的实例。

  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。
Constructor<?> constructor = cla.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance()
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    field.set(source, target);
}

本项目是用于模拟自动注入,通过添加注解@AutoWired,举个例子:Usage

注意:所有自动注入的同类型类,为同一个对象。

为了能够区分对应的自动注入实例 ,则需要添加注解@Service,方便AutoWired确认。

不足之处

  1. 目前还是有些不足的地方 ,例如当有多个实现类,希望能够根据指定参数或者指定注解,自动注入不一样的实现类,从而更灵活智能,但这个只能看后期项目需求或者是否有时间以及是否有好心人帮忙完善了(已在 0.2.6版本加上)。
  2. DexFile已经被 API 29 以上列为过时(Deprecated),这个在扫描当前类时候用上,需要寻找一个替换方案。不过在虚拟机Android11上面能够正常使用。

参考文档

仿springboot @Autowired自动注入:https://blog.csdn.net/qq_38527695/article/details/104217397

其他互联网文档

备注:由于找资料比较多和杂,部分资料查看后关闭页面,导致没有加入到参考文档内,如果您发现本文章内有借鉴您的文档的部分,请将您的文献地址提交Issues或者提交 PR(pull requests)到https://github.com/kekxv/AndroidAutoWired

v0.2.13

Choose a tag to compare

@github-actions github-actions released this 07 Apr 06:19

在 Android 应用中使用 Dagger

Dagger 效果更好,建议使用,当前项目就作为一个学习的参考项目吧。

https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

API 文档参照 API。

仓库 : Repo 。

引入方式 : Introduce

使用方式 : Usage

更新记录

  • 20230901 增加 http 服务,基于 NanoHTTPD ,使用@Controller("路径")和@RequestMapping({"/方法"})方式指定 。

  • 20230901 增加 com.kekxv.uvcamera 的 UVCamera操作v4l2摄像头。

  • 20210127 修复 interface 接口包含变量没有注入问题。

  • 20210126 修复重复依赖陷入无限回调的问题。

  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

  • 20210124 修复重复依赖陷入无限回调的问题。

  • 20210124 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。

  • 20210114 增加Service内service标记,用于开启调用start()。

  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。

  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。

  • 20201226 增加Sign标记,用于区分各个不一样的实例。

  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。
Constructor<?> constructor = cla.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance()
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    field.set(source, target);
}

本项目是用于模拟自动注入,通过添加注解@AutoWired,举个例子:Usage

注意:所有自动注入的同类型类,为同一个对象。

为了能够区分对应的自动注入实例 ,则需要添加注解@Service,方便AutoWired确认。

不足之处

  1. 目前还是有些不足的地方 ,例如当有多个实现类,希望能够根据指定参数或者指定注解,自动注入不一样的实现类,从而更灵活智能,但这个只能看后期项目需求或者是否有时间以及是否有好心人帮忙完善了(已在 0.2.6版本加上)。
  2. DexFile已经被 API 29 以上列为过时(Deprecated),这个在扫描当前类时候用上,需要寻找一个替换方案。不过在虚拟机Android11上面能够正常使用。

参考文档

仿springboot @Autowired自动注入:https://blog.csdn.net/qq_38527695/article/details/104217397

其他互联网文档

备注:由于找资料比较多和杂,部分资料查看后关闭页面,导致没有加入到参考文档内,如果您发现本文章内有借鉴您的文档的部分,请将您的文献地址提交Issues或者提交 PR(pull requests)到https://github.com/kekxv/AndroidAutoWired

安卓模拟自动注入 v0.2.9

Choose a tag to compare

@github-actions github-actions released this 31 Jan 00:54

在 Android 应用中使用 Dagger

Dagger 效果更好,建议使用,当前项目就作为一个学习的参考项目吧。

https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

API 文档参照 API。

仓库 : Repo 。

引入方式 : Introduce

使用方式 : Usage

更新记录

  • 20210127 修复 interface 接口包含变量没有注入问题。

  • 20210126 修复重复依赖陷入无限回调的问题。

  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

  • 20210124 修复重复依赖陷入无限回调的问题。

  • 20210124 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。

  • 20210114 增加Service内service标记,用于开启调用start()。

  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。

  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。

  • 20201226 增加Sign标记,用于区分各个不一样的实例。

  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。
Constructor<?> constructor = cla.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance()
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    field.set(source, target);
}

本项目是用于模拟自动注入,通过添加注解@AutoWired,举个例子:Usage

注意:所有自动注入的同类型类,为同一个对象。

为了能够区分对应的自动注入实例 ,则需要添加注解@Service,方便AutoWired确认。

不足之处

  1. 目前还是有些不足的地方 ,例如当有多个实现类,希望能够根据指定参数或者指定注解,自动注入不一样的实现类,从而更灵活智能,但这个只能看后期项目需求或者是否有时间以及是否有好心人帮忙完善了(已在 0.2.6版本加上)。
  2. DexFile已经被 API 29 以上列为过时(Deprecated),这个在扫描当前类时候用上,需要寻找一个替换方案。不过在虚拟机Android11上面能够正常使用。

参考文档

仿springboot @Autowired自动注入:https://blog.csdn.net/qq_38527695/article/details/104217397

其他互联网文档

备注:由于找资料比较多和杂,部分资料查看后关闭页面,导致没有加入到参考文档内,如果您发现本文章内有借鉴您的文档的部分,请将您的文献地址提交Issues或者提交 PR(pull requests)到https://github.com/kekxv/AndroidAutoWired

安卓模拟自动注入 v0.2.8

Choose a tag to compare

@github-actions github-actions released this 27 Jan 13:14

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

API 文档参照 API。

引入方式 : Introduce

使用方式 : Usage

更新记录

  • 20210127 修复 interface 接口包含变量没有注入问题。

  • 20210126 修复重复依赖陷入无限回调的问题。

  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

  • 20210124 修复重复依赖陷入无限回调的问题。

  • 20210124 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。

  • 20210114 增加Service内service标记,用于开启调用start()。

  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。

  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。

  • 20201226 增加Sign标记,用于区分各个不一样的实例。

  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。
Constructor<?> constructor = cla.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance()
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    field.set(source, target);
}

本项目是用于模拟自动注入,通过添加注解@AutoWired,举个例子:Usage

注意:所有自动注入的同类型类,为同一个对象。

为了能够区分对应的自动注入实例 ,则需要添加注解@Service,方便AutoWired确认。

不足之处

  1. 目前还是有些不足的地方 ,例如当有多个实现类,希望能够根据指定参数或者指定注解,自动注入不一样的实现类,从而更灵活智能,但这个只能看后期项目需求或者是否有时间以及是否有好心人帮忙完善了(已在 0.2.6版本加上)。
  2. DexFile已经被 API 29 以上列为过时(Deprecated),这个在扫描当前类时候用上,需要寻找一个替换方案。不过在虚拟机Android11上面能够正常使用。

参考文档

仿springboot @Autowired自动注入:https://blog.csdn.net/qq_38527695/article/details/104217397

其他互联网文档

备注:由于找资料比较多和杂,部分资料查看后关闭页面,导致没有加入到参考文档内,如果您发现本文章内有借鉴您的文档的部分,请将您的文献地址提交Issues或者提交 PR(pull requests)到https://github.com/kekxv/AndroidAutoWired

安卓模拟自动注入 0.2.6

Choose a tag to compare

@kekxv kekxv released this 26 Jan 13:25

安卓模拟自动注入

更新记录

  • 20210126 修复重复依赖陷入无限回调的问题。
  • 20210126 增加 Interpretation 用于 多个 interface 继承类型判断注入对象。

引入方式:

以下配置均在项目build.gradle下

方式一

  1. 生成 GitHub Token,教程点击本链接
  2. 配置 gradle ,增加仓库https://maven.pkg.github.com/kekxv/JavaRepo/ ,github 的仓库需要授权(公开的也要),自己配置一下 GITHUB_USER、GITHUB_PERSONAL_ACCESS_TOKEN,建议在家目录的gradle.properties进行配置。
//配置gradle
android {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/kekxv/JavaRepo/")
            credentials {
                username = System.getenv('ACCESS_USER') ?: project.properties['ACCESS_USER']
                password = System.getenv('ACCESS_PERSONAL_ACCESS_TOKEN') ?: project.properties['ACCESS_PERSONAL_ACCESS_TOKEN']
            }
        }
    }
}
  1. 增加 dependencies implementation 'com.kekxv:autowired:0.2.3' (0.2.3为版本号,可更改为最新版本)

方式二

直接下载前往 仓库 下载autowired-0.2.3.aar导入到项目。
根据情况,可能需要将autowired-0.2.3.aar 拷贝到libs 目录并 implementation fileTree(dir: "libs", include: ["*.jar"]) 更改为implementation fileTree(dir: "libs", include: ["*.jar","*.aar"])

安卓模拟自动注入 0.2.5

Choose a tag to compare

@kekxv kekxv released this 24 Jan 08:09

更新记录

  • 20210114 修复重复依赖陷入无限回调的问题。
  • 20210114 增加 InjectView 自动findViewById并赋值;需要 setContentView 之后调用。
  • 20210114 增加Service内service标记,用于开启调用start()。
  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。
  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。
  • 20201226 增加Sign标记,用于区分各个不一样的实例。
  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

安卓模拟自动注入 0.2.4

Choose a tag to compare

@kekxv kekxv released this 24 Jan 05:16

安卓模拟自动注入

源码位置 : https://github.com/kekxv/AndroidAutoWired

代码下载 : AndroidAutoWired.zip

引入方式: gradle:implementation 'com.github.kekxv:AndroidAutoWired:0.2.1' (不知道啥子情况,不起作用)

引入方式:

以下配置均在项目build.gradle下

方式一

  1. 生成 GitHub Token,教程点击本链接
  2. 配置 gradle ,增加仓库https://maven.pkg.github.com/kekxv/JavaRepo/ ,github 的仓库需要授权(公开的也要),自己配置一下 GITHUB_USER、GITHUB_PERSONAL_ACCESS_TOKEN,建议在家目录的gradle.properties进行配置。
//配置gradle
android {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/kekxv/JavaRepo/")
            credentials {
                username = System.getenv('GITHUB_USER') ?: project.properties['GITHUB_USER']
                password = System.getenv('GITHUB_PERSONAL_ACCESS_TOKEN') ?: project.properties['GITHUB_PERSONAL_ACCESS_TOKEN']
            }
        }
    }
}
  1. 增加 dependencies implementation 'com.kekxv:autowired:0.2.3' (0.2.3为版本号,可更改为最新版本)

方式二

直接下载前往 仓库 下载autowired-0.2.3.aar导入到项目。
根据情况,可能需要将autowired-0.2.3.aar 拷贝到libs 目录并 implementation fileTree(dir: "libs", include: ["*.jar"]) 更改为implementation fileTree(dir: "libs", include: ["*.jar","*.aar"])

更新记录

  • 20210114 增加Service内service标记,用于开启调用start()。
  • 20210114 自动注入后注入,可在更新之后自动注入之前未找到的注入字段。
  • 20210114 在原有自动扫描的基础上,增加手动传入 Service 类。
  • 20201226 增加Sign标记,用于区分各个不一样的实例。
  • 20201226 增加IAutoWired.registered手动注册,可用于自动注入Context之类。

原理说明:

  1. 扫描所有(或手动传入)带有 @Service 的自动注入类
  2. 手动或继承IAutoWired 自动调用 IAutoWired.inject(this); 进行注入。
  3. 为保证private也能注入成功;通过反射以及setAccessible(true);修改权限进行newInstance()以及赋值。