实时搜索: android的开源框架有哪些

android的开源框架有哪些

850条评论 4873人喜欢 3802次阅读 557人点赞
这不是在侵犯版权吗?他们是给GOOLE钱了?经过他们批准的吗? ...

有没有比较成熟的Android开源MVC框架:  Android Binding 提供了一个通用的框架用来实现 Android 的视图部件跟数据模型进行绑定的功能,用来实现 Android 应用程序的
MVC 模式。

  Android-Binding is a MVVM (Model-View-ViewModel) framework, that helps
freeing the Activity from working directly to User Interfaces. As an Activity,
it's job is only to supply the ViewModel that the View requires to render the
result while ViewModel is a class that with zero direct coupling with the View
(and actually you might supply a different View to it).

  关键特性:

  Declare view binding in Layout XML files. No additional files needed.

  Helps implements MVVM

  Much easier for Unit-Testing

  Model Validation that validates against ViewModel

  Support Cursor results, and you can even validate the cursor result!

  Sailor 是一个 Lua 语言的 MVC 编程框架。支持跨平台,兼容 mod_lua 或者 mod_pLua, Nginx 的 ngx_lua,
或者任何支持 CGI 的 Web 服务器,如 Civetweb 或者 Mongoose, 前提是必须有 CGILua

  使用 Sailor 开发应用的目录结构如下:

  /conf - 存放配置文件

  /controllers - 控制器

  /layouts - 布局文件

  /models - 模型

  /pub - 静态文件

  /runtime - 运行时生成的临时文件

  /views - .lp 视图文件

  示例代码:

  local site = {}

  function site.index(page)

  local foo = 'Hello world'

  local User = sailor.model("user")

  local u = User:new()

  u.username = "etiene"

  u.password = "a_password"

  local valid, err = u:validate() -- validate() will check if your attributes
follow the rules!

  if not valid then

  foo = "Boohoo :("

  end

  -- Warning: this is a tech preview and some methods of model class do not
avoid SQL injections yet.

  page:render('index',{foo=foo,name=u.username}) -- This will render
/views/site/index.lp and pass the variables 'foo' and 'name'

  end

  function site.notindex(page)

  page:write('Hey you!')

  end

  return site

有哪些开源的采用 Material Design 的 Android 程序: 1. MaterialDesignLibrary
在众多新晋库中,MaterialDesignLibrary可以说是颇受开发者瞩目的一个控件效果库,能够让开发者在Android 2.2系统上使用Android 5.0才支持的控件效果,比如扁平、矩形、浮动按钮,复选框以及各式各样的进度指示器等。
2. RippleEffect
由来自法兰西的Robin Chutaux开发的RippleEffect基于MIT许可协议开源,能够在Android API 9+上实现Material Design,为开发者提供了一种极为简易的方式来创建带有可扩展视图的header视图,并且允许最大程度上的自定制。
3. MaterialEditText
随着Material Design的到来,AppCompat v21也为开发者提供了Material Design的控件外观支持,其中就包括EditText,但却并不好用,没有设置颜色的API,也没有任何Google Material Design Spec中提到的特性。于是,来自国内的开发者“扔物线”开发了MaterialEditText库,直接继承EditText,无需修改Java文件即能实现自定义控件颜色。
4. Android-LollipopShowcase
Android-LollipopShowcase是由来自奥地利的移动、后端及Web开发者Mike Penz所开发的演示应用,集中演示了新Material Design中所有的UI效果,以及Android Lollipop中其他非常酷炫的特性元素,比如Toolbar、RecyclerView、ActionBarDrawerToggle、Floating Action Button(FAB)、Android Compat Theme等。
5. MaterialList
MaterialList是一个能够帮助所有Android开发者获取谷歌UI设计规范中新增的CardView(卡片视图)的开源库,支持Android 2.3+系统。作为ListView的扩展,MaterialList可以接收、存储卡片列表,并根据它们的Android风格和设计模式进行展示。此外,开发者还可以创建专属于自己的卡片布局,并轻松将其添加到CardList中。

github android开源框架怎么用在android studio工程里: Android studio 导入github工程
http://blog.csdn.net/onlysnail/article/details/45115093

如何成为一名Android架构师: 架构师从来都不是看书看来的,需要长久的实践与累积。最好的方式就是在工作中累积。

首先,你得明确,你是在做产品,不是做项目。
其次,架构的前期需求分析与建模非常重要,多思考未来可能的扩展。
最后,最好有一定的代码规范甚至是洁癖。
要用严格的标准来要求自己,是否当上架构师其实没差,无非就是希望自己成为团队核心得到更多的认可而已。

如觉得自己目前的工作没什么挑战性,也可以自己来设计一款产品,从需求到架构到实现。碰到那种常见的需求,可以参考一些成熟的第三方开源项目,另外在看第三方项目时,要明白what how why。

what 这个项目是为了解决什么问题而生的,提供了什么样的API?
how 它是如何实现的?有哪些小的功能模块组成?它们是怎样解耦的?如果我有扩展需求,我该如何改?
why 为什么会这样来实现?有没有更好的方案?

一般来说,我们看代码,基本顺序是what how why,能去翻源码理解how的不多,真正做到why的少的可怜。如果你想提升技术成为主力,那至少,你得多去理解how,试图去解释why。

为什么C++是Google 大部分开源项目的主要编程语言?: Google的C++开源代码项目
v8 - V8 JavaScript Engine
V8 是 Google 的开源 JavaScript 引擎。
V8 采用 C++ 编写,可在谷歌浏览器(来自 Google 的开源浏览器)中使用。
V8 根据 ECMA-262 第三版中的说明使用 ECMAScript,并在使用 IA-32 或 ARM 处理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系统中运行。
V8 可以独立运行,也可以嵌入任何 C++ 应用程序中。

nativeclient - Native code for web apps
Native Client是一个在Web应用程序中运行本地代码(目前只支持x86架构)的开源的研究性技术,提供更好的“富客户端”用户体验。它允许网络开发者编写更强大的Web程序,这些程序直接通过系统运行而不用通过浏览器来进行,据Google称,它到最后将允许网络开发者开发和桌面软件一样的的web程序,这些程序将带来更快的速度。Native Client类似于微软的ActiveX技术,它还能在Linux和Mac OS X下运行。目前它尚未支持IE,仅支持Google Chrome, Firefox, Safari 和Opera。

tesseract-ocr - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。
Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。当前版本为3.01.

google-glog - Logging library for C++
Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:
LOG(INFO) << "Found " << num_cookies << " cookies";

double-conversion - Binary-decimal and decimal-binary routines for IEEE doubles.
从V8引擎中抽出的有关数值计算相关的代码,包括大数计算,数值到字符串转换等

googletest - Google C++ Testing Framework
gtest测试框架[1]是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)为编写C++测试而生成的。它是基于xUnit架构的测试框架,支持自动发现测试,丰富的断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。

googlemock - Google C++ Mocking Framework
googlemock  mock技术,在c++单元测试可以随意修改函数行为的技术。   
googlemock是google基于gtest开发的mock框架,适用于c++单元测试。

libphonenumber - Google's phone number handling library, powering Android and more
一个专门用于处理电话号码的库

google-diff-match-patch - Diff, Match and Patch libraries for Plain Text
google-diff-match-patch这个类库提供了强大的算法用于纯文本内容的差异比较,匹配,打补丁,实现同步纯文本所需要执行一些操作。支持多种语言包括:Java、JavaScript、C++、C#、Objective C、Lua和Python。

libkml - a KML library written in C++ with bindings to other languages
libKML是解析,生成和操作KML的库。使用OGC KML2.2标准。
KML,是 Keyhole 标记语言(Keyhole Markup Language)的缩写,是一种采用 XML 语法与格式的语言,用于描述和保存地理信息(如点、线、图像、多边形和模型等),可以被 Google Earth 和 Google Maps 识别并显示。您可以使用 KML 来与其他 Google Earth 或 Google Maps 用户分享地标与信息。当然,您也可以从 Google Earth 社区 等相关网站获得有趣的 KML 文件。Google Earth 和 Google Maps 处理 KML 文件的方式与网页浏览器处理 HTML 和 XML 文件的方式类似。像 HTML 一样,KML 使用包含名称、属性的标签(tag)来确定显示方式。因此,您可将 Google Earth 和 Google Maps 视为 KML 文件浏览器。单击此处可获得更多信息。

gdata-cpp-util - Google Data APIs C++ utility library
一个Google Data APIs 的工具库,可以GET/POST/PUT/DELETE

lutok - Lightweight C++ API for Lua
是一个 Lua 的 C++ wrapper
Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

dcs-bwt-compressor - Data compressor program and library
dcsbwt是一个基于Burrower-Wheeler变换的数据压缩程序库

treetree - generic n-ary trees for C++
TreeTree (http://code.google.com/p/treetree/)是一个只包含头文件的 C++ Library。它实现了一个通用的 树形结构容器类(遵守 STL约定),并且实现了 operator >> 和 operator <<。
它的底层包含一个双向链表。在前项指针和后项指针以外,每个树节点还包含第三个指针--指向所有子节点的列表。这个实现高效,并且 API 非常清晰。TreeTree 可以表达任何使用Lisp的S表达式能表达的东西(例如推理树(inference trees, programs)等)。
可以使用前序和后序遍历,只遍历某个节点的子节点,或者只是在叶子节点遍历。示例的选项还包含遍历子树(如f(g(x,y),z) 前序遍历,是f(g(x,y),z), g(x,y),x,y和z.

ctemplate - Powerful but simple template language for C++
ctemplate (Google-ctemplate)的设计哲学是轻量级,快速,且逻辑和界面分离,因此和ClearSilver和Teng是有一些差异的。比如Ctemplate就没有模板函数,没有条件判断和循环语句(当然,它可以通过变通的方式来实现)。   ctemplate大体上分为两个部分,一部分是模板,另一部分是数据字典。模板定义了界面展现的形式(V),数据字典就是填充模板的数据(M),你自己写业务逻辑去控制界面展现(C),典型的MVC模型。

sparsehash - An extremely memory-efficient hash_map implementation
Google Sparse Hash 是 Google 一个很节省内存的 hash map 实现

gflags - Commandline flags module for C++
Google GFlags 是一个命令行标记的处理库,它可以替代“getopt()”,其内置对C++的支持比如string。

protobuf - Protocol Buffers - Google's data interchange format
Google Protocol Buffer 是一个平台无关、语言无关的结构化数据的序列化与反序列化工具。
protocol buffer,可以用来在跨进程、跨机器,不同操作系统,不同编程语言之间进行数据交换。类似于微软的COM IDL或者XML,但是解析速度更快,需要传输字节数更少。(c+
+, java, python)

gperftools - Fast, multi-threaded malloc() and nifty performance analysis tools
TCMalloc,heap检测,是一个google用于性能检测的工具。(c++)

google-breakpad - Crash reporting

breakpad,一个项目的开始需要做一些什么样的基础设施,crash dump和运行logging毫无疑问都是应该有的,这个项目就是负责在crash的时候收集信息,发出crash dump报告的。

请教高手 ANDROID 系统虽然开源 但是也有版权 那为什么HTC 三星 摩托 索爱 之类的手机也在用?: 那个开源应该指的是开放源代码。这样谷歌以外的人也可以对安卓系统进行修改而发放出我能常说的“自制系统”。版权神马的……系统出了就是要用的嘛,具体不清楚但应该跟版权神马的没有关系。

安卓开发主要需要java哪些知识: a)Java基础语法:面向对象编程,io流,多线程,集合这些都比较重点

b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》这两本书中找到。

②Linux基础知识,可以先跳过去。
大家都知道,Android系统的基础是Linux操作系统。在开发过程当中,我们也需要使用到一些Linux命令。所以说一些Linux的基础知识是必须的(话说现在的程序员,不懂Linux都不好意思跟人家打招呼)

③数据库基础知识
这个比较简单,就是一个增删改查的数据库操作,可以看一下这本书:《SQL编程练习与解答》
④网络协议
至少需要学习两种基础的协议,HTTP协议与Socket协议;

Android项目的软件环境是什么 硬件环境是什么:

软件

早期的Eclipse + ADT + Java jdk + Android SDK

现在的Android Studio + Java jdk + Android SDK

硬件

模拟器,手机真机呗

  • 1200ml是多少斤

    零首付购车后可以在用这个车贷款吗: (招商银行)汽车分期(车购易)业务仅收手续费,持卡人只需每月按时全额还款,即可享受免息服务,手续费分摊收取。因品牌、合作车型不同,可分期期数、手续费率及首付比例会有所不同,具体可参见信用卡网站了解更多优惠活动。点击这...

    963条评论 2218人喜欢 5338次阅读 567人点赞
  • 五粮液有几个酒厂

    想买车,不知道零首付和首付百分之三十有什么区别: 0首付利息高。最好找正规银行或者担保公司。 ...

    837条评论 2298人喜欢 1045次阅读 794人点赞
  • 昆山是哪个城市

    弹个车广告说0元购车不需要首付是不是骗人?: 应该是真的,你去咨询一下吧 ...

    855条评论 5505人喜欢 3583次阅读 392人点赞
  • openssh是什么

    一台电脑原价5000元,先降1/10后,在涨价1/10,现价多少?算式: 5000×(1-1/10)×(1+1/10)=4950元 ...

    814条评论 5909人喜欢 1756次阅读 915人点赞