AcgclubACG 聚合类 App
宅社 AcgClub 是一款纯粹的 ACG 聚合类 App。作者出于爱好与学习的目的做出了这款 MD 风格的应用,旨意通过涵盖Android 端的一些热门技术框架来打造一个面向市场级别的产品。
   
 
通过本项目,你可以了解到以下技术:
- Material Design
 - MVP
 - 组件化
 - Kotlin
 - RxJava2
 - Retrofit
 - Dagger2
 - Realm
 - Glide
 - Arouter
 - Jsoup
 - Gradle 配置
 - 热更新
 - 混淆、多渠道包
 
项目相关
项目环境
- Android Studio 4.1.3
 - Gradle 6.5
 - kotlin 1.4.21
 - compileVersion 28
 
项目结构
AcgClub    
    - app                              宿主app
    - common                           基础库
    - common-res                       公用资源
    - component-acgcomic               漫画组件
      - src/main
        - runalone                     组件独立运行时生效
    - component-acgnews                资讯组件
    - component-acgpicture             看图组件
    - component-acgschedule            番剧组件
    - router                           路由配置及相关服务实现
    - third-party-libs                 三方库存放
    - base_component.gradle            组件依赖配置
    - base_component_compiler.gradle   java注解处理配置
    - base_component_kapt.gradle       kotlin注解处理配置
    - config.gradle                    项目信息配置
 
新增组件
-  
组件名固定前缀为“component-”
 -  
组件内build.gradle需进行如下配置:
 
//必备 apply from:"../base_component.gradle" //使用java apply from:"../base_component_compiler.gradle" //或kotlin apply from:"../base_component_kapt.gradle" //如果用到数据库 apply plugin: 'realm-android'
-  
组件内res文件将以组件真名为前缀进行约束(例如:component-acgnews,一个布局文件名则需要以此打头:acgnews_layout.xml)
 -  
组件独立运行时还需要注意提供相关的application,入口activity,AndroidManifest.xml等
 
项目配置
config.gradle 中进行项目项目的属性配置,例如:包名、版本号、编译版本...
其中:
//在该属性中填写需要合并到主程序运行的组件,没有填写的组件将独立运行
merge = [
            "acgnews",
            "acgschedule"
            //"acgcomic"
    ]
 
merge 属性修改完毕后,需要重新构建项目
其他
- 项目中提示缺失DaggerXXX时,通过完成编译将有Dagger2自动生成
 - 在本地的 local.properties 按自己所需进行一些三方库的key、签名的配置,不需要的可以自行去掉
 
#阿里云用户反馈
fbAppKey=""
fbAppSecret=""
#友盟
umengAppKey=""
#bugly
buglyAppId=""
#签名信息
storeFile=
storePassword=
keyAlias=
keyPassword=
#友盟分享key
SINA_WEIBO_KEY=""
SINA_WEIBO_SECRET=""
QQ_ZONE_ID=""
QQ_ZONE_KEY=""
WEIXIN_ID=""
WEIXIN_KEY=""
 
- 为了确保 bugly 热更新能生效,请每次打出正式包的时候,确认 app 目录下 tinker-support.gradle 文件中的 tinkerId 的唯一性
 
评论
