AcgclubACG 聚合类 App

联合创作 · 2023-09-30 17:45

宅社 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 的唯一性

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报