# AndroidRoomDemo **Repository Path**: code_tjf/AndroidRoomDemo ## Basic Information - **Project Name**: AndroidRoomDemo - **Description**: 练习Room 数据库的增删改查及升级 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-01 - **Last Updated**: 2022-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AndroidRoomDemo #### 介绍 练习Room 数据库的增删改查及升级 android Composing builds 统一版本管理 configplugin 的创建及使用 #### 使用说明 #### 什么是 Composing builds ? 大家可看官网文档 (https://docs.gradle.org/current/userguide/composite_builds.html) #### Composing builds 优点:  **双向追踪 自动补全  依赖更新时,不会重新构建整个项目** #### 编译环境及工具   android studio  4.2.2    jdk  1.8 #### 1. 打开AS 创建一个 版本管理插件model  名称自己命名  **我的是 configplugin  目录结构如下** ![image](https://upload-images.jianshu.io/upload_images/12221638-0d71a986d83a1752.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 2 build.gradle 的配置调整 **2.1build.gradle 配置文件如下** ``` buildscript{     repositories{         google() maven{ url'https://maven.aliyun.com/repository/central' }         maven{ url'https://maven.aliyun.com/repository/public' }         maven{ url'https://maven.aliyun.com/repository/google' }         maven{ url"https://jitpack.io" }         gradlePluginPortal() mavenCentral() } } //注意plugins 的位置,需要放到buildscript 后面,前面不能有 apply plugin 这种,不然就报错 plugins{     id'java-gradle-plugin'// 插件的依赖 } //apply plugin: 'java-gradle-plugin' repositories{     google()     maven{ url'https://maven.aliyun.com/repository/central' }     maven{ url'https://maven.aliyun.com/repository/public' }     maven{ url'https://maven.aliyun.com/repository/google' }     maven{ url"https://jitpack.io" }     mavenCentral() } java{ //jdk 的版本     sourceCompatibility =JavaVersion.VERSION_1_8     targetCompatibility =JavaVersion.VERSION_1_8 } dependencies{     implementation gradleApi() } gradlePlugin{  //重点 这个是其它model 依赖的关键     plugins{         version{         //  包名           id ='com.tjf.configplugin'             //在根目录下创建类 ConfigPlugin 继承 Plugin  插件编译入口             implementationClass ='com.tjf.configplugin.ConfigPlugin'         } } } ``` **2.2 配置插件文件**   **自定义类 空实现插件的接口方法Plugin 下的apply(Project project)即可** **ConfigPlugin 如下** ``` import org.gradle.api.Plugin; import org.gradle.api.Project; /** * @author: tjf * @date: 2022-12-06 * @desc: 插件编译入口 */ public class ConfigPlugin implements Plugin { @Override     public void apply(Project target) { } } 创建版本依赖类和 依赖库列表类 /** * @author: tjf * @date: 2022-12-06 * @desc:配置编译版本 */ public class BuildVersion { public static int compileSdkVersion =29; public static String buildToolsVersion ="29.0.2"; public static int minSdkVersion =19; public static int targetSdkVersion =29; public static int versionCode =20221205; public static String versionName ="1.0.0"; } /** * @author: tjf * @date: 2022-12-06 * @desc: 配置依赖使用的库及版本 */ public class BuildDeps { //AndroidX 的一些依赖库 public static String appcompat ="androidx.appcompat:appcompat:1.2.0"; public static String constraintLayout ="androidx.constraintlayout:constraintlayout:2.0.4"; public static String coreKtx ="androidx.core:core-ktx:1.3.2"; public static String material ="com.google.android.material:material:1.4.0"; public static String junittest ="androidx.test.ext:junit:1.1.2"; public static String swiperefreshlayout ="androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"; public static String recyclerviewx ="androidx.recyclerview:recyclerview:1.2.1"; public static String cardviewx ="androidx.cardview:cardview:1.0.0"; } ``` #### 3   修改项目中的settings.gradle文件 和项目下的build.gradle 如有异常 添加setting.gradle 空实现,插件Moudle需要此文件 我测试的时候是没有创建该文件 **3.1 项目下的settings.gradle** **依赖版本插件模块 通过   这个依赖的名称是你自己命名的插件名 includeBuild("xxx")** ```    includeBuild("configplugin") ``` **3.2 项目下的build.gradle** **注意plugins 的位置,需要放到buildscript 后面,前面不能有 apply plugin 或者plugins{ id '' } 这种,不然就报错** ``` /** * 这个 id 就是在 versionPlugin 文件夹下 build.gradle 文件内定义的id * 有了这个后 可以追踪到任何使用位置 * 如果在多项目构建中,可能想把插件应用到子项目中,apply false 来告诉 Gradle 不要应用插件 * * plugins {} 默认的行为是解析和应用插件 * * 建议使用这一步配置 方便查看各个引用位置 */ plugins { // 包名 id "com.tjf.configplugin" apply false } //全局配置 使用插件 如果不使用全局配置 单个使用则需要执行下方的4.1 中的步 // 如果使用全局配置 则直接跳过4.1 的步骤 按照4.2 的步骤进行 subprojects { subproject -> // 默认应用所有子项目中 apply plugin: 'com.tjf.configplugin' // 如果想应用到某个子项目中,可以通过 subproject.name 来判断应用在哪个子项目中 // subproject.name 是你子项目的名字,示例如下 // 官方文档地址:https://guides.gradle.org/creating-multi-project-builds/#add_documentation // if (subproject.name == "app") { // apply plugin: 'com.tjf.versionplugin' // } } ``` #### 4 版本插件的使用  在需要的 module build.gradle中 添加如下使用 **4.1 // 依赖 插件 build.gradle中写的 包名   引用插件** ```  plugins{   id "com.tjf.configplugin" } ``` **4.2  // 定义插件的依赖地址** ``` import com.tjf.configplugin.* ``` **4.3  //使用插件中的版本编译和依赖库 如下** ``` 编译引用的使用  插件中的版本类名加属性来引用 android{     compileSdkVersion  BuildVersion.compileSdkVersion     buildToolsVersion  BuildVersion.buildToolsVersion     defaultConfig{             minSdkVersion  BuildVersion.minSdkVersion } } 依赖库的引用    插件中的依赖库类名加属性来引用 dependencies{     implementation  BuildDeps.appcompat     implementation  BuildDeps.material     implementation  BuildDeps.constraintLayout     implementation  BuildDeps.recyclerviewx } ``` **测试项目的demo gitee地址** https://gitee.com/code_tjf/AndroidRoomDemo.git ##### 完结 ![image](https://upload-images.jianshu.io/upload_images/12221638-29d2a075c350f78b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)