startApp快速搭建空白android项目基于kotlin采用MVVM架构

startAp

项目地址在最后

基本目录结构

startApp快速搭建空白android项目基于kotlin采用MVVM架构_第1张图片

介绍

快速搭建android基础项目

软件架构

1、基于kotlin,采用android MVVM 架构处理

2、增加 config.gradle 针对项目所需要依赖进行配置

3、针对项目组件化分别创建对应module,并依赖commLib

4、app目录为项目主目录,这里尽量少的做一些操作,最好只拿到对应的主页面然后直接做个展示最好,剩下的逻辑操作都放到对应module里

5、baseLib里放的大部分是网络方面的东西,尽量不要做更改,除非必要,项目使用需要创建的一些东西尽量放到commLib里

大概项目结构

├─app 主模块
│ ├─startapp 模块目录
│ │ ├─ui activity/fragment
│ │ └─ … 更多类库目录
│ │
│─baselibrary 基础
│ ├─com 模块目录
│ │ ├─qb 项目目录
│ │ │ ├─baselibrary
│ │ │ │ ├─basekotlin kotlin基础封装的基类(非必要不用动)
│ │ │ │ ├─util 通用Utils目录,非必要尽量不要baseLib目录处理,请加到commLib目录
│ │ │ │ └─ … 其他
│ │ │ └─ … 更多类库目录
│ │
├─commLib 公共Lib依赖baselibrary
│ ├─common 项目目录
│ │ ├─api 接口
│ │ │ ├─baselibrary
│ │ │ │ ├─one 这个可以随意 要不要都行。我当时想的多地址创建多个api,不要也行,也可以一个动态修改base地址的方式,就是那个麻烦些
│ │ │ │ └─ … 其他
│ │ ├─base 外部extends这里的
│ │ ├─bean 对象
│ │ ├─net 网络封装可以区分目录例如one/two多个base地址可以这么搞,也可以动态修改base地址这样麻烦些
│ │ ├─router ARouter路由管理
│ │ ├─ui 公共页面可以放这里
│ │ ├─update app更新相关,没测试有问题的话可以自己写一个
│ │ ├─url base环境,自行区分测试开发环境
│ │ ├─utils 公共utils
│ │ ├─widget 公共widget
│ │ └─ … 更多类库目录
│ │
├─login 登录模块
│ ├─startapp 模块目录
│ │ ├─ui activity/fragment
│ │ └─ … 更多类库目录
│ │
├─video 视频模块(这个测试用的不用管,现在不用了,直接删了就行)
│ ├─startapp 模块目录
│ │ ├─ui activity/fragment
│ │ └─ … 更多类库目录
│ │
└─ … 项目更多module以及依赖库

基础描述

1、 请注意各个module layout 以及各个资源文件命名 (在对应module的build.gradle中配置了resourcePrefix资源前缀,这是为了防止各个module资源命名冲突,尽量保证)
2、 需要单独运行module的,请在config.gradle中将对应module的模块由false设置为true(同时对应module的相关配置需要看一看)
3、 注意新增的module要添加依赖,例如这里的我统一添加在app的build.gradle里

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

相关依赖,不需要的可以干掉,记得去干净

ext {
    //登录
    is_Login = false
    //是否需要main module模块
    is_Main = false
    is_Video = false
    is_Square = false

    android = [
            //APP名称
            APP_NAME         : "startApp",
            //app唯一标识符
            application_id   : "com.qiao.startapp",
            //编译SDK版本
            compileSdkVersion: 29,
            //编译SDK版本号
            buildToolsVersion: "30.0.2",
            minSdkVersion    : 19,
            //最大适配SDK
            targetSdkVersion : 29,
            //当前版本号
            versionCode      : 100,
            //当前版本名称
            versionName      : "1.0.0",
    ]
    key = [
  			storeFile    : "../xx.jks",//签名文件位置
            storePassword: "xx",//签名文件密码
            keyAlias     : "xx",//签名文件别名
            keyPassword  : "xx",//签名文件别名密码

            JPUSH_APPKEY : "4917cc32596c65b5a8fb3452",
            JPUSH_CHANNEL: "developer-default"

    ]
    //依赖
    version = [
            androidx_appcompat         : "1.1.0",
            junit                      : "4.12",
            androidx_junit             : "1.1.1",
            androidx_espresso_core     : "3.2.0",
            androidx_constraintlayout  : "1.1.3",

            rxandroid                  : "2.1.1",
            rxjava                     : "2.2.15",
            retrofit                   : "2.8.1",
            okhttp                     : "3.1.2",
            retrofit2_converter        : "2.8.1",
            retrofit2_converter_scalars: "2.8.1",
            retrofit2_adapter_rxjava2  : "2.8.1",
            logging_interceptor        : "3.14.7",
            butterknife                : "10.2.1",
            butterknife_compiler       : "10.2.1",

            rxlifecycle                : "3.1.0",
            rxlifecycle_android        : "3.1.0",
            rxlifecycle_components     : "3.1.0",

            immersionbar               : "3.0.0",
            immersionbar_components    : "3.0.0",
            immersionbar_ktx           : "3.0.0",
            multidex                   : "1.0.3",
            arouter_api                : "1.5.1",
            arouter_compiler           : "1.5.1",
            flycoTabLayout_Lib         : "2.1.2",

            SmartRefreshLayout         : "1.1.0",
            SmartRefreshHeader         : "1.1.0",

            SmartRefreshLayout         : "1.1.0",
            recyclerview               : "1.1.0",


            MVCHelper_Library          : "1.4.0",
            MVCHelper_CoolRefresh      : "1.4.0",
            CoolRefreshView            : "1.0.4",
            support_v4                 : "23.4.0",
            core_ktx                   : "1.3.2",
            jpush                      : "3.8.5",
            jcore                      : "2.5.5",
            kotlinx_coroutines_android : "1.3.9",
            lifecycle_extensions       : "2.2.0",
            lifecycle_viewmodel_ktx    : "2.2.0",
            utilcodex                  : "1.31.0",
            event_bus                  : "3.1.1",

            kotlin_stdlib              : "1.4.10",
            kotlin_v                   : "1.4.10",

            live_event_bus             : "1.8.0",
            agentweb                   : "4.1.9",
            jzvd                       : "7.5.0",

            material_v                 : "1.1.0",

            autosize                   : "1.2.1",
            hotfix                     : "3.3.0",
            htextview                  : "0.1.6",
            XXPermissions              : "13.5",
            XUpdate                    : "2.1.3",

            okhttputils                : "2.6.2",
            alipay                     : "15.8.11",
    ]

    dependencies = [

            androidx_appcompat         : "androidx.appcompat:appcompat:${version.androidx_appcompat}",
            androidx_constraintlayout  : "androidx.constraintlayout:constraintlayout:${version.androidx_constraintlayout}",
            junit                      : "junit:junit:${version.junit}",
            androidx_junit             : "androidx.test.ext:junit:${version.androidx_junit}",
            androidx_espresso_core     : "androidx.test.espresso:espresso-core:${version.androidx_espresso_core}",
            //分包
            multidex                   : "com.android.support:multidex:${version.multidex}",
            //net
            rxandroid                  : "io.reactivex.rxjava2:rxandroid:${version.rxandroid}",
            rxjava                     : "io.reactivex.rxjava2:rxjava:${version.rxandroid}",
            retrofit                   : "com.squareup.retrofit2:retrofit:${version.retrofit}",
            okhttp                     : "com.squareup.okhttp3:okhttp:${version.okhttp}",
            retrofit2_converter        : "com.squareup.retrofit2:converter-gson:${version.retrofit2_converter}",
            retrofit2_converter_scalars: "com.squareup.retrofit2:converter-scalars:${version.retrofit2_converter_scalars}",
            retrofit2_adapter_rxjava2  : "com.squareup.retrofit2:adapter-rxjava2:${version.retrofit2_adapter_rxjava2}",
            logging_interceptor        : "com.squareup.okhttp3:logging-interceptor:${version.logging_interceptor}",
//            //黄油刀
//            butterknife                : "com.jakewharton:butterknife:${version.butterknife}",
//            butterknife_compiler       : "com.jakewharton:butterknife:${version.butterknife_compiler}",

            rxlifecycle                : "com.trello.rxlifecycle3:rxlifecycle:${version.rxlifecycle}",
            rxlifecycle_android        : "com.trello.rxlifecycle3:rxlifecycle-android:${version.rxlifecycle_android}",
            rxlifecycle_components     : "com.trello.rxlifecycle3:rxlifecycle-components:${version.rxlifecycle_components}",
            //处理状态栏
            immersionbar               : "com.gyf.immersionbar:immersionbar:${version.immersionbar}",
            immersionbar_components    : "com.gyf.immersionbar:immersionbar-components:${version.immersionbar_components}",
            immersionbar_ktx           : "com.gyf.immersionbar:immersionbar-ktx:${version.immersionbar_ktx}",
            //Arouter
            arouter_api                : "com.alibaba:arouter-api:${version.arouter_api}",
            arouter_compiler           : "com.alibaba:arouter-compiler:${version.arouter_compiler}",
            flycoTabLayout_Lib         : "com.flyco.tablayout:FlycoTabLayout_Lib:${version.flycoTabLayout_Lib}@aar",

            SmartRefreshLayout         : "com.scwang.smartrefresh:SmartRefreshLayout:${version.SmartRefreshLayout}",  //1.0.5及以前版本的老用户升级需谨慎,API改动过大
            SmartRefreshHeader         : "com.scwang.smartrefresh:SmartRefreshHeader:${version.SmartRefreshHeader}",  //没有使用特殊Header,可以不加这行

            MVCHelper_Library          : "com.shizhefei:MVCHelper-Library:${version.MVCHelper_Library}",
            recyclerview               : "androidx.recyclerview:recyclerview:${version.recyclerview}",
            MVCHelper_CoolRefresh      : "com.shizhefei:MVCHelper-CoolRefresh:${version.MVCHelper_CoolRefresh}",
            CoolRefreshView            : "com.shizhefei:CoolRefreshView:${version.CoolRefreshView}",
            support_v4                 : "com.android.support:support-v4:${version.support_v4}",
            core_ktx                   : "androidx.core:core-ktx:${version.core_ktx}",
            jpush                      : "cn.jiguang.sdk:jpush:${version.jpush}",
            jcore                      : "cn.jiguang.sdk:jcore:${version.jcore}",
            kotlinx_coroutines_android : "org.jetbrains.kotlinx:kotlinx-coroutines-android:${version.kotlinx_coroutines_android}",
            lifecycle_extensions       : "androidx.lifecycle:lifecycle-extensions:${version.lifecycle_extensions}",
            lifecycle_viewmodel_ktx    : "androidx.lifecycle:lifecycle-viewmodel-ktx:${version.lifecycle_viewmodel_ktx}",
            utilcodex                  : "com.blankj:utilcodex:${version.utilcodex}",
            event_bus                  : "org.greenrobot:eventbus:${version.event_bus}",
            live_event_bus             : "io.github.jeremyliao:live-event-bus-x:${version.live_event_bus}",
            agentweb                   : "com.github.Justson.AgentWeb:agentweb-core:v${version.agentweb}-androidx",
            jzvd                       : "cn.jzvd:jiaozivideoplayer:${version.jzvd}",
            kotlin_stdlib              : "org.jetbrains.kotlin:kotlin-stdlib:${version.kotlin_stdlib}",
            material_v                 : "com.google.android.material:material:${version.material_v}",
            autosize                   : "me.jessyan:autosize:${version.autosize}",
            hotfix                     : "com.aliyun.ams:alicloud-android-hotfix:${version.hotfix}",
            htextview_base             : "com.hanks:htextview-base:${version.htextview}",
            htextview_fade             : "com.hanks:htextview-fade:${version.htextview}",
            htextview_line             : "com.hanks:htextview-line:${version.htextview}",
            htextview_rainbow          : "com.hanks:htextview-rainbow:${version.htextview}",
            htextview_typer            : "com.hanks:htextview-typer:${version.htextview}",
            htextview_scale            : "com.hanks:htextview-scale:${version.htextview}",
            htextview_evaporate        : "com.hanks:htextview-evaporate:${version.htextview}",
            htextview_fall             : "com.hanks:htextview-fall:${version.htextview}",
            XXPermissions              : "com.github.getActivity:XXPermissions:${version.XXPermissions}",
            XUpdate                    : "com.github.xuexiangjys:XUpdate:${version.XUpdate}",
            okhttputils                : "com.zhy:okhttputils:${version.okhttputils}", //升级框架要用的,要是跟项目里的冲突就自己做下载
            alipay                     : "com.alipay.sdk:alipaysdk-android:${version.alipay}" //升级框架要用的,要是跟项目里的冲突就自己做下载
    ]
}

startApp项目地址

你可能感兴趣的:(kotlin,Android,android,kotlin,架构)