项目作者: Rabtman

项目描述 :
一款纯粹的ACG聚合类App
高级语言: Java
项目地址: git://github.com/Rabtman/AcgClub.git


" class="reference-link">

宅社AcgClub,一款纯粹的ACG聚合类App

出于爱好与学习的目的做出了这款MD风格的应用,旨意通过涵盖Android端的一些热门技术框架来打造一个面向市场级别的产品

通过本项目,你可以了解到以下技术:

  • Material Design
  • MVP
  • 组件化
  • Kotlin
  • RxJava2
  • Retrofit
  • Dagger2
  • Realm
  • Glide
  • Arouter
  • Jsoup
  • Gradle配置
  • 热更新
  • 混淆、多渠道包

宅社壁纸API正式上线!

[效果体验]

(API已停止提供服务)

预览

应用下载体验

项目相关

项目环境

项目结构

  1. AcgClub
  2. - app 宿主app
  3. - common 基础库
  4. - common-res 公用资源
  5. - component-acgcomic 漫画组件
  6. - src/main
  7. - runalone 组件独立运行时生效
  8. - component-acgnews 资讯组件
  9. - component-acgpicture 看图组件
  10. - component-acgschedule 番剧组件
  11. - router 路由配置及相关服务实现
  12. - third-party-libs 三方库存放
  13. - base_component.gradle 组件依赖配置
  14. - base_component_compiler.gradle java注解处理配置
  15. - base_component_kapt.gradle kotlin注解处理配置
  16. - config.gradle 项目信息配置

新增组件

  • 组件名固定前缀为“component-”

  • 组件内build.gradle需进行如下配置:

    1. //必备
    2. apply from:"../base_component.gradle"
    3. //使用java
    4. apply from:"../base_component_compiler.gradle"
    5. //或kotlin
    6. apply from:"../base_component_kapt.gradle"
    7. //如果用到数据库
    8. apply plugin: 'realm-android'
  • 组件内res文件将以组件真名为前缀进行约束(例如:component-acgnews,一个布局文件名则需要以此打头:acgnews_layout.xml)

  • 组件独立运行时还需要注意提供相关的application,入口activity,AndroidManifest.xml等

项目配置

config.gradle中进行项目项目的属性配置,例如:包名、版本号、编译版本…

其中:

  1. //在该属性中填写需要合并到主程序运行的组件,没有填写的组件将独立运行
  2. merge = [
  3. "acgnews",
  4. "acgschedule"
  5. //"acgcomic"
  6. ]

merge属性修改完毕后,需要重新构建项目

其他

  • 项目中提示缺失DaggerXXX时,通过完成编译将有Dagger2自动生成
  • 在本地的local.properties按自己所需进行一些三方库的key、签名的配置,不需要的可以自行去掉
  1. #阿里云用户反馈
  2. fbAppKey=""
  3. fbAppSecret=""
  4. #友盟
  5. umengAppKey=""
  6. #bugly
  7. buglyAppId=""
  8. #签名信息
  9. storeFile=
  10. storePassword=
  11. keyAlias=
  12. keyPassword=
  13. #友盟分享key
  14. SINA_WEIBO_KEY=""
  15. SINA_WEIBO_SECRET=""
  16. QQ_ZONE_ID=""
  17. QQ_ZONE_KEY=""
  18. WEIXIN_ID=""
  19. WEIXIN_KEY=""
  • 为了确保bugly热更新能生效,请每次打出正式包的时候,确认app目录下tinker-support.gradle文件中的tinkerId的唯一性

鸣谢

捐赠

如果认为项目有趣或对你有帮助,欢迎捐赠支持。捐赠金额将用于支付域名和服务器费用,方便为大家提供更好的服务!

联系

项目需要完善的地方还有很多,如有BUG或者更好的建议欢迎提出