精华内容
下载资源
问答
  • 2018优秀的开源框架

    千次阅读 2018-06-16 18:53:28
    程序员界有个神奇的网站,那就是github,这个网站集合了一大批优秀的开源框架,极大地节省了开发者开发的时间,在这里我进行了一下整理,这样可以使我们在使用到时快速的查找到,希望对大家有所帮助!1. Retrofit ...

    程序员界有个神奇的网站,那就是github,这个网站集合了一大批优秀的开源框架,极大地节省了开发者开发的时间,在这里我进行了一下整理,这样可以使我们在使用到时快速的查找到,希望对大家有所帮助!

    1. Retrofit  

    一句话介绍:Retrofit是一款类型安全的网络框架,基于HTTP协议,服务于Android和java语言

    上榜理由:Retrofit以21.8k的stars量雄踞github中android子标题榜首,第一当之无愧。

    官网地址 http://square.github.io/retrofit/

    github https://github.com/square/retrofit

    作者:square团队

    使用:

    compile 'com.squareup.retrofit2:retrofit:2.3.0'

    2.okhttp

    一句话介绍:okhttp是一款基于HTTP和HTTP2.0协议的网络框架,服务于java和android客户端

    上榜理由,okhttp以20.4k的 stars量雄踞github中android子标题第二名。大型公司比如淘宝也封装的是okhttp。Retrofit2.0开始内置okhttp框 架,Retrofit专注封装接口完成业务需求,okhttp专注网络请求的安全高效,笔者将两者区分开,是想让后来学习者知道,这是两套框架,学习框架 原理时可以分开学习,以免理解混乱。

    官网地址 http://square.github.io/okhttp/

    github https://github.com/square/okhttp

    作者:square团队

    使用:

    compile 'com.squareup.okhttp3:okhttp:3.8.0'

       
    3.Butter Knife

    一句话介绍:Butter Knife所提供了一种能力——使用注解生成模板代码,将view与方法和参数绑定。

    上榜理由:github上16.5K个 star,配合Androidstudio提供的Butter Knife插件,帮助开发者省却了频繁findviewbyid的烦恼,最新的Butter Knife还提供了onclick绑定以及字符串的初始化,初学者可以查阅Butter Knife以及Butter Knife插件进一步学习!

    官网地址:http://jakewharton.github.io/butterknife/

    github:https://github.com/JakeWharton/butterknife

    作者:JakeWharton ,也是square团队成员之一

    使用:

    dependencies {
      compile 'com.jakewharton:butterknife:8.6.0'
      annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
    }

    4.MPAndroidChart

    一句话介绍:MPAndroidChart是一款图表框架

    上榜理由:github上16.1K个star,以快速、简洁。强大著称的图表框架

    官网地址 https://github.com/PhilJay/MPAndroidChart

    github https://github.com/PhilJay/MPAndroidChart

    作者:PhilJay

    使用:

    1. 在AS中加入Gradle依赖
    
        在根目录的 build.gradle上加入:
    
        allprojects {
            repositories {
                maven { url "https://jitpack.io" }
            }
        }

        在app的build.gradle上加入:
    
        dependencies {
            compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
        }

    5. glide

    一句话介绍:glide是一款专注于提供流畅划动能力的“图片加载和缓存框架”

    上榜理由:15.9k个star,图片加载类框架排名第一的框架,google 在2014开发者大会上演示的camera app就是基于gilde框架开发的

    github https://github.com/bumptech/glide

    作者 Bump Technologies团队

    使用:

    repositories {
      mavenCentral()
      google()
    }
    
    dependencies {
      implementation 'com.github.bumptech.glide:glide:4.5.0'
      annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'
    }

    6.leakcanary

    一句话介绍:一款内存检测框架,服务于java和android客户端

    上榜理由:方便,简洁是leakcanary最大的特点,只需在应用的apllication中集成,就可以直接使用它;15.5k个star说明了它有多么受欢迎

    github https://github.com/square/leakcanary

    作者 square团队

    使用:

     dependencies {
       debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
       releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
       testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
     }

    在 Application 中写入:
    
    
    public class ExampleApplication extends Application {
    
      @Override public void onCreate() {
        super.onCreate();
        if (LeakCanary.isInAnalyzerProcess(this)) {
          // This process is dedicated to LeakCanary for heap analysis.
          // You should not init your app in this process.
          return;
        }
        LeakCanary.install(this);
        // Normal app init code...
      }
    }

    7.Android-Universal-Image-Loader

    一句话介绍:曾经的图片加载框架王者,android开发老手都用过它

    上榜理由:android端图片加载框架的老 大哥了,15.3k个star足以证明它的热门,UIL与gilde最大区别是可定制,UIL提供了大量配置方式,图片加载状态的回调(成功,失败,进行 中),加载动画等;以及提供了移动端图片加载框架的缓存思路:三级缓存策略 sd卡-内存-网络;值得注意的是,UIL以及两年未更新了,但笔者仍推荐各位使用!

    github https://github.com/nostra13/Android-Universal-Image-Loader

    作者 nostra13

    使用:

    下载地址  universal-image-loader-1.9.5.jar

    8.EventBus

    一句话介绍:EventBus是一款本地组件间通信框架

    上榜理由:组件间通信框架star量第 一:14.8k,在大型项目的Activities,fragments,Threads,Services都可以看到它的使用场景,尽管 EventBus在向未创建的组件传递事件时有些局限,仅适合在“活着的”组件间传递消息,但仍不妨碍它活跃在各个大型项目各个场景里。

    官网地址 http://greenrobot.org/eventbus/documentation/how-to-get-started/

    github https://github.com/greenrobot/EventBus

    作者 greenrobot

    使用:

    compile 'org.greenrobot:eventbus:3.0.0'

    9.zxing

    一句话介绍:条码图像处理库

    上榜理由:如果你用过二维码,你肯定已经间接使用过大名鼎鼎的zxing了。13.9K的star量,让它排在本榜单第九,实至名归,如果你有了解二维码的需求,不妨从了解、修改它源码入手。

    github https://github.com/zxing/zxing

    作者 Sean Owen

    10.picasso

    一句话介绍:强力的图片下载、缓存框架

    上榜理由:本榜单出现的第三款图片类框架,不同的是picasso更强调图片下载,你可以将picasso集成进你的项目中,你也可以结合gilde和UIL与picasso,三者一齐封装至你的项目中,按需所用。

    官网地址 http://square.github.io/picasso/

    github https://github.com/square/picasso

    作者 square团队

    使用:

    compile 'com.squareup.picasso:picasso:2.5.2'

    11.lottie-android

    一句话介绍:一款可以在Android端快速展示Adobe Afeter Effect(AE)工具所作动画的框架

    上榜理由:动画类框架第一名,github上 13.3k个star证明了他的优越性,利用json文件快速实现动画效果是它最大的便利,而这个json文件也是由Adobe提供的After Effects(AE)工具制作的,在AE中装一个Bodymovin的插件,使用这个插件最终将动画效果生成json文件,这个json文件即可由 LottieAnimationView解析并生成绚丽的动画效果。而且它还支持跨平台哟。

    github https://github.com/airbnb/lottie-android

    作者:Airbnb 团队

    12.fresco

    一句话介绍:一款可以管理图片内存的框架

    上榜理由:github上12.8k个star,图片类排行榜第四名,facebook的出身证明了它并非是重复造的轮子,在管理图片内存领域上有着它的一片天地,渐进式加载、加载gif都是它与前三位相比独有的特性

    官网地址: https://www.fresco-cn.org/

    github https://github.com/facebook/fresco

    作者 facebook

    使用:

    dependencies {
      // 其他依赖
      compile 'com.facebook.fresco:fresco:0.12.0'
    }
    下面的依赖需要根据需求添加:
    
    
    dependencies {
      // 在 API < 14 上的机器支持 WebP 时,需要添加
      compile 'com.facebook.fresco:animated-base-support:0.12.0'
    
      // 支持 GIF 动图,需要添加
      compile 'com.facebook.fresco:animated-gif:0.12.0'
    
      // 支持 WebP (静态图+动图),需要添加
      compile 'com.facebook.fresco:animated-webp:0.12.0'
      compile 'com.facebook.fresco:webpsupport:0.12.0'
    
      // 仅支持 WebP 静态图,需要添加
      compile 'com.facebook.fresco:webpsupport:0.12.0'
    }


    13.RxAndroid

    一句话介绍:一款Android客户端组件间异步通信的框架

    上榜理由:github上12.7k个 star,位居组件通信框架的第二名,仅在EventBus之后,如果要问两者的区别,Eventbus是用来取代组件间繁琐的 interface,RxAndroid是用来取代AnsyTask的,并不冲突;当然RxAndroid的优点并不仅限于此,更多优雅的实现,可以去官 网查阅!

    github https://github.com/ReactiveX/RxAndroid

    作者 JakeWharton

    使用:

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'io.reactivex.rxjava2:rxjava:2.1.0'

    14.SlidingMenu

    一句话介绍:侧滑菜单栏框架

    上榜理由:与Userval-Image- loader 齐名的上古神器框架——为你的app提供侧滑菜单栏的功能;github闪更有10.5k个star,证明了它的经久不衰,即使在Google推出了 NavigationDrawer,仍然没有减少开发者对SildingMenu的拥簇,经典总是经得起考验的,这个上古神兽已经四年没有更新了;有太多 太多的app使用过它,这些都可以在软件的开源许可上看到!

    github https://github.com/jfeinstein10/SlidingMenu

    作者 Jeremy Feinstein

    使用:

    在gihub上fork源码,集成进项目中

    15.PhotoView

    一句话介绍:一款ImageView展示框架,支持缩放,响应手势

    上榜理由:10.3k的star数量,位于图 片类框架排行榜第五位,PhotoView与前四位不同的是这次带来的是图片的展示能力,你一定好奇微信的头像点击放大是如何实现的,很多App的图片显 示响应手势按压是如何实现的,了解PhotoView,你一定会开心的!(笔者也不会告诉你ImageView的点击放大效果在Android的 sample也有)

    github https://github.com/chrisbanes/PhotoView

    作者:chrisbanes

    使用:

    在app根目录的build.gradle中加入:
    allprojects {
        repositories {
            maven { url "https://jitpack.io" }
        }
    }
    在app的module目录的build.gralde中加入:
    
    dependencies {
        compile 'com.github.chrisbanes:PhotoView:latest.release.here'
    }

    使用

    <com.github.chrisbanes.photoview.PhotoView
        android:id="@+id/photo_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    
    
    PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
    photoView.setImageResource(R.drawable.image);

    16.material-dialogs

    一句话介绍:一款自定义dialog框架

    上榜理由:9.9k个star,也是继PhotoView,SlidingMenu之后第三款自定义View框架,也许你还是自定义View的新人,对Dialog使用的还有点生疏,你可以通过它提升你的Dilaog使用能力

    github https://github.com/afollestad/material-dialogs

    作者:Aidan Follestad

    使用:

    dependencies {
        // ... other dependencies here
        compile 'com.afollestad.material-dialogs:core:0.9.4.5'
    }

    17.droid-async-http

    一句话介绍:一款基于Http协议的异步请求的网络框架,

    上榜理由:虽然你有无数个使用retrofit+okhttp的理由,但9.8k个star,证明它仍然值得你深入学习。值得注意的是,它也已经有两年没更新了,你尽管拿去当你懒惰的理由!

    github https://github.com/loopj/android-async-http

    作者:James Smith

    使用:

    repositories {
      maven {
        url 'https://oss.sonatype.org/content/repositories/snapshots/'
      }
    }
    dependencies {
      compile 'com.loopj.android:android-async-http:1.5.0-SNAPSHOT'
    }

    18.androidannotations

    一句话介绍:一款基于注解的快速开发框架

    上榜理由:与Butterknife一样基于 注解,利用注解快速完成view的初始化,不同的是androidannotations提供了更多的能力:简单的线程模型等;笔者只接触过 Butterknife,无法更进一步叙述androidannotations的优势,如果你志在深入了解注解的妙用,可以尝试探索一下!

    官网地址 http://androidannotations.org/

    github https://github.com/androidannotations/androidannotations

    作者: WonderCsabo

    19.fastjson

    一句话介绍:一款基于json解析、生成的框架

    上榜理由:从它的名字不难看出,快速是它最大的特性,阿里巴巴的出身保证了代码的质量和优越,9.4k的star数量,也是榜单里第一个出现的中国开源框架,涉及网络的app都会用到json,fastjson值得作为你的首选!

    github https://github.com/alibaba/fastjson

    作者:alibaba

    使用:

    compile 'com.alibaba:fastjson:1.1.58.android'

    20.Material-Animations

    一句话介绍:一款提供场景转换过渡能力的动画框架

    上榜理由:Android动画框架排行榜第二 名,9.3k个star数量,与动画框架榜单第一名lottie-android不同的是,Material-Animations提供的是场景切换的动 画效果。Android 官网sample中已经提供了部分Transition (转场动画)的展示,作为初学者很难快速拓展到自己项目中,Material-Animations的示例出现为开发者省去了此类麻烦,直接照搬应用到自 己的App中吧。

    github https://github.com/lgvalle/Material-Animations

    作者:Luis G. Valle

    使用:

    down源码,修改学习

    21.tinker

    一句话介绍:它是微信官网的Android热补丁解决方案

    上榜理由:9.1k个star,微信在用的热补丁方案,心动不如行动

    官网地址 http://www.tinkerpatch.com/Docs/intro

    github https://github.com/Tencent/tinker

    作者:Tencent

    22.ViewPagerIndicator

    一句话介绍:一款基于ViewPager的页面指示器开源框架

    上榜理由:上古神器,尽管已经五年未更新了,但你仍然可以在淘宝等app中看到它的使用场景,8.9K的star量让它不愠不火的在矗立在榜单里

    官网地址 http://viewpagerindicator.com/

    github https://github.com/JakeWharton/ViewPagerIndicator

    作者:JakeWharton

    使用:

    下载 地址 https://github.com/JakeWharton/Android-ViewPagerIndicator/zipball/master

    23.Android-CleanArchitecture

    一句话介绍:一个讲解设计框架的demo

    上榜理由:它不是框架,你可以把它当作一本书,它将教会你如何设计简洁的架构,工程里有一个sample app,配合图文讲解,你将对Android客户端的架构有更深一层的认识。8.8k的star数量,证明了它是一本“好书”哟。

    github https://github.com/android10/Android-CleanArchitecture

    作者:Fernando Cejas

    24..Android-PullToRefresh

    一句话介绍:一款为普通视图提供刷新UI的视图框架

    上榜理由:8.2K的star数量使它位居刷 新类UI框架榜首,强大的兼容能力,该框架支持ListView,GrdiView,WebViewScrollView,ViewPager等众多 View增加刷新的能力,如果你有增加上拉加载,下拉加载的需求,你应该考虑它了!

    github https://github.com/chrisbanes/Android-PullToRefresh

    作者:Chris Banes

    使用:

    github fork源码,集成到项目中

    25.flexbox-layout

    一句话介绍:一款弹性伸缩布局

    上榜理由:8.1k个star,前端H5开发者转Android开发的福音,FlexboxLayout作为LinearLayout和RelativeLayout的替代者,值得各位一试,与其一同推出的还有ConstraintLayout。

    github https://github.com/google/flexbox-layout

    作者:Google

    使用:

    dependencies {
        compile 'com.google.android:flexbox:0.3.0-alpha3'
    }

    26.AndroidSwipeLayout

    一句话介绍:非常强大滑动式布局

    上榜理由:滑动删除是国产app常见需求,商品详情的上下滑动需求作为开发者的我们也经常遇到,AndroidSwipeLayout在github上拥有8K个star,证明它经受住了检验,各位值得一试

    github https://github.com/daimajia/AndroidSwipeLayout

    作者:daimajia

    使用:

    dependencies {
        compile 'com.android.support:recyclerview-v7:21.0.0'
        compile 'com.android.support:support-v4:20.+'
        compile "com.daimajia.swipelayout:library:1.2.0@aar"
    }

    27.realm-java

    一句话介绍:Realm是一款移动端数据库框架

    上榜理由:核心数据引擎C++打造,比普通的Sqlite型数据库快的多。笔者猜测正是如此,realm以7892个star数让它位于大名鼎鼎的数据库框架GreenDao(7877)之前

    官网地址:https://realm.io/cn/

    github https://github.com/realm/realm-java

    作者:Realm团队

    使用:https://realm.io/docs/java/latest/

    28.greenDAO

    一句话介绍:greenDAO是一款高效、快速的SQLite型数据库

    上榜理由:greenDAO的star数量与 Realm不相上下,且与EventBus师出同门,也是由greenrobot团队开发维护的,质量有所保证,但若拷问笔者Realm与 greenDao两者的优劣性,只能具体到实际使用当中,模拟线上的使用情形,进行高强度测试后才能下判断,故在此不能一言两语说完,深表遗憾

    官网地址:http://greenrobot.org/greendao/

    github https://github.com/greenrobot/greenDAO

    使用: 
    复制代码

    buildscript {
        repositories {
            jcenter()
            mavenCentral() // add repository
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.1'
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
        }
    }
    apply plugin: 'com.android.application'
    apply plugin: 'org.greenrobot.greendao' // apply plugin
    
    dependencies {
        compile 'org.greenrobot:greendao:3.2.2' // add library
    }

    29.stetho

    一句话介绍:一款提供在Chrome开发者工具上调试Android app能力的开源框架

    上榜理由:上古时期Android程序员要调 试本地数据库,需要进入Android Device Monitor找到/data/data/com.xxx.xxx/databases里面的db文件,导出到PC端,用PC的数据工具查看,现在使用 stetho省却了如此的麻烦;如今的Android程序员如果想调试网络请求响应过程中的报文段,需要在请求中加入Log语句,一个信息一个信息打印出 来,相当繁琐,现在请使用stetho,省却诸如此类的麻烦把!7.8K个star数,广大Android开发者调试的福音,你值得拥有!

    作者:FaceBook

    官网地址: http://facebook.github.io/stetho/

    github https://github.com/facebook/stetho

    使用:

    compile 'com.facebook.stetho:stetho:1.5.0'

    30.BaseRecyclerViewAdapterHelper

    一句话介绍:强大、流畅的Recyvlerview通用适配器

    上榜理由:如果你是RecyclerView的拥簇者,你一定要体验这款专门服务该view的适配器,7.7K个star,让这个家伙位于github上Android 适配器排行榜第一,还有很多惊喜等你去探寻!

    官网地址:http://www.recyclerview.org/

    作者:陈宇明以及他的小伙伴

    使用:

    allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }
    
    
    dependencies {
            compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE'
    }

    31.AndroidViewAnimations

    一句话介绍:一款提供可爱动画集合的框架

    上榜理由:正如作者所说,它囊括了开发需求过 程中所有的动画效果,集成进了这个简洁可爱的动画框架。7.6K的star数,证明了它在动画框架领域的战斗力,让它仅仅位列lottie- android和Material-Animations两个动画框架霸主之后,屈居第三名

    github https://github.com/daimajia/AndroidViewAnimations

    作者:daimajia

    使用:

    dependencies {
            compile 'com.android.support:support-compat:25.1.1'
            compile 'com.daimajia.easing:library:2.0@aar'
            compile 'com.daimajia.androidanimations:library:2.2@aar'
    }
    
    sample:
    
    YoYo.with(Techniques.Tada)
        .duration(700)
        .repeat(5)
        .playOn(findViewById(R.id.edit_area));

    32. MaterialDrawer

    一句话介绍:强大的塑料风格的抽屉框架

    上榜理由:7.6K的star数量,作者的持续更新状态,如果你还在犹豫上手SlidingMenu遇到bug没人管的困境,那么你可以入手它作为你的抽屉布局

    github https://github.com/mikepenz/MaterialDrawer

    作者:Mike Penz

    使用:

    compile('com.mikepenz:materialdrawer:5.9.2@aar') {
        transitive = true
    }
    
    
    
    new DrawerBuilder().withActivity(this).build();

    33.Android-ObservableScrollView

    一句话介绍:一款让视图滑动更具有视觉效果的滑动式框架

    上榜理由:7.5K的star数量,证明了它曾经的价值,github上提供了12种滑动效果,你可以用它弥补其他框架的不足,提升你的App体验!

    github https://github.com/ksoichiro/Android-ObservableScrollView

    作者:Soichiro Kashima

    使用:

    compile com.github.ksoichiro:android-observablescrollview

    34.CircleImageView

    一句话介绍:圆角ImageView

    上榜理由:也许你已经听说过无数种展示圆角图片的方法,但如果你不尝试尝试CircleImageView,那么你的知识库会因为少了它黯然失色,有的时候完成需求是开发者优先考虑的,不同实现方法牵扯到的性能差异更值得让人深思,如果你有心在图片性能上有所涉猎,那么CircleImageView绝对不会让你败兴而归。最后别忘了记得去看Romain Guy的建议哟。

    github https://github.com/hdodenhof/CircleImageView

    作者:Henning Dodenhof

    使用:

    dependencies {
        ...
        compile 'de.hdodenhof:circleimageview:2.1.0'
    }

    <de.hdodenhof.circleimageview.CircleImageView
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/profile_image"
        android:layout_width="96dp"
        android:layout_height="96dp"
        android:src="@drawable/profile"
        app:civ_border_width="2dp"
        app:civ_border_color="#FF000000"/>

    35.logger

    一句话介绍:一款让log日志优雅显示的框架

    上榜理由:logger作为调试框架,并未给 出很强大的能力,它最大的亮点是优雅的输出log信息,并且支持多种格式:线程、Json、Xml、List、Map等,如果你整日沉迷于汪洋大海般的 log信息不能自拔,logger就是你的指路明灯!6.6k个star让他位列调试框架第二名,屈居facebook的stetho之后

    github https://github.com/orhanobut/logger

    作者:Orhan Obut

    使用:

    compile 'com.orhanobut:logger:2.1.1'

    Logger.d(MAP);
    Logger.d(SET);
    Logger.d(LIST);
    Logger.d(ARRAY);
    Logger.json(JSON_CONTENT);
    Logger.xml(XML_CONTENT);

    36.agera

    一句话介绍:一款服务于Android平台的响应式编程框架

    上榜理由:google专门推出一套响应式编 程框架服务于Android开发者,相比于之响应式编程框架榜首的 RxJava RxAndroid,它更轻量,两者最大的不同点在于agera基于push event、pull data (VS Rx系列 push data)。

    github https://github.com/google/agera

    作者:Google

    使用:

      compile 'com.google.android.agera:agera:1.3.0'
    
    扩展能力
    
      compile 'com.google.android.agera:content:1.3.0'
      compile 'com.google.android.agera:database:1.3.0'
      compile 'com.google.android.agera:net:1.3.0'
      compile 'com.google.android.agera:rvadapter:1.3.0'
      compile 'com.google.android.agera:rvdatabinding:1.3.0'

    37.BottmBar

    一句话介绍:一款底部导航栏视图框架

    上榜理由:底部栏里的王者框架,6.3K的 star数量,证明了它的优秀,完全遵循材料设计规范,上手非常方便。如果说缺点,无法设置icon与titile的间距,无法自定义视图的大小等,但这 些都可以通过修改源代码解决,笔者献丑也修改了一套符合国内开发者的底部导航框架,即将开源。

    github https://github.com/roughike/BottomBar

    作者:Iiro Krankka

    使用:

    compile 'com.roughike:bottom-bar:2.3.1'

    38.Calligraphy

    一句话介绍:一款自定义字体框架

    上榜理由:如果你还在为一键修改App内所有字体样式而烦恼,6.3K个star的Calligraphy就值得你拥有,它可以同时修改整个整个项目的Textview字体,也可以单独 设置某个Textview的字体,还在等什么,快来试试吧!

    github https://github.com/chrisjenx/Calligraphy

    作者:Christopher Jenkins

    使用:

    dependencies {
        compile 'uk.co.chrisjenx:calligraphy:2.3.0'
    }

    39.AndroidSlidingUpPanel

    一句话介绍:可拖动的滑动面板视图框架

    上榜理由:如果你的项目需要一个可拖拽的滑动式面板(展示某些详情信息,播放音乐,地图信息等),那么推荐你使用它,6.3k个star,来自创业公司umano的作品,证明它是用心推出的杰作

    github https://github.com/umano/AndroidSlidingUpPanel

    作者:umano

    使用:

    dependencies {
        repositories {
            mavenCentral()
        }
    
        compile 'com.sothree.slidinguppanel:library:3.3.1'
    }

    40.AppIntro

    一句话介绍:一款提供快速制作欢迎页的框架

    上榜理由:笔者从未把打算把欢迎页框架纳入排 行榜当中,作为国内开发者,ViewPager开发App的欢迎页已经是手到擒来的需求,为何一个开源的欢迎页框架会在github上拥有6.3k个 star?也许你会不屑一顾,是的,往往就在不屑一顾的瞬间,机遇就悄悄溜走了。

    github https://github.com/apl-devs/AppIntro

    作者:Paolo Rotolo

        allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
        }
    
        dependencies {
                compile 'com.github.apl-devs:appintro:v4.2.0'
        }

    41.recyclerview-animators

    一句话介绍:一款为Recyclerview提供扩展动画能力的框架

    上榜理由:有一句老话:如果有天你失去对新事 物的兴趣,那就说明你老了。recyclerview已经推出快三年了,还在用listview的人们,是否已经发掘自己渐渐变老;不要灰心,快为你的项 目加入recyclerview-animators框架吧,为“自己”加入新鲜的血液和能量!(笔者备注:6.2K个star)

    github https://github.com/wasabeef/recyclerview-animators

    作者;https://github.com/wasabeef

    使用:

    dependencies {
      // jCenter
      compile 'jp.wasabeef:recyclerview-animators:2.2.6'
    }

    42.dagger

    一句话介绍:一款通过依赖注入降低程序间耦合的开发框架

    上榜理由:github 上dagger1版本 有6.2k个star , dagger2版本有7.3k个;由square完成的dagger1版本,到如今google团队接手的dagger2版本,强力开发团队保证了代码在 设计上的优越性;如果你想探究Android 领域的设计模式,这也是不错的选择。

    官网地址:https://google.github.io/dagger/

    github :https://github.com/google/dagger

    作者:google

    使用:

    dependencies {
      compile 'com.google.dagger:dagger:2.x'
      annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
    }
    If you're using classes in dagger.android you'll also want to include:
    
    compile 'com.google.dagger:dagger-android:2.x'
    compile 'com.google.dagger:dagger-android-support:2.x' 
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.x'

    43.Android-Bootstarp

    一句话介绍:一款提供在Android应用上实现Bootstrap(web框架)所作出效果的框架

    上榜理由:榜单上第二款响应web技术的Android 端框架,还记得第一名是谁吗——flexbox-layout,作为Android开发者,你有必要去了解Web技术了。5.9k个star,证明它不容小觑

    github https://github.com/Bearded-Hen/Android-Bootstrap

    作者:Bearded-Hen团队

    使用:

    dependencies {
       compile 'com.beardedhen:androidbootstrap:{X.X.X}'
    }

    44.RxBinding

    一句话介绍:一款提供UI组件事件响应能力的框架

    上榜理由:如果你还未开始RxAndroid 之旅,RxBinding可以作为你的第一站,通过RXBinding,你将理解响应式编程的快乐,让项目里的事件流程更清晰。5.6K个star,RxAndroid作者亲自操刀,快来试用吧!

    github https://github.com/JakeWharton/RxBinding

    作者:JakeWharton

    Platform bindings:
    
    compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
    'support-v4' library bindings:
    
    compile 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0'
    'appcompat-v7' library bindings:
    
    compile 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0'
    'design' library bindings:
    
    compile 'com.jakewharton.rxbinding2:rxbinding-design:2.0.0'
    'recyclerview-v7' library bindings:
    
    compile 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.0.0'
    'leanback-v17' library bindings:
    
    compile 'com.jakewharton.rxbinding2:rxbinding-leanback-v17:2.0.0'

    45.ListViewAnimations

    一句话介绍:一款为ListView提供动展示画效果能力的框架

    上榜理由:如果有一天我承认自己老了,我还会 排排我的兄弟——ListView,证明我和它一起战斗过。ListViewAnimations的存在就是证明我们这些“老年人”仍有用武之地,也许你 有说不出口的难处,无法体会到RecyclerView里动画的快乐,拥有ListViewAnimations,你一样可以骄傲的说,我的孩子(每个 item)也有自己的动效啦。(笔者备注 5.6K个star)

    github https://github.com/nhaarman/ListViewAnimations

    作者:nhaarman

    使用:

    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
        compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
        compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
    }

    46.UItimateRecyclerView

    一句话介绍:一款提供刷新、加载更多、动画特效等额外能力的RecyclerView框架

    上榜理由:榜单上第三次出现 RecyclerView的身影,足以证明RecyclerView的优异性,5.5K个star,框架里所提供众多的能力,如果你是个功利开发者,那么 此框架会为你节省很多学习时间,它可以完成多item式布局的大多数需求,值得注意的是,这个项目也是在其他项目的思路上二次开发的。

    github https://github.com/cymcsg/UltimateRecyclerView

    作者:MarshalChen

    使用:

    repositories {
        jcenter()
        }
    dependencies {
        ...
        compile 'com.marshalchen.ultimaterecyclerview:library:0.7.2'
    }

    47.uCrop

    一句话介绍:一款优雅的图片裁剪框架

    上榜理由:5.3K个star,图片编辑模块单独拎出来也是一款优雅的App。

    github https://github.com/Yalantis/uCrop

    作者:Yalantis

    使用:

    allprojects {
       repositories {
          jcenter()
          maven { url "https://jitpack.io" }
       }
    }
    
    compile 'com.github.yalantis:ucrop:2.2.1' 

    48.RxJava-Android-Samples

    一句话介绍:一款介绍RxJava使用场景的app

    上榜理由:榜单出现的第一个“仅仅为告诉你如何使用另一个项目”的开源项目,它可以说是RxJava的用例,你想得到的想不到的RxJava用法这里都有,这就是为什么它以5.2k个star矗立在这份榜单里的原因。遗憾自己没有创作这么一个受人追捧的demo?赶快动手写个其他的“XX项目用例吧”

    github https://github.com/kaushikgopal/RxJava-Android-Samples

    作者:kaushikgopal

    使用:

    clone到本地慢慢探索吧

    49.AndroidAutoLayout

    一句话介绍:一个提供适配能力的框架

    上榜理由:5.2K个star,鸿洋老弟的作 品,适合小项目的开发团队,拿到设计MM的px像素设计稿是不是很头疼捏?这个框架一键式搞定你的问题,它有很多的不足,但在追求完美适配的路上,你值得 探索和了解它!笔者并不推荐把它应用到已经成熟运行的项目中,毕竟市面上已经有太多的适配解决方案了,适配问题就像是个大杂烩,想炒一盘好菜,就得备好各 种佐料(适配小方案),当你把各种小佐料用的炉火纯青的时候,你离美食大厨就不远了。

    github https://github.com/hongyangAndroid/AndroidAutoLayout

    作者:张鸿洋

    使用:

    dependencies {
        compile 'com.zhy:autolayout:1.4.5'
    }

    50.EffectiveAndroidUI

    一句话介绍:一款讲解高效展示UI的教学型App

    上榜理由:编程新手很难对MVC MVP,MVVM等模式有深刻的理解,如果有一个示例型app,那对初学者会有很大裨益,笔者在遇到它时也是相见恨晚。4.8K个star,证明了它经受 了广大开发者的考验与审视,其中Effective UI的编程思想更是与Android官方课程里的Effective UI课程不谋而合,并且,此项目还包含了fragment、dagger、主题样式、Butterknife等众多小知识点,作为编程初学者的学习用例再 适合不过了

    github https://github.com/pedrovgs/EffectiveAndroidUI

    作者:Pedro Vicente

    使用:

    clone项目到本地

    51.Luban

    一句话介绍:最接近微信的图片压缩框架

    上榜理由:好的思路总是可以让你大放异彩,Luban仅以图片压缩单一功能,俘获了4.8K个star,证明了它在图片压缩上的造诣,它可能不是最优秀的,但它是让你我最接近伟大的项目

    github https://github.com/Curzibn/Luban

    作者:Curzibn

    使用:

    compile 'top.zibin:Luban:1.1.1'

    52.DroidPlugin

    一句话介绍:一款热门的插件化开发框架 
    上榜理由:4.8K个star,插件化框架榜单第一名,,360团队出品,框架质量有保证,有成功案例——360手机助手,并且持续维护着 
    github https://github.com/DroidPluginTeam/DroidPlugin/blob/master/readme_cn.md 
    作者:Andy Zhang 
    使用: 
    clone项目到本地

    53. otto

    一句话介绍:一款老旧且强大的事件总线框架 
    上榜理由:4.8K个star,是 square团队早先推出的事件响应型框架,淘宝app的事件驱动也是基于此框架封装的,如今square已经建议开发者采用RxJava RxAndroid来代替otto了。但otto仍有与EventBus横向对比的价值,纵向来说,otto与square自家开发的Rx系列框架的差异 同样值得开发者们去探究。 
    github https://github.com/square/otto 
    作者:square 
    使用:

    repositories {
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
    
    compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'

    54.u2020

    一句话介绍:一款提供Dagger的高级教学示例的app(额,名字是有点绕) 
    上榜理由:4.7K个 star,JakeWharton牵头开发的教学类app,教你使用Dagger在其他高级框架的用法,它展示了Dagger与ButterKnife、 Retrofit、Moshi、Picasso、Okhttp、RxJava、Timber、Madge、LeakCanar等众多优秀框架结合起来的高 级用法,你也可以借鉴到自己的项目当中 
    github https://github.com/JakeWharton/u2020 
    作者:JakeWharton

    55.buck

    一句话介绍:buck是一个快速构建系统 
    上榜理由:facebook+google出 身的作者,对构建代码的出色理解,加上大型团队的维护,以及增量更新时的快速高效,让buck成为了微信Android团队构建项目的首选,构建大型项目 时,它比gradle更快,然而中小公司并不适合此框架,但作为立志在框架设计领域有一番作为的人们,欢迎来一探究竟 
    官网地址:https://buckbuild.com/ 
    github https://github.com/facebook/buck 
    作者:facebook 
    使用:

    linux or mac system  +docs

    56.PermissionsDispatcher

    一句话介绍:一款基于注解的提供解决运行时危险权限方案的框架 
    上榜理由:自Android6.0 Google提出危险权限一词起,用户安全性被提到一定的高度,一些运行时对用户较为危险的权限将不再自动被开发者获取,需要经过用户批准,开发者才可以 继续使用该权限,如果你曾经被权限问题搞的抓耳挠腮,建议你试试这个框架,它足够解决你的问题 
    官网地址:https://hotchemi.github.io/PermissionsDispatcher/ 
    github https://github.com/hotchemi/PermissionsDispatcher 
    作者:Shintaro Katafuchi 
    使用:

    dependencies {
      compile('com.github.hotchemi:permissionsdispatcher:${latest.version}') {
          exclude module: "support-v13"
      }
      annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:${latest.version}'
    }

    repositories {
      jcenter()
      maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
    }

    57.android-gif-drawable

    一句话介绍:一款提供展示GIF动画能力的视图框架

    上榜理由:据我所查国内著名App——知乎使 用了android-gif-drawable,因此证明了它的存在价值,尽管在榜单第十一位介绍了lottie-android直接应用AE动画的示 例,但AE设计师不是每个公司都配备的,GIF的存在,就必然存在了展示GIF的需要,它值得你拥有!

    github https://github.com/koral–/android-gif-drawable

    作者:Karol Wrótniak

    使用:

    repositories {
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
    dependencies {
        compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.+'
    }

    58.Apktool

    一句话介绍:一款反编译apk的工具

    上榜理由:开源的反编译工具,对于志在了解apk逆向破解的诸位,值得拥有,4.5k个star,逆向破解apk神器!

    github https://github.com/iBotPeaches/Apktool

    官网地址:https://ibotpeaches.github.io/Apktool/

    作者:Connor Tumbleson

    59.dynamic-load-apk

    一句话介绍:插件化开发框架

    上榜理由:4.5k个star,位于插件化开发框架第二名(第一名来自360团队),全面的文档介绍让你很快就能上手插件化开发,如果你喜欢大段文字讲解,那么这个项目一定适合你

    github:https://github.com/singwhatiwanna/dynamic-load-apk

    作者:singwhatiwanna

    使用:

    github上的文档配合作者博客更配哟

    60.atlas

    一句话介绍:淘宝推出的组件化开发框架

    上榜理由:淘宝团队所出的精品,atlas框架提供了解耦、组件、动态的开发能力,4.5k个star让他位列组件化开发框架第一名

    github https://github.com/alibaba/atlas

    作者:alibaba

    61.volley

    一句话介绍:google推荐使用的Android端网络请求框架

    上榜理由:4.4k个star,并不是他不够优秀,而是使用volley已经渐渐成为广大开发者的习惯

    github https://github.com/google/volley(新版volley地址)

    作者:google

    使用:

    clone源码到本地

    62.androidmvp

    一句话介绍:一款展示Android端Mvp设计的demo 
    上榜理由:榜单里为数不多、仅凭展示某种设计模式就获得4.2K个star的项目,如果你有尝试mvp的打算,androidmvp可以作为你的前哨站 
    github https://github.com/antoniolg/androidmvp 
    作者:Antonio Leiva 
    使用: 
    clone到本地

    63.SwipeBackLayout

    一句话介绍:一款可以让你通过滑动手势关闭页面的的框架 
    上榜理由:仿微信滑动退出当前聊天界面的效果,提供了activity的滑动关闭能力,通过这种思路,实现fragment的滑动关闭轻而易举;笔者坚持建议诸位clone源码到本地探索一番;4.2k个star证明很多人都喜爱它 
    github https://github.com/ikew0ng/SwipeBackLayout 
    作者:ike_w0ng 
    使用:

    compile 'me.imid.swipebacklayout.lib:library:1.0.0'

    64.FlycoTabLayout

    一句话介绍:一款可以让作出多种多样指示器效果的框架

    上榜理由:尽管我们没有理由为了给app加入 页面指示器功能就集成2.5M的依赖库,但是作为了解viewpager或swip views的指示器设计原理的优秀框架,你值得打开它试试,笔者建议单独拆分所需源码,加入到自己的项目中去。4.1K个star,二次开发的作品,仍然 推荐!

    github https://github.com/H07000223/FlycoTabLayout

    作者:Flyco

    65.android-testing

    一句话介绍:一款展示四大自动化测试框架用例的demo(Espresso,UiAutomator,AndroidJunitRunner,JUnit4)

    上榜理由:学习者经常会陷入似懂非懂的境地,如果你有幸学习过Android Testing Support Library site的课程,那么你一定对android的四大测试框架迫不及待,这款demo非常适合你,快来学习这个4.1k个star的明星项目吧

    github https://github.com/googlesamples/android-testing

    作者:googlesampes团队

    66.FileDownloader

    一句话介绍:一款高效、稳定、灵活、易用的文件下载引擎

    上榜理由:4.1k证明了它有多受人喜爱,文件下载看似简单的背后暗藏了多少的坑坑点点,我知道你有能力自己实现文件下载功能,但优秀的框架可以提升你的设计编码能力,这款框架可以提升你的实力!

    github https://github.com/lingochamp/FileDownloader

    作者:LingoChamp团队

    使用:

    dependencies {
        compile 'com.liulishuo.filedownloader:library:1.5.5'
    }

    67.JieCaoVideoPlayer

    一句话介绍:基于MediaPlayer api——VideoView 的多媒体播放框架

    上榜理由:榜单里第三款多媒体播放框架,它以灵巧的身姿挤入本榜单,精巧是它最大的优点,不到100k,拥有它,你就可以快速开发类似今日头条那样的视频播放效果,4k个star,证明它值得一试

    github https://github.com/lipangit/JieCaoVideoPlayer

    作者:Nathen 
    使用:

    compile 'fm.jiecao:jiecaovideoplayer:5.5.4'

    68.glide-transformations

    一句话介绍:为众多著名图片加载框架提供图片形状变幻能力的框架 
    上榜理由:在榜单靠前的部分已经介绍过glide,Picasso,Fresco等图片加载框架,glide-transformations就是一款为他们提供图片变形能力的框架,使用起来非常简单,因此受到了大家的喜爱,github上有3.8K个star 
    github https://github.com/wasabeef/glide-transformations 
    作者:Daichi Furiya 
    使用:

    repositories {
        jcenter()
    }
    
    dependencies {
        compile 'jp.wasabeef:glide-transformations:2.0.2'
        // If you want to use the GPU Filters
        compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
    }


    在Glide里设置变幻效果
    
    Set Glide Transform.
    
    Glide.with(this).load(R.drawable.demo)
            .bitmapTransform(new BlurTransformation(context))
            .into((ImageView) findViewById(R.id.image));
    
    

    69.android-gpuimage

    一句话介绍:一款基于OpenGL的图片渲染引擎 
    上榜理由:放下GpuImage在IOS平台 的荣誉不谈,Android版的android-gpuimage就提供多达70多种图片渲染效果,你还在好奇美图秀秀是如何实现图片变幻的?有了它,一 切都不是问题。如果你是美图工具类的工程师,此框架的建设思路也会对你大有裨益。笔者也是通过android-gpuimage仿造了美图App并俘获女 友芳心的,再次为它的实力点赞。ios版+android版一共19k个star,已经证明了它的实力,还在等什么呢? 
    github:https://github.com/CyberAgent/android-gpuimage 
    作者:CyberAgent 团队 
    使用:

    repositories {
        jcenter()
    }
    
    dependencies {
        compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
    }

    更多的改造方法,还需要阅读Ios的编程文档,对于有毅力的小伙伴强力推荐!

    70.RxPermissions

    一句话介绍:一款基于RxJava完成权限申请的框架 
    上榜理由:榜单里第二款提供权服务的框架,基于RxJava的设计,让你可以专心写业务,3.7K个star已经证明了它的实用价值 
    github https://github.com/tbruyelle/RxPermissions 
    作者:Thomas Bruyelle

    使用:

    repositories {
        jcenter() // If not already there
    }
    
    dependencies {
        compile 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar'
    }

    优雅的使用:

    RxPermissions rxPermissions = new RxPermissions(this); 
    
    rxPermissions
        .request(Manifest.permission.CAMERA)
        .subscribe(granted -> {
            if (granted) { // I can control the camera now
            } else {
               // Oups permission denied
            }
        });

    71.freeline

    一句话介绍:一款动态替换的编译构建框架

    上榜理由:继Facebook的Buck,Androdi官方的InstRun之后,蚂蚁金服推出了Freeline编译框架,官网宣称Freeline与业内主流构建方式相比仍然有数倍的速度领先;排行有先后,编译速度并不在本榜单排序的考据因素中,因此freeline以3.7个star,暂列编译框架第二名

    官网地址:https://www.freelinebuild.com/

    github:https://github.com/alibaba/freeline

    作者:alibaba

    使用:

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.antfortune.freeline:gradle:0.8.7'
        }
    }
    
    apply plugin: 'com.antfortune.freeline'
    
    android {
        ...
    }
    
    File → Settings... → Plugins → Browse repositories →freeline.

    72.RxLifecycle

    一句话介绍:一款提供在使用RxJava过程中管理Activity和Fragment生命周期能力的框架

    上榜理由:在榜单靠前的部分,你已经了解 RxJava和RxAndroid的强大之处,但部分粗心的开发者因为没有及时取消订阅而产生严重的内存泄漏,不要担心,RxLifecycle可以为你 解决难题,在gtihub上拥有3.7K个star,国内知名软件——知乎和淘宝也都在使用它

    github https://github.com/trello/RxLifecycle

    作者:trello团队

    使用:

    clone源码到本地

    73.classyshark

    一句话介绍:一款可执行文件浏览器

    上榜理由:榜单里继Apktool之后第二款apk逆向工具,如果你喜欢优雅的图形数据展示,那么你一定不能错过他,classyshark可以将破解的结果以图形化展示用户,方便分析,3.7K个star,让它暂列apk逆向工具第二位!

    github https://github.com/google/android-classyshark

    作者:google

    使用:

    下载 JAR

    74.acra

    一句话介绍:一款提供记录APP崩溃日志能力的框架

    上榜理由:如果你面临着收集APP崩溃日志的需求,那么acra是个不错的选择。3.7K个star,让acra位列崩溃日志框架排行榜第一名,acra有足够的能力记录线上APP,并且发回服务端,acra也提供了相当棒的崩溃日志统计服务端框架Acralyzer,cralyzer工作在Apache CouchDB之上,所以除了CouchDB之外,没有必要安装任何额外的软件,移动端开发者也可以借此学习服务端的建设,一举两得!

    github https://github.com/ACRA/acra

    服务端github https://github.com/ACRA/acralyzer

    作者:acra团队

    使用:

    没有什么方法比clone源码到本地更方便了

    75.DiskLruCache

    一句话介绍:一款提供磁盘文件缓存管理能力的框架

    上榜理由:3.7k个star并不足以说明 DiskLruCache的优秀,仅仅以管理磁盘文件能力单独拎出来成为一个框架,作者需要很大的勇气,很幸运,作者做到了,并且也成为Google官网 提倡的缓存 ;如还记得上次做“一键清除缓存”、“查看缓存文件大小”功能是什么时候吗?DiskLruCache一句话就可以搞定!

    github https://github.com/JakeWharton/DiskLruCache

    作者:JakeWharton

    使用:

    compile 'com.jakewharton:disklrucache:2.0.2'
    • 1

    76.dexposed

    一句话介绍:一款支撑阿里大部分App客户端热修复、线上调试能力的框架

    上榜理由:榜单上再次出现热修复框架的身影, 证明App热修复技术的火热,dexposed提供图形化的性能监控、在线热修复bug漏洞、支持AOP编程思想等,不论你是企业热修复技术的设计者还是 打算在热修复领域一探究竟的新人,这款框架很适合你。3.5k个star,证明它作为一门技术框架的存在,是多么令人喜爱!

    github https://github.com/alibaba/dexposed

    作者:alibaba

    使用:

    dependencies {
            compile 'com.taobao.android:dexposed:0.1.1@aar'
        }
    
    

    77.Litho

    一句话介绍:一款提供高效构建UI能力的框架

    上榜理由:作为一款专门构建UI的框架,Litho高效的地方在于:单独开辟了用于渲染和布局的线程,然后将创建好的组件传递给UI线程去完成最终的渲染,使用更少的视图层级,来提升界面的滚动速度,值得注意的是,它仅支持开发者作出不可改变的UI组件 ,3.5K个star,证明了它在构建UI领域的价值,更多的妙处,期待你亲自去发掘!

    github https://github.com/facebook/litho

    作者:facebook

    使用:

    ependencies {
      // ...
      // Litho
      compile 'com.facebook.litho:litho-core:0.3.1'
      compile 'com.facebook.litho:litho-widget:0.3.1'
      provided 'com.facebook.litho:litho-annotations:0.3.1'
    
      annotationProcessor 'com.facebook.litho:litho-processor:0.3.1'
    
      // SoLoader
      compile 'com.facebook.soloader:soloader:0.2.0'
    
      // Optional
      // For debugging
      debugCompile 'com.facebook.litho:litho-stetho:0.3.1'
    
      // For integration with Fresco
      compile 'com.facebook.litho:litho-fresco:0.3.1'
    
      // For testing
      testCompile 'com.facebook.litho:litho-testing:0.3.1'
    }

    78.mosby

    一句话介绍:一款提供构建MVP项目能力的框架

    上榜理由:榜单靠前的部分已经介绍了 MVC,MVVM,MVP的框架项目,想必此时你在构建企业项目架构上,选择或者开发一款合适的MVP框架迫在眉睫,mosby可以作为你的第一步参考, 你可以封装它,也可以照抄它,无论如何,3.4K个star,证明了它在框架设计上有多受开发者的喜爱

    github https://github.com/sockeqwe/mosby

    作者:Hannes Dorfmann

    使用:

    dependencies {
    
      compile 'com.hannesdorfmann.mosby3:mvi:3.0.4' // Model-View-Intent
      // or
      compile 'com.hannesdorfmann.mosby3:mvp:3.0.4' // Plain MVP
      // or
      compile 'com.hannesdorfmann.mosby3:viewstate:3.0.4' // MVP + ViewState support
    }

    allprojects {
      repositories {
        ...
    
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }

    79.AndResGuard

    一句话介绍:一款提供资源文件路径混淆 的工具

    上榜理由:如果你是个对APK大小很敏感的人,那么AndResGuard一定适合你,它的原理类似Java Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a,3.4K个star,证明了在优化APK道路上,你不是一个人在战斗!

    github https://github.com/shwenzhang/AndResGuard

    作者:wechat team

    使用:

    clone项目到本地,其实也就是个三两句话的文档

    80.StatusBarUtil

    一句话介绍:一款提供设置沉浸式状态栏样式能力的框架

    上榜理由:设计师MM总是抱怨系统状态栏不优雅?那就给她一个完美的沉浸式状态栏。StatusBarUtil可以随心所欲的设置状态栏样式,3.3K个star,足以说明它有多受设计MM的喜爱

    github https://github.com/laobie/StatusBarUtil

    作者:Jaeger

    使用:

    compile 'com.jaeger.statusbarutil:library:1.4.0'
    • 1

    81.robolectric

    一句话介绍:一款不依赖于Android设备的单元测试框架,

    上榜理由:sample中列举了如何对Android四大组件和常见功能测试的用例,3.2K个star,值得充满好奇心的人尝试

    官网地址:http://robolectric.org/

    github https://github.com/robolectric/robolectric

    作者:robolectric

    使用:

    testCompile "org.robolectric:robolectric:3.3.2"
    • 1

    82.Fragmentation

    一句话介绍:一款提供管理Fragmen嵌套t能力的框架

    上榜理由:对于Activity和 Fragment使用,你一定得心应手,但如果要做一套通用的Activity&Fragment嵌套设计,想必你有点手足无措 了,Fragmentation可以作为你设计Fragment管理上的第一步,3.2K个star,笔者认为有点名副其实了,项目介绍里说的是 Fragment的管理能力,但并未提供Fragment&Activity生命周期、任务栈的管理能力,因此很难直接应用到企业项目当中,但源 码当中的设计思路,值得笔者与诸位借鉴,拾人牙慧留有余香!

    github:https://github.com/YoKeyword/Fragmentation

    作者:YoKey

    使用:

    // appcompat v7包是必须的
    compile 'me.yokeyword:fragmentation:0.10.7'
    // 如果想使用SwipeBack 滑动边缘退出Fragment/Activity功能,请再添加下面的库
    // compile 'me.yokeyword:fragmentation-swipeback:0.10.4'
    
    

    83.Small

    一句话介绍:轻巧的插件化框架

    上榜理由:作为插件框架榜单的新成员,Small的优点是轻巧,适合作为小团队的插件开发方案,3.1K个star,让它获得了酷狗音乐等著名开发团队的青睐,如果你们的团队想逐步实施插件化开发,Small是个不错的选择!

    官网地址:http://code.wequick.net/Small/cn/cases

    github https://github.com/wequick/Small

    作者:wequick 团队

    使用:

    buildscript  {
        dependencies {
            classpath 'net.wequick.tools.build:gradle-small:1.2.0-alpha6'
        }
    }
    
    apply plugin: 'net.wequick.small'
    
    small {
        aarVersion = '1.2.0-alpha6'
    }

    84.JsBridge

    一句话介绍:一款提供WebView和Javascript通信能力的框架

    上榜理由:该框架提供给了允许H5页面调用通过JS调用App方法的能力;3.1K个star,简洁的通讯方式,值得每一个Web\Hybrid App开发者尝试

    gtihub https://github.com/lzyzsd/JsBridge

    作者:hi大头鬼hi

    使用:

    repositories {
        // ...
        maven { url "https://jitpack.io" }
    }
    
    dependencies {
        compile 'com.github.lzyzsd:jsbridge:1.0.4'
    }

    85.richeditor-android

    一句话介绍:一款强大的富文本编辑框架

    上榜理由:2.8k个star,榜单里第一个为TextView提供扩展能力的框架,你暂时不需要它,但不能不知道它

    github https://github.com/wasabeef/richeditor-android

    作者:Daichi Furiya

    使用:

    repositories {
        jcenter()
    }
    
    dependencies {
        compile 'jp.wasabeef:richeditor-android:1.2.2'
    }

    86.Transitions-Everywhere

    一句话介绍:一款教你正确使用Transitions API(Android 转场动画API)的教学型项目

    上榜理由:你可能还未尝试过Android API的Transitions 框架,可能听过,但却无法做出优雅奇妙的动效——别担心,Transitions-Everywhere正如它的名字一样,它将带你全面体验Transitions 的强大之处

    github https://github.com/andkulikov/Transitions-Everywhere

    作者:Andrey Kulikov

    使用:

    dependencies {
        compile "com.andkulikov:transitionseverywhere:1.7.4"
    }

    87.android-viewbadger

    一句话介绍:能够快速的为Android 视图加入“勋章”能力的框架

    上榜理由:如果说勋章一词听起来陌生,那么显 示已读未读个数、小红点标记信息这一类词语你一定不太陌生,笔者相信在诸位实际开发中经常遇到为某些item加入小红点标记的需求,聪明的各位一定有着各 种实现方案,为什么不能快速优雅的完成呢?android-viewbadger可以帮你实现,当然,在某些情况下,你需要具备修改源码的能力,以符合设 计MM的需求!值得注意的是,这宽项目已经五年没有更新了!

    github https://github.com/jgilfelt/android-viewbadger

    作者:Jeff Gilfelt

    使用:

    clone源码到本地
    
    View target = findViewById(R.id.target_view);
    BadgeView badge = new BadgeView(this, target);
    badge.setText("1");
    badge.show();

    88.AndroidWiFiADB

    一句话介绍:一款不用数据线也可以让你调试手机设备APP的插件项目

    上榜理由:你是否还在担心测试过程中高强度的拔插数据线对手机电池和USB端口造成终生难以弥补的损害?别担心,有wifi有AndroidWiFiADB,无须数据线也可以调试应用了,更有趣的是,在测试工程师一边拿着手机一边找你聊bug的时候,你已经偷偷在它的手机上修复了bug,深藏功与名!

    github https://github.com/pedrovgs/AndroidWiFiADB

    作者:Pedro Vicente Gómez Sánchez

    使用:

    Preferences/Settings->Plugins->Browse Repositories->serch AndroidWiFiADB

    89.emojicon

    一句话介绍:一款提供在TextView、EdiText展示表情包能力的框架

    上榜理由:2.7k个star,,榜单第二款增强TextView显示能力的框架,这款专为表情包设计,如果你曾经好奇微信、QQ的表情显示是如何做到的?这款框架一定能满足你的求知欲。

    90.packer-ng-plugin

    一句话介绍:一款打爆工具插件

    上榜利用:笔者尽力维护榜单涉及范围的全面性,因此引入此插件项目——项目号称完成100个渠道包只需要10秒钟,在市面上各种各样多渠道打包方案的今天,选择一款适合自己团队的,才是上上选择

    github https://github.com/mcxiaoke/packer-ng-plugin

    作者:Xiaoke Zhang

    使用:

    buildscript {
        ......
        dependencies{
        // add packer-ng
            classpath 'com.mcxiaoke.gradle:packer-ng:1.0.9'
        }
    } 

    
    
    
    apply plugin: 'packer' 
    
    dependencies {
        compile 'com.mcxiaoke.gradle:packer-helper:1.0.9'
    } 
    
     android {
        //...
        signingConfigs {
          release {
              // 满足下面两个条件时需要此配置
              // 1. Gradle版本 >= 2.14.1
              // 2. Android Gradle Plugin 版本 >= 2.2.0
              // 作用是只使用旧版签名,禁用V2版签名模式
            v2SigningEnabled false 
          }
        }
      }


    91.android-priority-jobqueue

    一句话介绍:一款提供后台任务管理能力的框架

    上榜理由:如果你是个志在深入研究多线程操作 的开发者,这个项目一定不要错过,不论是Activity重新加载、Service使用线程池时的任务优先级和并发问题,都不要担心,Job Manage会照顾优先级,持久性,负载平衡,延迟,网络控制,分组,2.4K个star,优秀的多线程管理能力,况且它依赖的第三方框架很少,值得你一 试

    github https://github.com/yigit/android-priority-jobqueue

    作者:Yigit Boyar

    92.Android-Debug-Database

    一句话介绍:一款提供测试App内部数据库能力的框架

    上榜理由:榜单里第二款针对调试数据库的框架,一行代码集成,直接在浏览器增删改查App的数据库,2.3k个star,心动不如行动!

    github https://github.com/amitshekhariitbhu/Android-Debug-Database

    作者:AMIT SHEKHAR

    使用:

    debugCompile 'com.amitshekhar.android:debug-db:1.0.0'
    • 1

    浏览器键入

     http://XXX.XXX.X.XXX:8080
    • 1

    93.conceal

    一句话介绍:一款facebook提供的加密本地大文件的框架

    上榜理由:如果还在担心App内的图片的隐私问题,这款facebook提供的文件加密框架足以解决你的问题,facebook客户端的图片和数据都是使用conceal加密的

    官网地址:http://facebook.github.io/conceal/

    github https://github.com/facebook/conceal

    作者;facebook

    使用:

    clone项目到本地/官网下载jar

    94.ARouter

    一句话介绍:一款提供服务、页面跳转路由的框架

    上榜理由:正如作者宣称的那样,该框架提供:从外部URL映射到内部页面、跨模块的页面跳转(页面解耦)、拦截跳转过程等能力,还有更多功能等你去发掘,2.1K个star,值得为企业级的框架喝彩

    github https://github.com/alibaba/ARouter

    作者:alibaba

    使用:

    ndroid {
        defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
            arguments = [ moduleName : project.getName() ]
            }
        }
        }
    }
    
    dependencies {
        // 替换成最新版本, 需要注意的是api
        // 要与compiler匹配使用,均使用最新版可以保证兼容
        compile 'com.alibaba:arouter-api:x.x.x'
        annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
        ...
    }
    // 旧版本gradle插件(< 2.2),可以使用apt插件,配置方法见文末'其他#4'
    // Kotlin配置参考文末'其他#5'

    95.MagicaSakura

    一句话介绍:一款提供多主题切换能力的框架

    上榜理由:框架所提供的能力,一直是本榜单所看重的,这款由bilibili提供的多主题框架,作为榜单所涉及范围能补充,1.9个star,感谢bilibili团队所作出的贡献!

    github https://github.com/Bilibili/MagicaSakura

    作者:Bilibili

    使用:

    compile 'com.bilibili:magicasakura:0.1.6@aar'

    96.CustomActivityOnCrash

    一句话介绍:一款当APP crash的时候自动载入某个Activity的框架(而不是显示Unfortunately, X has stopped)

    上榜理由:新奇的创意是榜单所需要的,所以它 赢得了1.8K个star;作为开发者应该拥有考虑到各种潜伏的bug的能力,但我们不能总是面面俱到,其他系统端的同事也可能造成程序的意外 crash,因此,如何让程序优雅的crash->重启值得我们思考,这款框架就提供了这种能力

    github https://github.com/Ereza/CustomActivityOnCrash

    作者:Eduard Ereza Martínez

    使用:

    dependencies {
        compile 'cat.ereza:customactivityoncrash:2.1.0'
    }
    
    
    添加到 Application class:

    @Override
    public void onCreate() {
        super.onCreate();
    
        CaocConfig.Builder.create()
            .backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) 
            .enabled(false) //default: true
            .showErrorDetails(false) //default: true
            .showRestartButton(false) //default: true
            .trackActivities(true) //default: false
            .minTimeBetweenCrashesMs(2000) //default: 3000
            .errorDrawable(R.drawable.ic_custom_drawable) //default: bug image
            .restartActivity(YourCustomActivity.class) //default: null (your app's launch activity)
            .errorActivity(YourCustomErrorActivity.class) //default: null (default error activity)
            .eventListener(new YourCustomEventListener()) //default: null
            .apply();
    }


    97.XhsEmoticonsKeyboard

    一句话介绍:最开心的开源表情解决方案

    上榜理由:如果你还在发愁如何为你的APP自制键盘,那么此框架非常适合你,而且还提供表情包展示能力,1.7个star证明了它的独特。此外作者还附赠了高仿微信键盘,QQ键盘的demo,分享给诸位

    github https://github.com/w446108264/XhsEmoticonsKeyboard

    作者:zhongdaxia

    使用:

    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
        }
    }
    
    
    dependencies { 
        compile 'com.github.w446108264:XhsEmoticonsKeyboard:2.0.4'
    }

    98. Android-ObservableScrollView

    一款让视图滑动更具有视觉效果的滑动式框架,在 GitHub 上提供了 12 种滑动效果,可以用来提升 App 的滑动体验

    GitHub 地址:https://github.com/ksoichiro/Android-ObservableScrollView

    转载地址:http://blog.csdn.net/angle0306/article/details/78900051

    展开全文
  • 阿里主流开源框架大汇总

    千次阅读 2020-01-18 22:02:21
    Java 解析、生成 Excel 比较有名框架有 Apache poi、jxl 。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 ...

    Fastjson

    fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器。

    快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson);强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum);零依赖(没有依赖其它任何类库除了JDK)。

    地址:https://github.com/alibaba/fastjson

    Druid

    Druid 是 Java 语言下的数据库连接池,数据库密码加密,SQL执行日志,它能够提供强大的监控和扩展功能。

    地址:https://github.com/alibaba/druid

    Dubbo

    Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

    • Provider 暴露服务方称之为“服务提供者”。
    • Consumer 调用远程服务方称之为“服务消费者”。
    • Registry 服务注册与发现的中心目录服务称之为“服务注册中心”。
    • Monitor 统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。

    地址:https://github.com/apache/dubbo

    Spring Cloud Alibaba

    Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

    依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。

    地址:https://github.com/alibaba/spring-cloud-alibaba

    Cobar

    Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。

    地址:https://github.com/alibaba/cobar

    TDDL

    TDDL (Taobao Distributed Data Layer)是一套分布式数据访问引擎,具有主备,读写分离,动态数据库配置等功能。

    三层架构(可独立使用):

    • Matrix(TDataSource)实现分库分表逻辑,持有多个Group实例;
    • Group(TGroupDataSource)实现数据库的主备切换,读写分离逻辑,持有多个Atom实例;
    • Atom(TAtomDataSource)实现数据库ip,port,password,connectionProperties等信息的动态推送,持有原子的数据源(分离的Jboss数据源)。

    地址:https://github.com/alibaba/tb_tddl

    RocketMQ

    RocketMQ是一款分布式、队列模型的消息中间件,是阿里巴巴集团自主研发的消息中间件,借鉴参考了JMS规范的MQ实现,更参考了优秀的开源消息中间件KAFKA,实现了业务消峰、分布式事务的优秀框架。其底层代码编写清晰优秀,采用Netty NIO框架进行数据通信。摒弃了Zookeeper,内部使用更轻量级的NameServer进行网络路由,提高服务性能,并且支持消息失败重试机制。天然支持集群模型,消费者负载均衡、水平扩展能力,支持广播模式和集群模式。采用零拷贝的原理、顺序写盘、支持亿级消息堆积能力。提供丰富的消息机制,如顺序消息、事务消息等。

    地址:http://rocketmq.apache.org/

    Tbschedule

    TBSchedule是一个支持分布式的调度框架,让批量任务或者不断变化的任务能够被动态的分配到多个主机的JVM中,在不同的线程组中并行执行,所有的任务能够被不重复,不遗漏的快速处理。基于ZooKeeper的纯Java实现,由Alibaba开源。

    地址:https://blog.csdn.net/yangxiaobo118/article/details/79229694

    JStorm

    JStorm是一个基于ZK的分布式实时计算引擎。JStorm是一个类似于Hadoop MapReduce的系统,用户按照指定的接口实现一个任务,然后将这个任务交给JStorm系统,JStorm将这个任务跑起来,并按7*24小时运行。如果中间一个worker发生了意外故障,调度器立即分配一个新的worker来替换这个失效的worker。

    地址:https://github.com/alibaba/jstorm

    Nacos

    Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

    Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

    地址:https://github.com/alibaba/nacos

    Seata

    Simple Extensible Autonomous Transaction Architecture,简易可扩展的自治式分布式事务管理框架,其前身是fescar。阿里巴巴GTS的开源版实现,是一种分布式事务的解决方案。

    seata主要由三个重要组件组成:

    • Transaction Coordinator(TC):管理全局的分支事务的状态,用于全局性事务的提交和回滚。
    • Transaction Manager™:事务管理器,用于开启全局事务、提交或者回滚全局事务,是全局事务的开启者。
    • Resource Manager(RM):资源管理器,用于分支事务上的资源管理,向TC注册分支事务,上报分支事务的状态,接受TC的命令来提交或者回滚分支事务。

    地址:https://github.com/seata/seata

    Sentinel

    Sentinel 是面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

    只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。

    地址:https://github.com/alibaba/Sentinel

    yugong

    阿里巴巴去Oracle数据迁移同步工具(全量+增量,目标支持MySQL/DRDS)。

    过程描述:

    • 增量数据收集 (创建oracle表的增量物化视图)
    • 进行全量复制
    • 进行增量复制 (可并行进行数据校验)
    • 原库停写,切到新库

    地址:https://github.com/alibaba/yugong

    canal

    canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)

    基于日志增量订阅&消费支持的业务:

    • 数据库镜像
    • 数据库实时备份
    • 多级索引 (卖家和买家各自分库索引)
    • search build
    • 业务cache刷新
    • 价格变化等重要业务消息

    地址:https://github.com/alibaba/canal

    otter

    基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库。 一个分布式数据库同步系统

    地址:https://github.com/alibaba/otter

    AliSQL

    AliSQL 是基于 MySQL 官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。AliSQL 版本在强度和广度上都经历了极大的考验。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。AliSQL 增加更多监控指标,并针对电商秒杀、物联网大数据压缩、金融数据安全等场景提供个性化的解决方案。“在通用基准测试场景下,AliSQL 版本比 MySQL 官方版本有着 70% 的性能提升。在秒杀场景下,性能提升 100 倍。”

    地址:https://github.com/alibaba/AliSQL

    OceanBase

    OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。

    地址:https://oceanbase.alipay.com/

    Tair

    Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。

    TFS

    TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化。

    AliRedis(计划开源)

    AliRedis是阿里团队针对Redis日常维护中出现的不足而在Redis原有基础上做出的深度改进。具体而言,AliRedis采用多线程master + N*work 工作模式,并且抛弃save, bgsave, aof等三种原有的模式.采用redisDB lock模式,除此之外,它还优化了jemalloc, 采用大内存页。

    Wasp

    Wasp 是类Google MegaStore & F1的分布式关系数据库。它是分布式的、支持SQL的、事务型数据库。

    ADFS

    ADFS(Ali Distributed File System)是基于hadoop开源分布式系统HDFS的一种优化 实现,能够将HDFS中单点master namenode节点中的内存数据结构利用高速存储介质同步到磁盘中,同时能够提供很高的吞吐和性能。

    QLExpress

    由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 在阿里集团有很强的影响力,同时为了自身不断优化、发扬开源贡献精神,于2012年开源。

    地址:https://github.com/alibaba/QLExpress

    Arthas

    Arthas是一款线上问题诊断工具。使用场景:

    • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
    • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
    • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
    • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
    • 是否有一个全局视角来查看系统的运行状况?
    • 有什么办法可以监控到JVM的实时运行状态?

    地址:https://github.com/alibaba/arthas

    EasyExcel

    Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl 。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel 重写了 poi 对 07 版 Excel 的解析,能够原本一个 3M 的 excel 用 POI sax 依然需要 100M 左右内存降低到 KB 级别,并且再大的 excel 不会出现内存溢出,03 版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。

    地址:https://github.com/alibaba/easyexcel

    P3C

    项目包含三部分:PMD 实现、IntelliJ IDEA 插件、Eclipse 插件

    地址:https://github.com/alibaba/p3c

    Uploader

    Uploader是非常强大的异步文件上传组件,支持ajax、iframe、flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证、图片预览、进度条等,广泛应用于淘宝网,比如退款系统、爱逛街、二手、拍卖、我的淘宝、卖家中心、导购中心等。

    地址:https://github.com/kissygalleryteam/uploader

    DataX

    DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

    地址:https://github.com/alibaba/DataX

    Dragonwell

    Alibaba Dragonwell 是阿里巴巴内部OpenJDK定制版AJDK的开源版本, AJDK为在线电商,金融,物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。 Alibaba Dragonwell与Java SE标准兼容,目前仅支持 Linux/x86_64平台。

    地址:https://github.com/alibaba/dragonwell8

    Tsar

    Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据(nginx、swift等),收集到的数据存储在服务器磁盘上,可以随时查询历史信息,也可以将数据发送到nagios报警。

    Tsar能够比较方便的增加模块,只需要按照tsar的要求编写数据的采集函数和展现函数,就可以把自定义的模块加入到tsar中。

    地址:https://github.com/alibaba/tsar

    Tengine

    Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性,是目前全球9 大流行web server之一。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

    地址:http://tengine.taobao.org/

    AnyProxy

    AnyProxy是阿里巴巴基于 Node.js 开发的一款开源代理服务器。

    代理服务器位于客户端和服务端的中间,它可以收集双方通信的每个bit。一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务所使用的代理协议,请求对目标服务器创建连接或者获取目标服务器的指定资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应。

    AnyProxy 是完全可以灵活配置的代理服务器。它支持 https明文代理 ,且提供了 Web 界面便于观测请求情况,同时支持二次开发,可以用 JavaScript 来控制代理的全部流程,搭建前端个性化调试环境。

    地址:https://github.com/alibaba/anyproxy

    Freeline

    Android 平台上的秒级编译工具,可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeline 最快捷的使用方法就是直接安装 Android Studio 插件。

    地址:https://github.com/alibaba/freeline

    SimpleImage

    SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。

    地址:https://github.com/alibaba/simpleimage

    tclip

    自动识别头像的图片裁剪项目。

    特点:

    • 能进行人脸识别。图片中有人脸,将自动视为人脸区域为重要区域,将不会被裁剪掉。
    • 自动识别其它重要区域。如果图片中未识别出人脸,则会根据特征分布计算出重区域。 总而言之,自动识别图片中的重要区域,并且在图片裁剪时保留重要区域。
    • 加水印。

    地址:https://github.com/exinnet/tclip

    ice

    飞冰(ICE)诞生于阿里巴巴内部大量的中后台业务,我们在中后台场景沉淀了大量的物料、工具及经验,同时也抽象出一套从物料到项目的完整开发流程。

    特性:

    • 🔥可视化开发:通过 IDE 简化前端工程复杂度,同时通过适配器可接入不同的项目工程进行可视化管理,定制专属的前端工作台
    • 💯丰富的物料:基于物料拼装提高项目开发效率,同时提供丰富的 React/Vue 物料
    • 🎩最佳实践:结合丰富的经验沉淀出的项目开发最佳实践,包括目录结构、开发调试、路由配置、状态管理等
    • 🐳自定义物料:通过物料开发者工具快速开发构建私有物料体系

    地址:https://github.com/alibaba/ice/

    tblive

    tblive开源项目对应的产品是千牛主播,是一个独立的PC端主播工具,基于开源软件OBS Studio来修改定制,增强了交互和功能上的可用性,同时引入统一登陆sdk(UnifiedAuthSDK.dll),可以支持淘宝账号的验证以及免登url的拼接,能更好的支持淘系webview页面。

    地址:https://github.com/alibaba/tblive

    AndFix

    AndFix,全称"Andriod hot-fix",是阿里开源的 Android 应用热修复工具,用来帮助 Android 开发者修复应用的线上问题。AndFix实现原理是方法体的替换,目前支持的平台有Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。

    地址:https://github.com/alibaba/AndFix


    收集高并发、分布式系统架构、微服务、消息中间件、 RPC框架、本地缓存、分布式缓存、搜索、分布式数据框架、分布式协同服务、分布式配置中心等技术资料

    关注公众号,后台回复“中台”,下载PDF学习资料

    如有收获,请划至底部,点击“在看”,谢谢!欢迎长按下图关注公众号:【微观技术】

    在这里插入图片描述

    展开全文
  • Android开发常用开源框架

    万次阅读 多人点赞 2018-08-22 11:37:41
    Android开源框架系列 Android开源项目 Android开发常用开源框架2 Android开发常用开源框架3 GitHub上最火的Android开源项目,所有开源项目都有详细资料和配套视频 2017年伊始,你需要尝试的25...

    Android开源框架系列

    开源框架

    开源框架

    开源框架

    https://github.com/JackChan1999/Android_Open_Project

    目录

    Square& JakeWharton

    框架名称功能描述
    Picasso一个强大的图片下载与缓存的库
    OkHttpSquare出品,一个Http与Http/2的客户端
    RetrofitSquare出品,类型安全的Http客户端
    ButterKnife将Android视图和回调方法绑定到字段和方法上
    sqlbrite一个响应式的数据查询框架
    keywhiz一个隐私管理分配系统,能很好地与SOA配合
    LeakCanary内存泄漏检测工具
    javapoet动态生成Java源码
    phrase字符串格式化
    dagger依赖注入框架
    FlowFlow 将一个应用分成一个逻辑上的 Screen组合,Screen不是任何形式的特殊的库对象,而是一个被创造来代表我们应用视图的普通java对象(POJO)
    MortarMortar是一个专注拖拽和依赖注入的库,Mortar 用以下几个不同的部分将一个应用分为可组合的模块:Blueprints, Presenters and a boatload of custom Views
    RxBinding可以实现数据层与View层的绑定,当数据发生变化,View会自动更新UI
    RxAndroidRxJava的扩展, 优雅地处理异步请求
    timber对Android的Log类进行封装后的一个Log工具
    ViewPagerIndicatorPaging indicator widgets compatible with the ViewPager
    DiskLruCacheJava实现基于LRU的磁盘缓存
    OttoOtto 是 Square 公司出的一个事件库 (pub/sub 模式), 用来简化应用程序组件之间的通讯, otto 修改自 Google 的 Guava 库, 专门为 Android 平台进行了优化, 与上面介绍的 EventBus 相比, 两个库各有各的优点, 完全取决于我们自己项目的需求来选择它们哪一个
    javapoetA Java API for generating .java source files 动态生成Java源码

    阿里巴巴

    项目名称功能描述
    freelineFreeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeline能够为Android开发者节省很多喝杯咖啡的时间
    weexA framework for building Mobile cross-platform UI
    fastjsonA fast JSON parser/generator for Java
    DubboDubbo is a distributed, high performance RPC framework enpowering applications with service import/export capabilities
    AndFixAndFix is a library that offer hot-fix for Android App.
    dexposeddexposed enable ‘god’ mode for single android application.

    小米开源项目

    项目名称功能描述
    Notes小米便签社区开源版
    FileExplorerMIUI文件管理器社区开源版
    SoundRecorderMIUI录音机社区开源版

    Google开源项目

    项目名称功能描述
    GCMGoogle Cloud Messaging 消息推送
    iosched:Google I/O Android App
    android-topekaGoogle官方给出的material design应用指南
    android-UniversalMusicPlayerGoogle官方给出的m音乐播放器,支持Android phones, tablets, Auto, Wear and Cast devices
    ExoPlayerAn extensible media player for Android
    guavaGoogle Core Libraries for Java 6+
    flexbox-layoutFlexboxLayout is a library project which brings the similar capabilities of CSS Flexible Box Layout Module to Android.
    guice轻量级的依赖注入框架
    gsonA Java serialization/deserialization library that can convert Java Objects into JSON and back.
    protobufProtocol Buffers - Google’s data interchange format
    material-design-iconsMaterial Design icons by Google
    autoAuto 是 Java 生成器源代码集合,包括:AutoFactory - 兼容 JSR-330 的工厂;AutoService - ServiceLoader 的 Provider-configuration 文件;AutoValue - Java 1.6+ 的不可变 value-type 代码生成;Common - Helper 实用工具,用来编写注释处理器
    android-architectureA collection of samples to discuss and showcase different architectural tools and patterns for Android apps

    android-topeka

    categories.pngcategory_history.pngquiz_shakespeare.png

    android-UniversalMusicPlayer

    phone.pngphone_lockscreen.pngphone_fullscreen_player.png

    ExoPlayer

    An extensible media player for Android

    Streaming media with ExoPlayer - Google I/O 2016

    guava

    flexbox-layout

    flex-direction.gif

    1、图片加载,缓存,处理

    框架名称功能描述
    Android Universal Image Loader一个强大的加载,缓存,展示图片的库,已过时
    Picasso一个强大的图片下载与缓存的库
    Fresco一个用于管理图像和他们使用的内存的库
    Glide一个图片加载和缓存的库,使用的App有:网易新闻
    GlidePaletteAndroid Lollipop Palette is now easy to use with Glide
    PicassoPaletteAndroid Lollipop Palette is now easy to use with Picasso !
    Picasso-transformations一个为Picasso提供多种图片变换的库
    Glide-transformations一个为Glide提供多种图片变换的库


    Picasso是著名的开源组织Square出品的图片处理框架,使用的比较多

    Glide是Google的员工基于Picasso开发,优化的,Android官网推荐使用的图片处理框架

    Fresco是Facebook开源的图片处理框架,真正做到了三级缓存,功能强大,强烈推荐使用

    Android Universal Image Loader是一个老牌的图片处理框架,但是在2015年的9月份已经停止更新维护,所以不推荐使用

    2、图片裁剪

    框架名称功能描述
    uCropImage Cropping Library for Android,使用的App有:薄荷,哔哩哔哩
    android-crop图片裁剪,使用的App有:网易新闻,芒果TV
    cropper图片裁剪开源框架
    Android-Image-CropperImage Cropping Library for Android, optimized for Camera / Gallery
    PhotoCropperAndroid 大图片裁剪终极解决方案
    android-cropimageCropImage Activity from Gallery.apk packaged as a reusable Android library
    PhotoCropA Library which can be used to crop images in Android similar to Facebook and Telegram,使用的App有:快手

    uCrop

    android-crop

    Android-Image-Cropper

    PhotoCropper

    PhotoCrop

    3、图片选择

    框架名称功能描述
    MultiImageSelector图片选择,使用的App有:薄荷
    BGAPhotoPicker-AndroidAndroid 图片选择、预览、九宫格图片控件、拖拽排序九宫格图片控件
    TakePhoto轻量级Android照片处理框架
    RxGalleryFinalAndroid图片单选/多选、拍照、裁剪、压缩。视频选择和录制。GalleryFinal
    boxing一个多媒体选择器库,B站出品。可以选择一张或者多张图片,提供预览和裁剪功能。同样支持gif图,选择视频和图像压缩功能。

    boxing

    multi_image.webpsingle_image_crop.webpvideo.webp

    MultiImageSelector

    BGAPhotoPicker-Android

    TakePhoto

    预览图
    运行效果图

    RxGalleryFinal

    4、图片转换,压缩,滤镜

    框架名称功能描述
    Android-gpuimage一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜,使用的App有:快手
    photoview使用的App有:薄荷,网易新闻
    circleimageview圆形图片,使用的App有:薄荷
    RoundedImageView圆形图片,使用的App有:薄荷
    SelectableRoundedImageViewAndroid ImageView that supports different radii on each corner
    android-gif-drawablegif图片,使用的App有:网易新闻,快手
    Luban可能是最接近微信朋友圈的图片压缩算法
    CompressorCompressor is a lightweight and powerful android image compression library

    Android-gpuimage

    circleimageview

    68747470733a2f2f7261772e6769746875622e636f6d2f68646f64656e686f662f436972636c65496d616765566965772f6d61737465722f73637265656e73686f742e706e67

    RoundedImageView

    SelectableRoundedImageView

    )

    5、高斯模糊,毛玻璃,图片模糊

    框架名称功能描述
    android-stackblurAndroid StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann.
    BlurryBlurry is an easy blur library for Android
    blurkit-androidThe missing Android blurring library. Fast blur-behind layout that parallels iOS.
    BlurViewDynamic iOS-like blur of underlying Views for Android
    ImageBlurringAndroid blurring image(bitmap) by java and jni

    android-stackblur

    68747470733a2f2f7261772e6769746875622e636f6d2f6b696b6f736f2f616e64726f69642d737461636b626c75722f6d61737465722f6172742f73637265656e73686f74312e706e6768747470733a2f2f7261772e6769746875622e636f6d2f6b696b6f736f2f616e64726f69642d737461636b626c75722f6d61737465722f6172742f73637265656e73686f74322e706e67

    Blurry

    blurkit-android

    BlurView

    BlurScreenshot.png

    ImageBlurring

    anim.gif

    缓存

    框架名称功能描述
    LruCacheAndroid原生API,内存缓存
    DiskLruCacheJava实现基于LRU的磁盘缓存
    ASimpleCache一个为android制定的轻量级的开源缓存框架
    base-diskcacheAndroid 缓存库,融合了DiskLruCache和ASimpleCache

    网络请求

    框架名称功能描述
    httpclientapache开源的网络请求框架,已过时
    AsyncHttpClient基于httpclient封装,已过时
    OkHttpSquare出品,一个Http与Http/2的客户端
    RetrofitSquare出品,类型安全的Http客户端
    VolleyGoogle推出的Android异步网络请求框架和图片加载框架,使用的App有:网易新闻


    从Android 6.0 开始,Google删除了apache的开源网络请求框架httpclient,所以基于httpclient的AsyncHttpClient也不推荐使用了

    Volley适合那些请求频繁但数据量不大的场景,不适用于大数据的请求,比如下载文件

    Android 6.0 后,Android开始使用OkHttp,而Retrofit是一个网络代理框架,可以更简单的使用OkHttp

    网络解析

    框架名称功能描述
    Gson一个Java序列化/反序列化库,可以将JSON和java对象互相转换
    JacksonJackson可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象
    FastjsonJava上一个快速的JSON解析器/生成器
    HtmlPaser一种用来解析单个独立html或嵌套html的方式
    Jsoup一个以最好的DOM,CSS和jQuery解析html的库

    数据库

    框架名称功能描述
    OrmLiteJDBC和Android的轻量级ORM java包
    Sugar用超级简单的方法处理Android数据库
    GreenDAO一种轻快地将对象映射到SQLite数据库的ORM解决方案,使用的App有:薄荷,京东
    ActiveAndroid以活动记录方式为Android SQLite提供持久化
    SQLBriteSQLiteOpenHelper 和ContentResolver的轻量级包装
    android-database-sqlcipher数据库加密
    storioBeautiful API for SQLiteDatabase and ContentResolver
    realm-java移动数据库,高性能数据库:一个SQLite和ORM的替换品
    ObjectBox相信不少人都用过GreenDao和EventBus,这两库都是greenrobot公司出品。ObjectBox也是该公司出品。GreenDao号称是最快的与SQLite的对象关系映射(ORM)。但是自从2011年以来,公司声称发现了许多的缺陷,有很多问题影响了性能。所以开发出另外一套性能最好且易用的NoSQL数据库,优于其他数据库5-15倍的性能。

    依赖注入

    框架名称功能描述
    ButterKnife将Android视图和回调方法绑定到字段和方法上
    Dagger2一个Android和java快速依赖注射器
    AndroidAnotations快速安卓开发。易于维护
    RoboGuiceAndroid平台的Google Guice 已退役
    guiceGoogle开发的依赖注入框架

    图表Chart

    框架名称功能描述
    WilliamChart创建图表的Android库
    HelloCharts兼容到API8的Android图表库,使用的App有:薄荷
    MPAndroidChart一个强大的Android图表视图/图形库,使用的App有:春雨医生

    后台处理

    框架名称功能描述
    Tape一个轻快的,事务性的,基于文件的FIFO的库
    Android Priority Job Queue一个专门为Android轻松调度任务的工作队列

    事件总线

    框架名称功能描述
    EventBus安卓优化的事件总线,简化了活动、片段、线程、服务等的通信,使用的App有:薄荷
    Otto一个基于Guava的增强的事件总线
    HermesEventBus一个基于EventBus的、能在进程间发送和接收event的库,在IPC或者插件开发中非常有用

    响应式编程

    框架名称功能描述
    RxJavaJVM上的响应式扩展
    RxJavaJoins为RxJava提供Joins操作
    RxAndroidAndroid上的响应式扩展,在RxJava基础上添加了Android线程调度
    RxBinding提供用RxJava绑定Android UI的API
    AgeraAndroid上的响应式编程
    RxLifecycleLifecycle handling APIs for Android apps using RxJava

    Log框架

    框架名称功能描述
    Logger简单,漂亮,强大的Android日志工具
    Hugo在调试版本上注解的触发方法进行日志记录
    Timber一个小的,可扩展的日志工具

    测试框架

    框架名称功能描述
    MockitoJava编写的Mocking单元测试框架
    RobotiumAndroid UI 测试
    RobolectricAndroid单元测试框架


    Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等

    调试框架

    框架名称功能描述
    Stetho调试Android应用的桥梁,使得可以利用Chrome开发者工具进行调试

    性能优化

    框架名称功能描述
    LeakCanary内存泄漏检测工具
    BlockCanary轻松找出Android App界面卡顿元凶
    ACRAAndroid应用程序崩溃报告
    Google GuavaGuava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。
    google protobuf由google开发,并且在google内部使用。Protobuf的作用和xml、json是一回事,但他是二进制格式,性能好、效率高。ProtoBuf开发者指南

    热修复

    框架名称功能描述
    tinker腾讯开源的一个热修复框架
    AndFixalibaba热修复框架
    dexposedalibaba热修复框架

    二维码

    框架名称功能描述
    Zxing一个二维码开源框架
    barcodescanner使用的App有:薄荷
    BGAQRCode-Android扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
    zxing-android-embedded使用的App有:春雨医生,芒果TV

    多媒体

    框架名称功能描述
    ijkplayerBilibili开源的视频播放器
    DanmakuFlameMasterAndroid开源弹幕引擎·烈焰弹幕使,使用的App有:网易新闻
    Vitamio一款全能多媒体开发框架,全面支持硬件解码与 GPU 渲染
    FFmpeg一个基于C语言的多媒体开源框架
    百度媒体云基于百度视频处理、人脸识别、语音等技术媒体相关的整体解决方案
    ExoPlayerGoogle开源的视频播放器

     

    KSYStreamer_Android

    金山云Android采集推流SDK(Livestream SDK),支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)、连麦(RTC)、动态贴纸(Sticker)

    KSYMediaPlayer_Android

    金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode

    KSYLive_Android

    Android播放&推流融合版本[Android Play and LiveStreaming SDK] 直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode, 支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)

    KSYMediaPlayer_Android

    金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode

    MD360Player4Android

    Android上全景视频渲染的库

    MD360Player4Android

    汉语转拼音

    框架名称功能描述
    pinyin4jhttps://github.com/belerweb/pinyin4j
    TinyPinyin适用于Java和Android的快速、低内存占用的汉字转拼音库。
    PinyinSearchLibraryThe library of PinyinSearch,a Java Library which provide data parsing methods, data matching method and so on for T9 search and Qwerty search.PinyinSearch = T9Search + QwertySearch
    com.pinyin4android唯品会使用

    下载

    框架名称功能描述
    MultiThreadDownload使用的App有:薄荷
    FileDownloaderAndroid 文件下载引擎,稳定、高效、灵活、简单易用
    RxDownload基于RxJava和Retrofit打造的下载工具, 支持多线程下载和断点续传, 智能判断是否支持断点续传等功能
    file-downloader安卓上轻量级Http/Https文件下载框架,我的目标是让安卓文件下载越简单越好,尽可能以最简洁明了的方式完成复杂需求。

    动画

    框架名称功能描述
    facebook:reboundA Java library that models spring dynamics and adds real world physics to your app
    ViewAnimatorA fluent Android animation library
    Material-AnimationsAndroid Transition animations explanation with examples
    AndroidViewAnimationsCute view animation collection.
    ListViewAnimationsAn Android library which allows developers to easily add animations to ListView items
    recyclerview-animatorsAn Android Animation library which easily add itemanimator to RecyclerView items.
    RecyclerViewItemAnimatorsAn Android library which provides simple Item animations to RecyclerView items
    AnimationEasingFunctionsAndroid Animation Easing Functions. Let’s make animation more real!
    BaseAnimationBaseAnimation收集网络Android相关动画集合,自定义控件等,近200多种源码
    FragmentAnimations3D animations for support-v4 Fragment transition.
    AnimatedEditTextAndroids EditText that animates the typed text. EditText is extended to create AnimatedEditText and a PinEntryEditText.
    ViewPagerTransformsLibrary containing common animations needed for transforming ViewPager scrolling for Android v13+
    lottie-androidRender After Effects animations natively on Android and iOS

    Android选择器类库

    包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等

    框架名称功能描述
    material-calendarviewmaterial design 风格的日历控件使用的App有:薄荷
    MaterialDateTimePickerPick a date or time on Android in style,使用的App有:薄荷
    android-times-squareStandalone Android widget for picking a single date from a calendar view.
    AndroidPicker安卓选择器类库,包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等。
    Android-PickerView仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果
    WheelPickerSimple and fantastic wheel view in realistic effect for android.
    Android-FilePickerPhotopicker and document picker for android
    NumberPickerViewanother NumberPicker with more flexible attributes on Android platform
    Android-PickerView-LibrarySimple PickerView for Android

    Rajawali

    Rajawali是一个用于Android应用的3D引擎,基于 OpenGL ES 2.0。它可以用于普通的应用程序,以及实时壁纸。使用的App有:网易新闻

    aspectj

    AspectJ是一个面向切面的框架,它扩展了Java语言。使用的App有:网易新闻

    Apache Thrift

    可伸缩的跨语言服务开发框架,使用的App有:网易新闻

    Fabric SDK

    https://realm.io/cn/news/oredev-ty-smith-building-android-sdks-fabric/?utm_source=tuicool&utm_medium=referral

    GNU Trove

    Trove 是一个快速、轻量级 Collection 类的集合。Trove 提供所有标准 java.util Collections 类的更快的版本以及能够直接在原语(primitive)(例如包含 int 键或值的 Map 等)上操作的 Collections 类的版本。使用的App有:网易新闻

    Java-WebSocket

    简单的说,websocket就是用来做网页聊天以及手机推送用的。使用的App有薄荷

    以前不管使用HTTP轮询或使用TCP长连接等方式制作在线聊天系统,都有天然缺陷,随着HTML5的兴起,其中有一个新的协议WebSocket protocol,可实现浏览器与服务器全双工通信(full-duplex),它可以做到:浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。这个新的协议的特点正好适合这种在线即时通信。

    现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

    而最比较新的技术去做轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求。

    在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

    org.eclipse.mat

    内存分析。使用的App有薄荷,网易新闻

    CommonAdapter

    使用的App有:薄荷

    Android-Best-Practices

    JKeyboardPanelSwitch

    Android键盘面板冲突 布局闪动处理方案

    起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的Smart bar等, 后来逐一完善了,考虑到拥抱开源,看业界还是有很多应用存在类似问题。就有了这个repo

    使用的App有:薄荷

    美洽

    最快连接你与顾客 美洽,在线客服软件的漂亮之选

    MeiqiaSDK-Android https://github.com/Meiqia/MeiqiaSDK-Android

    使用的App有:薄荷

    logger

    使用的App有:薄荷

    DeepLinkDispatch

    最常见的应用就是在网页中跳转到App的某个页面,电商类应用可是都用了的。根据data跳转不同的页面

    使用的App有:京东

    Crouton

    Context sensitive notifications for Android

    Bolts-Android 一个底层库集合

    com.arcsoft.livebroadcast

    ReLinker

    Relink是一个加载Android so文件(shared library)的一个库。

    在Android平台上加载本地库的危险性

    kik

    CHAT ON KIK

    Kik lets you connect with friends, 
    groups and the world around you 
    through chat. And now, you can 
    chat with bots too.

    nanohttpd

    嵌入式HTTP服务器 ,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。

    i-jetty

    jetty经过交叉编译移植到android平台的web服务器软件,它可以部署web网站

    com.googlecode.mp4parser

    Sparta

    com.hp.hpl.sparta:XML、DOM、XPath解析器,http://sparta-xml.sourceforge.net/

    JRegex

    JRegex:jregex:正则表达式库

    NativeSubprocess

    唯品会使用

    NativeSubprocess 是一个可以让你在android 程序中创建Linux子进程并执行你的java代码的so库。由于市面上典型的内存清理工具只清理apk 包关联的进程,而不会处理linux原生进程,所以NativeSubprocess 可以做什么您懂的!

    androidquery

    Android-Query(AQuery)是一个轻量级的开发包,用于实现 Android 上的异步任务和操作 UI 元素,可让 Android 应用开发更简单、更容易,也更有趣。

    唯品会使用,https://github.com/androidquery/androidquery

    MarsDaemon

    进程常驻,进程保活

    唯品会使用 https://github.com/Marswin/MarsDaemon

    SA-iSecurity

    SA-iSecurity 客户端安全输入系统,唯品会使用

    口碑推荐平台TapReason

    TapReason提供了一款无广告的App增长解决方案。他们的广告是最值得信赖的,因为这些广告都是来自于好友或同事的推荐。唯品会使用

    ImageViewZoom

    Android ImageView widget with zoom and pan capabilities,春雨医生使用

    LayoutCast

    Cast android code and resource changes to the running application through ADB. 
    Android SDK sucks. It’s so slow to build and run which waste me a lot of time every day.

    把代码和资源文件的改动直接同步到手机上,应用不需要重启。省去了编译运行漫长的等待,比较适合真机调试的时候使用。

    Joda-Time

    JodaTime 提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。

    Joda-Time主要的特点包括:

    1. 易于使用:Calendar让获取”正常的”的日期变得很困难,使它没办法提供简单的方法,而Joda-Time能够 直接进行访问域并且索引值1就是代表January。
    2. 易于扩展:JDK支持多日历系统是通过Calendar的子类来实现,这样就显示的非常笨重而且事实 上要实现其它日历系统是很困难的。Joda-Time支持多日历系统是通过基于Chronology类的插件体系来实现。
    3. 提供一组完整的功能:它打算提供 所有关系到date-time计算的功能.Joda-Time当前支持6种日历系统,而且在将来还会继续添加。有着比JDK Calendar更好的整体性能等等。

    https://github.com/JodaOrg/joda-time

    msgpack

    MessagePack是一个基于二进制高效的对象序列化Library用于跨语言通信。 
    它可以像JSON那样,在许多种语言之间交换结构对象;但是它比JSON更快速也更轻巧。 比Google Protocol Buffers还要快4倍

    https://github.com/msgpack/msgpack-java

    scribejava

    ScribeJava 是一个简单的 Java 实现的 OAuth/OAuth2 库。

    Logback

    Logback是由log4j创始人Ceki Gülcü设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。

    frame-video-view

    No more issues with VideoView

    JakeWharton scalpel

    Jake Wharton,Android开发领域传奇一般的存在,熟悉Android开发的同学应该都听说过,即便没有,也应该会经常用到他主导或参与贡献的开源 项目,他在GitHub上开源了多个Android兼容性、依赖注入相关的知名项目,目前就职Square, 也参与贡献了Square公司开源的诸如Retrofit, okhttp等热门项目。

    Jake大神喜欢以刀命名自己的项目,可能他觉得这能很好的表达它们作为开发利器的犀利程度,不过没准他也很喜欢中国武侠小说呢。

    他最有名的两把刀,一把是Dagger, 匕首,一个依赖注入框架,用来解耦开发中各模块依赖的,最早由他开发与维护,后来转给Google维护;另一把是同样大名鼎鼎的ButterKnife, 黄油刀,有了它,你再也不用写findViewById了,以后有机会给大家详细介绍它们。

    今天的主角是它们不那么知名的小兄弟,Scalpel,这把非常酷炫实用的解剖刀。

    他其实就是实现了一个三维效果的界面布局层次展示,不需要手机连接开发设备,只需要简单几行代码将其集成到你的应用中,即可开启酷炫之旅,它提供的功能包括:

    • 通过setLayerInteractionEnabled(boolean)可开启与关闭此功能。

    • 通过setDrawViews(boolean)可控制是否绘制View, 也就是说它可以仅仅是个简单的布局线框图,也可以是色彩丰富的真实效果图。

    • 通过setDrawIds(boolean)可控制是否显示各控件的Id, 你就能知道你自己正在调试的那个控件到底在哪了?

    • 通过setChromeColor,setChromeShadowColor可自定义线框图的颜色,随你喜欢。

    material-camera

    https://github.com/afollestad/material-camera

    material-camera

    hawk

    Android的安全、简单Key-Value存储

    bugsnag

    Bugsnag crash reporting for Android apps ,Bugsnag exception reporter for Android

    goldengate

    An Android annotation processor for generating type safe JavaScript bindings (Bridges)

    Helpshift

    slf4j

    SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

    Nuwa热修复

    Nuwa, pure Java implementation, can hotfix your android application.

    Android 热修复Nuwa的原理及Gradle插件源码解析

    megvii人脸识别

    RadiusNetworks

    http://www.radiusnetworks.com/

    https://github.com/RadiusNetworks

    Swiper

    • 开源,免费,强大的移动端触摸滑动插件

    • Swiper常用于移动端网站的内容触摸滑动

    • Swiper3依然拥有progress,这是制作3D切换效果的利器

    • 在Swiper上加些小动画,制作高大上的展示

    Netty

    Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

    也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

    “快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项目,最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。

    cheesesquare:Demos the new Android Design library

    FBReaderJ

    FBReaderJ是一个Android 平台上的电子书阅读器。这是一个Java版的FBReader图书阅读器的克隆。 FBReaderJ支持多种电子书格式: oeb , epub ,和fb2 。直读从zip、tar和gzip等格式

    hawtdispatch

    HawtDispatch is a small ( less than 100k ) thread pooling and NIO handling framework API modeled after the libdispatch API. libdispatch is the API that Apple created to power the Grand Central Dispatch (GCD) technology in OS X. It allows you to more easily develop multi-threaded applications which can more easily scale to take advantage of all the processing cores on your machine. At the same time, its development model simplifies solving many of the problems that plague multi-threaded NIO development.

    ZeroMQ 一个轻量级消息内核

    autobahn-android

    WebSocket & WAMP in Java for Android

    Robotium

    Robotium 是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长 按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测 试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。

    One Step & Big Bang

    锤子科技的一小步,智能手机进化的一大步


    什么是一步(One Step)?

    通过拖拽完成将信息发送至应用或联系人的动作,节省了在不同应用之间切换的诸多步骤,第一次打通了手持设备中应用间的边界

    进一步了解 One Step

    什么是大爆炸(Big Bang)?

    用拇指大面积按压屏幕中的文字,Big Bang 会将你按住的那一段文字全部“炸”开并且按照语义智能拆分成易于选取的独立的字和词,由你随心所欲地选择,并可直接搜索、分享和复制。Big Bang 开创性地解决了在手机这样的小屏幕上难于处理文字的弊端

    展开全文
  • 系统框架展示: 三、LOAM 论文解读 《LOAM:Lidar Odometry and Mapping in Realtime》 LOAM是激光雷达slam中鼎鼎有名的,一套基于线面特征的前端框架。 使用一个三维空间中运动的两轴激光雷达来构建实时激光里程计...

    01

    Slam概述 

    SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”.

    SLAM的典型应用领域:

    机器人定位导航领域-地图建模, VR/AR方面-辅助增强视觉效果, 无人机领域-地图建模, 无人驾驶领域-视觉里程计。

    SLAM框架:

    传感器数据:主要用于采集实际环境中的各类型原始数据。包括激光扫描数据、视频图像数据、点云数据等。

    视觉里程计:主要用于不同时刻间移动目标相对位置的估算。包括特征匹配、直接配准等算法的应用。

    后端:主要用于优化视觉里程计带来的累计误差。包括滤波器、图优化等算法应用。

    建图:用于三维地图构建。

    回环检测:主要用于空间累积误差消除

    其工作流程大致为:

    传感器读取数据后,视觉里程计估计两个时刻的相对运动(Ego-motion),后端处理视觉里程计估计结果的累积误差,建图则根据前端与后端得到的运动轨迹来建立地图,回环检测考虑了同一场景不同时刻的图像,提供了空间上约束来消除累积误差。

    基于传感器的SLAM分类

    基于激光雷达的激光SLAM(Lidar SLAM)和基于视觉的VSLAM(Visual SLAM)。

    1.激光SLAM

    激光SLAM采用2D或3D激光雷达(也叫单线或多线激光雷达),2D激光雷达一般用于室内机器人上(如扫地机器人),而3D激光雷达一般使用于无人驾驶领域。激光雷达的出现和普及使得测量更快更准,信息更丰富。激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常,激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,也就完成了对机器人自身的定位。

    激光雷达测距比较准确,误差模型简单,在强光直射以外的环境中运行稳定,点云的处理也比较容易。同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。激光SLAM理论研究也相对成熟,落地产品更丰富。

    2.视觉SLAM

    眼睛是人类获取外界信息的主要来源。视觉SLAM也具有类似特点,它可以从环境中获取海量的、富于冗余的纹理信息,拥有超强的场景辨识能力。早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。近年来,随着具有稀疏性的非线性优化理论(Bundle Adjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。

    视觉SLAM的优点是它所利用的丰富纹理信息。例如两块尺寸相同内容却不同的广告牌,基于点云的激光SLAM算法无法区别他们,而视觉则可以轻易分辨。这带来了重定位、场景分类上无可比拟的巨大优势。同时,视觉信息可以较为容易的被用来跟踪和预测场景中的动态目标,如行人、车辆等,对于在复杂动态场景中的应用这是至关重要的。

    融合激光+视觉

    激光SLAM和视觉SLAM各擅胜场,单独使用都有其局限性,而融合使用则可能具有巨大的取长补短的潜力。例如,视觉在纹理丰富的动态环境中稳定工作,并能为激光SLAM提供非常准确的点云匹配,而激光雷达提供的精确方向和距离信息在正确匹配的点云上会发挥更大的威力。而在光照严重不足或纹理缺失的环境中,激光SLAM的定位工作使得视觉可以借助不多的信息进行场景记录。

    SLAM与SFM的区别与联系

    SFM即Structure From Motion

    传统三维重建,这是一门计算机视觉学科的分支, 特点是把数据采集回来,然后离线处理.常见应用就是重建某建筑物的3d地图。

    区别:

    SFM是vision方向的叫法,而SLAM是robotics方向的叫法。

    SLAM所谓的Mapping, SFM叫structure;SLAM所谓的Location, SFM方向叫camera pose。

    从出发点考虑,SFM主要是要完成3D reconstuction,而SLAM主要是要完成localization

    从方法论的角度上考虑, SFM不要求prediction的,real-time是不要求的.但是对于SLAM而言prediction是必须的,SLAM的终极目标是real-time navigation。

    SLAM要求实时,数据是线性有序的,无法一次获得所有图像,部分SLAM算法会丢失过去的部分信息;基于图像的SFM不要求实时,数据是无序的,可以一次输入所有图像,利用所有信息.

    SLAM是个动态问题,会涉及到滤波,运动学相关的知识,而SFM主要涉及的还是图像处理的知识。

    联系:

    基本理论是一致的,都是多视角几何;

    传统方法都需要做特征值提取与匹配;

    都需要优化投影误差;

    回环检测和SfM的全局注册方法是同一件事情。

    02

    代表性的SLAM算法 

    •VINS-Mono MONO SLAM https://github.com/HKUST-Aerial-Robotics/VINS-Mono

    •ORB-SLAM2 RGBD SLAM https://github.com/raulmur/ORB_SLAM2

    •LOAM Laser SLAM https://github.com/laboshinl/loam_velodyne

    •MaskFusion Semantic SLAM https://github.com/martinruenz/maskfusion

    •BundleFusion Dense 3D Reconstruction https://github.com/niessner/BundleFusion

    一、VINS-Mono

    论文解读

    近年来的发展趋势为用低成本惯性测量单元(IMU)辅助单目视觉系统.

    单目视觉-惯性系统(VINS)的主要优点是具有可观测的度量尺度,以及翻滚角(roll)和俯仰角(pitch)。这让需要有尺度的状态估计的导航任务成为可能。

    IMU测量值的积分可以显著提高运动跟踪性能,弥补光照变化、缺少纹理的区域或运动模糊的视觉轨迹损失的差距。

    原文的解决方案的核心是一个鲁棒的基于紧耦合的滑动窗非线性优化的单目视觉惯性里程计(VIO)。

    1、一个鲁棒的初始化过程,它能够从未知的初始状态引导系统。

    2、一个紧耦合、基于优化的单目视觉惯性里程计,具有相机-IMU外部校准和IMU偏置估计。

    3、在线回环检测与紧耦合重定位。

    4、四自由度全局位姿图优化。

    5、用于无人机导航、大规模定位和移动AR应用的实时性能演示。

    6、完全集成于ros的pc版本以及可在iphone 6或更高版本上运行的IOS版本的开源代码。

    源码解析

    Visual-Inertial融合定位算法.

    VINS-Mono主要包含两个节点: 前端节点feature_tracker_node和后端节点estimator_node。

    前端节点处理Measurement Preprocessing中的Feature Detection and Tracking, 其他几个部分(IMU preintegration, initialization, LocalBA, Loop closure)都是在estimator_node中处理。

    二、ORB-SLAM2

    论文解读

    ORB-SLAM2是基于单目,双目和RGB-D相机的一套完整的SLAM方案。在实时和标准的CPU的前提下能够进行重新定位和回环检测,以及地图的重用。在实验当中,我们关心的是在大场景中建立可用的地图和长期的定位。与此前的SLAM方案进行对比,在大多数的情况下,ORB-SLAM2展现出一样好的精确程度。

    视觉SLAM仅仅通过一个单目相机就能够完成。单目相机也是最便宜也是最小巧的传感器设备。然而深度信息无法从单目相机中观测到,地图的尺度和预测轨迹是未知的。此外,由于不能从第一帧当中进行三角测量化,单目视觉SLAM系统的启动往往需要多个视角或者滤波技术才能产生一个初始化的地图。最后,单目SLAM可能会造成尺度漂移,以及在探索的过程中执行纯旋转的时候可能会失败。通过使用一个双目或者RGB-D相机将会解决这些问题,并且能够成为一种更加有效的视觉SLAM的解决方案。

    在这篇文章当中,在单目ORB-SLAM[1]的基础上提出ORB-SLAM2,有以下贡献:

    1. 这是首个基于单目,双目和RGB-D相机的开源SLAM方案,这个方案包括,回环检测,地图重用和重定位。

    2. 我们的RGB-D结果说明,光速法平差优化(BA)比ICP或者光度和深度误差最小方法的更加精确。

    3. 通过匹配远处和近处的双目匹配的点和单目观测,我们的双目的结果比直接使用双目系统更加精确。

    4. 针对无法建图的情况,提出了一个轻量级的定位模式 ,能够更加有效的重用地图。

    系统框架展示:

    三、LOAM

    论文解读

    《LOAM:Lidar Odometry and Mapping in Realtime》

    LOAM是激光雷达slam中鼎鼎有名的,一套基于线面特征的前端框架。

    使用一个三维空间中运动的两轴激光雷达来构建实时激光里程计。

    提出可以同时获得低漂移和低复杂度计算,并且不需要高精度的测距和惯性测量。

    核心思想是分割同时定位和建图的复杂问题,寻求通过两个算法同时优化大量变量。:

    一个是执行高频率的里程计但是低精度的运动估计,另一个算法在一个数量级低的频率执行匹配和注册点云信息。将这两个算法结合就获得高精度、实时性的激光里程计。

    使用以6自由度运动的2轴雷达的距离测量值。

    难点:不同时间接收到的距离测量值以及运动估计的误差会导致点云的误匹配.

    以高频率但低保真度执行测距法以估计激光雷达的速度+以较低的数量级频率运行,以进行点云的精确匹配和配准

    结果表明,该方法可以在最先进的离线批处理方法水平上实现准确性。

    主要贡献: 是把同时定位与建图(SLAM)技术分为两部分,一个是高频率(10HZ)低精度的里程计odometry过程,另一个是低频率(1HZ)高精度的建图mapping过程,二者结合可实现低漂移、低计算量、高精度的SLAM。

    Lidar Odometry:分为特征点提取Feature Point Extraction和特征点关联 Finding Feature Point Correspondence两部分。

    • 特征点提取:在激光雷达每一次sweep中,根据曲率对点进行排序,作为评价特征点局部表面光滑性的标准。曲率最大的为边缘点,曲率最小的为平面点,每个局部提取2个边缘点和4个平面点。

    • 特征点关联:使用scan-to-scan方式,分为边缘点匹配和平面点匹配两部分。计算点到直线的距离和点到平面的距离。

    • 姿态解算:根据匹配的特征点云估计接收端位姿。

    • Lidar Mapping:低频率建图,前面获得相邻帧的姿态变换,接下来要和全局地图进行匹配,将其加入到全局地图中。

    源码解析

    LOAM源码主要由四个节点构成,分别完成特征点提取,高频低精度odom, 低频高精度odom, 双频odom融合的功能,每个节点以rosnode的形式存在, 也就是说是独立的进程,进程间通过rostopic传递点云, odom等数据。实际上, 四个节点的执行顺序完全是串行的,很容易改成单进程的版本。

    四、MaskFusion

    -与Mask-RCNN的关联(有使用到)。

    多个运动目标进行实时识别、跟踪和重构。

    一个实时的、对象感知的、语义的和动态的RGB-D SLAM系统, 超越传统的输出静态场景的纯几何地图的系统。

    尽管取得了这些进步,SLAM方法及其在增强现实中的应用在两个领域中仍处于非常初级的阶段。

    1. 大多数SLAM方法依赖于这样一种假设,即环境大多是静态的,移动的对象最多只能被检测为异常值并被忽略。可以处理任意动态和非刚性的场景仍然是一个开放的挑战。

    2. 大多数SLAM系统提供的输出是一个纯粹的环境几何图。近期才出现添加语义信息的工作,并且识别主要是限于少数已知的对象实例的三维模型可提前得知,或每个3 D地图点划分成一组固定的语义类别没有区分对象实例。

    贡献:

    识别、检测、跟踪和重构多个运动的刚性对象,同时可以精确地分割每个实例并为其分配一个语义标签。

    联合的输出:

    (i)Mask- RCNN,这是一个强大的基于图像的实例级分割算法,可以预测80个对象类的对象类别标签;

    (ii)一种基于几何的分割算法,这将根据深度和表面法线线索生成一个对象边缘映射,以增加目标掩码中对象边界的准确性.

    该系统利用语义场景理解来映射和跟踪多个目标.在从二维图像数据中提取语义标签的同时,系统为每个对象实例和背景分别建立了独立的三维模型。

    它在识别、重构和跟踪三个主要问题上存在局限性。

    在识别方面,MaskFusion只能识别经过MaskRCNN训练的类中的对象(目前MS-COCO数据集的80个类),不考虑对象标签分类错误。虽然MaskFusion可以处理一些非刚性物体的存在,例如人类,但是通过将它们从地图上移除,跟踪和重构仅限于刚性物体。在没有三维模型的情况下,跟踪几何信息较少的小目标会产生误差。

    五、BundleFusion

    BundleFusion_ Real-time Globally Consistent 3D Reconstruction 3D实时重建。

    实时、高质量、大规模场景的3D扫描是混合现实和机器人应用的关键。

    然而,可扩展性带来了姿态估计漂移的挑战,在累积模型中引入了严重的错误。

    这种方法通常需要数小时的离线处理才能全局地纠正模型错误。

    最近的在线方法显示了引人注目的结果,但存在以下问题:

    (1)需要几分钟的时间来进行在线纠正,阻止了真正的实时使用;

    (2)帧对帧(或帧对模型)位姿估计过于脆弱,导致跟踪失败较多;

    (3)只支持非结构化的基于点的表示,这限制了扫描的质量和适用性。

    我们系统地解决这些问题与一个新颖的,实时的,端到端重建框架。

    其核心是一种鲁棒位姿估计策略,通过考虑RGB-D输入的完整历史,用一种有效的分层方法对全局相机位姿集的每帧进行优化。

    我们消除了对时间跟踪的严重依赖,并不断地对全局优化的帧进行定位。提出了一个可并行优化框架,该框架采用基于稀疏特征和密集的几何与光度匹配的对应。

    我们的方法实时估计全局优化(即束调整BA)姿态,支持从总体跟踪失败中恢复(即重定位)的鲁棒跟踪,并在一个单一框架内实时重新估计3D模型以确保全局一致性。

    我们的方法在质量上优于最先进的在线系统,但以前所未有的速度和扫描完整性。提出的框架导致了一个全面的针对大型室内环境的在线扫描解决方案,易用并且能得到高质量的结果。

    来源:https://blog.csdn.net/Cai_deLong/article/details/108465850

    作者:Channon@CSDN

    编辑:3D视觉开发者社区

    本文仅做学术分享,如有侵权,请联系删文。

    下载1

    在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

    下载2

    在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

    下载3

    在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

    重磅!3DCVer-学术论文写作投稿 交流群已成立

    扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

    同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

    一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

    ▲长按加微信群或投稿

    ▲长按关注公众号

    3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近3000星球成员为创造更好的AI世界共同进步,知识星球入口:

    学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

     圈里有高质量教程资料、可答疑解惑、助你高效解决问题

    觉得有用,麻烦给个赞和在看~  

    展开全文
  • 开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来。阿里巴巴各个...
  • MVC中Model提供内容给UI进行渲染,用户通过UI框架产生响应,一般而言会由控制层调用业务逻辑进行处理,并把处理结果以Model方式返回View,再次渲染。UI框架的大致过程就是如此,按实现方式可以分为RIA和瘦客户端方式...
  • Android开源框架-20160806

    2016-08-06 09:35:17
    开源框架推荐 网络 [okhttp](squarehttp · GitHub) [android-async-http](loopj/android-async-http · GitHub) 事件总线 [otto](square/otto · GitHub) [EventBus](greenrobot/EventBus · GitHub) ...
  • Android开发常用开源框架2

    千次阅读 2016-12-20 15:27:30
    起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的Smart bar等, 后来逐一完善了,考虑到拥抱开源,看业界...
  • 移动测试工程师必须知道的10个开源框架 作者:彭海波前言随着移动互联网的发展,移动测试技术越来越成熟,很多优秀的开源测试框架涌现出来。作为一个移动测试工程师,我们不仅要夯实自己的技术能力,也要学会从开源...
  • android开源框架调研

    2015-06-12 20:14:52
    其实是把今天看到的一些有用的链接做一个记录。Android开源框架我还没用过,暂不评价。记了三个比较有名的,最近调研一下再写写感受。GitHub 优秀的 Android 开源项目 ...
  • JAVA开源框架总结

    千次阅读 2012-08-01 19:27:53
    以前在做QT开发的时候,使用的成熟的开源框架是非常有名的Monkey Studio,Monkey Studio就是一个完善和成熟的开源的IDE框架,在做项目开发的过程中,只是整合该框架然后分配任务给程序员进行与项目相关的插件的开发...
  • Java领域解析、生成Excel比较有名框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。 EasyExcel是...
  • 世界上杰出的Rust开源项目的清单,这些清单不同于 。 项目纳入标准: 主动维护 有很多星星 活动问题和公关 声音文档示例 不包含或已安全地提取了不安全的Rust 不限于GitHub存储库 如果您想贡献,请阅读。 目录 数据 ...
  • 点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...
  • C#开源框架(整理)

    2021-12-10 14:03:55
    C# 开源框架(整理) Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以...
  • 这里介绍一款阿里开源解析excel框架 easy-excel。 是什么 相关资料领取 这里引用下官方的介绍 Java解析、生成Excel比较有名框架有Apache、poi、jxl。但他们都存在一个严重的问题就是非常的耗内存..
  • 开源 RPC 框架

    2019-11-18 17:31:58
    开源 RPC 框架有哪些呢? 一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。 跟语言平台绑定的开源 RPC 框架主要有下面几种。 Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 ...
  • NIO开源框架

    2008-04-06 12:07:00
    Cindy是一个基于java nio的I/O框架,支持TCP/UDP单播/UDP多播/Pipe,为应用程序提供了一个统一的接口去实现异步和同步的网络操作。java io包提供了一个简单的模型去处理网络流,它读写均为阻塞操作,在一般的应用...
  • 我写这篇博文目的在于记录分享,因为我之前在翻看Android 开源框架Universal-Image-Loader(在github上的地址: https://github.com/nostra13/Android-Universal-Image-Loader )里的那段源码时,也是不太明白作者...
  • 推荐几个国内开源的BS框架

    千次阅读 2012-06-05 00:10:12
    以前一直在找开源的B/S开发框架,这里推荐几个国内的开源的:1,金蝶Apusic OperaMasks以及UI库这是金蝶开源的一个框架,作为公司团队的开源,算三个中最有实力和有持久力的了,2007年开始开源,至今已发展5年。...
  • 关于jeecgboot的使用心得

    千次阅读 2020-12-29 01:31:33
    随着大前端时代的到来,我作为一个后端也开始了解前端三大框架,React、Vue、Angular都或多或少的接触过。最喜欢国人尤雨溪的vue,React对一个后端来说比较难入门,Angular又比较重,vue的双向数据绑定很合后端开发...
  • 开源 RPC 框架有哪些呢? 一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。 跟语言平台绑定的开源 RPC 框架主要有下面几种。 Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末...
  • 开源 RPC 框架有哪些

    2020-04-17 23:25:29
    Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。 Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。 Tars:腾讯内部使用的 RPC ...
  • 但是这里我也想给大家说一定,用了开源的解决方案,能快速的搭建起业务,但是无疑也欠下了技术债,因为开源的解决方案肯定没有自己实现的要熟悉,因为不熟悉很多时候出现了问题,并不能马上解决,甚至解决不了,导致...
  • 推荐20个最近很流行的优秀PHP框架

    千次阅读 2021-03-23 08:04:46
    每一个开发者都知道,拥有一个强大的框架可以让开发工作变得更加快捷、安全和有效。在开发项目之前选择一款合适的框架可以为今后奠定厚实的基础,下面这20个PHP框架你可以有选择的使用,一定会帮助到你的。1、...
  • 机器学习框架如PyTorch和TensorFlow的发展,改变了机器学习工程师产品研发的思路和方式。“从某种意义上说,这是一个突破,让研发速度比以前快了一两个数量级。”PyTorch创始...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,245
精华内容 4,498
关键字:

有名的开源框架