宅社V0.2.0發佈並開源,從零開始打造一個面向產品級應用

alt

宅社AcgClub,一款純粹的ACG聚合類Apphtml

項目地址:github.com/Rabtman/Acg…java

出於愛好與學習的目的作出了這款MD風格的應用,旨意經過涵蓋Android端的一些熱門技術框架來打造一個面向市場級別的產品android

經過本項目,你能夠了解到如下技術:git

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

預覽

應用下載體驗github

alt

alt

alt
alt
alt
alt
alt
alt

項目相關

項目環境

  • Android Studio 3.0
  • Gradle 4.1
  • Kotlin 1.2.21
  • compileSdkVersion 26

項目結構

AcgClub    
    - app                              宿主app
    - common                           基礎庫
    - common-res                       公用資源
    - component-acgcomic               漫畫組件
      - src/main
        - runalone                     組件獨立運行時生效
    - component-acgnews                資訊組件
    - component-acgschedule            番劇組件
    - router                           路由配置及相關服務實現
    - third-party-libs                 三方庫存放
    - base_component.gradle            組件依賴配置
    - base_component_compiler.gradle   java註解處理配置
    - base_component_kapt.gradle       kotlin註解處理配置
    - config.gradle                    項目信息配置
複製代碼

新增組件

  • 組件名固定前綴爲「component-」數據庫

  • 組件內build.gradle需進行以下配置:bash

//必備
 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)app

  • 組件獨立運行時還須要注意提供相關的application,入口activity,AndroidManifest.xml等框架

項目配置

config.gradle中進行項目項目的屬性配置,例如:包名、版本號、編譯版本...ide

其中:

//在該屬性中填寫須要合併到主程序運行的組件,沒有填寫的組件將獨立運行
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的惟一性

聯繫

項目須要完善的地方還有不少,若有BUG或者更好的建議歡迎提出,若是對你有幫助請隨手star一個,你的支持是我前進的動力!!!

鳴謝

相關文章
相關標籤/搜索