NO IMAGE

推薦的來源,一是我平時我個人發現的;二是來自完整開源專案投稿,這方面的資源還是比較少的,一個完整的專案也非常適合大家學習,如果你剛好做了這樣的專案,不妨投稿能幫助更多的人。

1

短視訊小應用

《KotlinMvp》 是仿著“開眼Eyepetizer”之前版本並加上自己的想法,開發的一款的短視訊小應用,每日為你推薦精選視訊,讓你大開眼界。本專案採用 Kotlin 語言編寫,結合 MVP RxJava2 Retrofit2 Glide等的架構設計,學習 Kotlin 利用空餘時間開發的一款小專案,程式碼結構清晰有詳細註釋,如有任何疑問和建議請提 Issue。

https://github.com/git-xuhao/KotlinMvp

主要使用的第三方開源框架有:

  • RxJava

  • RxAndroid

  • Retrofit

  • Glide

  • Logger

  • FlycoTabLayout

  • Flexbox-layout

  • RealtimeBlurView

  • SmartRefreshLayout

  • BGABanner-Android

  • GSYVideoPlayer

可以下載體驗後,決定是否適合自己學習:

-長按我下載-

2

awesome-java-leetcode

相信不少關注者,包括我在內,演算法都是軟肋。現在面試大公司,不可避免的需要面試演算法題,演算法的能力其實是可以鍛鍊的,很好的一個途徑就是Leetcode,為了高效的練習,可以關注下該庫,包含解題思路,程式碼等。

甚至還整理了一些公司使用過的演算法的面試題~

原介紹:

我如今是一名 Android Developer,大學的我曾是一名 ACMer,我一直認為資料結構和演算法是作為一名程式設計師必須掌握和善於利用的,為了不讓資料結構和演算法淡出我的記憶,所以我打算重拾 LeetCode 之 Algorithm,語言選擇的是 Java,題庫會一點點完善起來,按簡單,中等,困難分類,相應難度下按題號排序,原始碼在 src 目錄中,相關解題都在 note 目錄中,想要學習資料結構和演算法或打算刷 LeetCode 的小夥伴們歡迎 star 哦。

https://github.com/Blankj/awesome-java-leetcode

3

NullAway

相信大家都有感受,開啟我們應用的Crash記錄平臺,榜首的大多數都是被NullPointException所佔據,Kotlin也因為很大程度的“消除NPE”而成為一些開發者選擇其作為開發語言的。

這個庫的誕生也是為了儘可能消除NPE而來,該庫是Uber用於檢測Android上的NullPointerExceptions的開源工具。

https://github.com/uber/NullAway

為了避免大家嘗試過程中遇到一些問題,下面我簡單貼一下在AS中的整合和簡單的使用方式:

環境:MAC AS3.0

專案的根build.gradle設定倉庫和classpath:

buildscript {
   ext.kotlin_version = '1.0.0'
   ext.kotlin_version = '1.1.51'
   repositories {
       google()
       jcenter()
       // 新增
       maven { url "https://plugins.gradle.org/m2/" }
   }
   dependencies {
       classpath 'com.android.tools.build:gradle:3.0.0'
       classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
       // 新增
       classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.13"
       // NOTE: Do not place your application dependencies here; they belong
       // in the individual module build.gradle files
   }
}

 

module的build.gradle:

apply plugin: 'com.android.application'
// 新增
apply plugin: 'net.ltgt.errorprone'
}
dependencies {
   //... 新增
   annotationProcessor "com.uber.nullaway:nullaway:0.2.2"
}
// 新增
tasks.withType(JavaCompile) {
   // remove the if condition if you want to run NullAway on test code
   if (!name.toLowerCase().contains("test")) {
       options.compilerArgs = ["-Xep:NullAway:ERROR", "-XepOpt:NullAway:AnnotatedPackages=com.imooc.nullawaylearn"]
   }
}

compilerArgs裡面你可以:

  • 設定為ERROR、WARN,上例設定為ERROR

  • 設定具體檢測的包名,上例設定為com.imooc.nullawaylearn


當設定為ERROR:

設定為WARN時:

> Task :nullawaylearn:compileDebugJavaWithJavac
/Users/zhanghongyang01/git-repo/mime/Studio_3_0_Test/nullawaylearn/src/main/java/com/imooc/nullawaylearn/MainActivity.java:12: 警告: [NullAway] passing @Nullable parameter 'null' where @NonNull is required
       log(null);
           ^
   (see http://t.uber.com/nullaway )
1 個警告

推薦閱讀

上一篇:開發SDK和平時寫程式碼體驗不同嗎? 

[原始碼] 推薦幾個優質的完整專案學習

如果你想要跟大家分享你的文章,歡迎投稿~

轉自:https://mp.weixin.qq.com/s/2VQsf4icbLzPPzQT8z1SjA