当前位置:首页 » 安卓系统 » android库

android库

发布时间: 2022-04-13 01:56:08

❶ 系统运行库Android主要包含哪些库

* Bionic系统 C 库:C语言标准库,系统最底层的库,C库通过Linux系统来调用。
* 多媒体库(MediaFramework):Android系统多媒体库,基于 PacketVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。
* SGL:2D图形引擎库。
* SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
* OpenGL ES 1.0:3D效果的支持。
* sqlite:关系数据库
* Webkit:Web浏览器引擎。
* FreeType:位图(bitmap)及矢量(vector)。

❷ 有哪些 Android 的开源界面库

比较火爆的Android开源库有以下:
1、volley
主要有以下模块:

(1) JSON,图像等的异步下载;
(2) 网络请求的排序(scheling)
(3) 网络请求的优先级处理
(4) 缓存
(5) 多级别取消请求
(6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)2、android-async-http
主要有以下模块:
(1) 在匿名回调中处理请求结果
(2) 在UI线程外进行

(3) 文件断点上传
(4) 智能重试
(5) 默认gzip压缩
(6) 支持解析成Json格式
(7) 可将Cookies持久化到SharedPreferences 3、Afinal框架
主要有四大模块:
(1) 数据库模块:android中的
,使用了线程池对sqlite进行操作。
(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
(3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。
(4) 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。4、xUtils框架
主要有四大模块:
(1) 数据库模块:android中的
,一行代码就可以进行增删改查;
(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
(3) 网络模块:支持同步,异步方式的请求;
(4) 图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;5、ThinkAndroid主要有以下模块:(1) MVC模块:实现视图与模型的分离。
(2) ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。
(3) 数据库模块:android中的
,使用了线程池对sqlite进行操作。
(4) http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。
(5) 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置
(6) 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
(7) 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。
(8) 日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印
(9) 下载器模块:可以简单的实现
、后台下载、
、对下载进行控制、如开始、暂停、删除等等。
(10) 网络状态检测模块:当网络状态改变时,对其进行检6、LoonAndroid 主要有以下模块:
(1) 自动注入框架(只需要继承框架内的application既可)
(2) 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
(3) 网络请求模块(继承了基本上现在所有的

(4) eventbus(集成一个开源的框架)
(5) 验证框架(集成开源框架)
(6) json解析(支持解析成集合或者对象)
(7) 数据库(不知道是哪位写的 忘记了)
(8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
(9) 自动更新模块
(10) 一系列工具类

❸ Android项目怎样添加recyclerview库

有多种方式:

1.如图所示:

2:在项目的build.gradle的dependencies{}下加入implementation 'androidx.recyclerview:recyclerview:1.1.0'

3.左上角File ->Project structure ->dependencies -> Alldependencies,然后点击+ 号,点击library dependency,在弹出的窗口中搜索recyclerview然后添加等待sync即可。

望采纳。

❹ 如何寻找一款合适的android 库列表

动画(Animation)
Android View Animations:强大的动画库,通过对它的使用,可以轻松创建各种动画效果。
RecyclerView Animators:允许操作者使用含炫酷动画效果的RecyclerView类。
APIs
CloudRail:帮助操作者更快地进行API集成服务。它将多个服务(例如Dropbox,Google Drive和OneDrive)捆绑成一个统一的API。此外,它可自动处理API更新,并保持API的代码一致。其接口可用于云存储,社交,支付等。
Retrofit:Retrofit由Square公司开发,是Android的REST客户端,其类型安全,可将http API转换成java接口。
图表(Charts)
MPAndroidChart:一款强大的图表生成库,可在Android上生成图表,同时还提供8种不同的图表类型和多种手势。
AndroidCharts:一款简单的图表创建工具,具有自定义的功能。
数据库(Database)
SQLBrite: 围绕SQLiteOpenHelper和ContentResolver创建封装,以在查询中使用流式语义。
Sugar ORM:使用SQLite数据库的简单操作,优势在于无需编写SQL查询。
数据架构(Data Structure)
Eclipse Collections:用于Java的Collections框架,可为容器类型附加迭代方法的操作等。
日期和时间(Date & Time)
TimesSquare for Android:简单独立的日历小部件,可在日历视图中选择日期。
Material Calendar View:移植到Material design的安卓CalendarView。
依赖(Dependencies)
Dagger:进行Android依赖注入的快捷方式。
文档(Files)
Android-FilePicker:一款照片选择器,可从列表中选择图片或文档。
Material File Picker:Material design中的文件选择器。
函数式编程(Functional Programing)
Retrolambda:在Java 7中使用Lambdas的一种操作。
手势(Gestures)
Sensey:在Android应用程序中添加手势的简单操作。
Android 3D Touch – PeekView:类似于iOS上的3D Touch,用以“预览”程序内容。
蓝牙(Bluetooth)
Android-BluetoothSPPLibrary:使用序列化蓝牙端口(Bluetooth Serial Port Profile)的简单操作。
RxAndroidBle:蓝牙低耗能处理工具。
相机(Camera)
CameraFilter:使用OpenGL着色器的实时相机滤镜。
Material Camera:Android开发的快速简易的相机框架。
位置(Location)
ReactiveLocation:Google Play API的小型但实用的封装程序,用于获取位置。
Smart Location Library:简化位置提供项的库。
布局(Layout)
Android Swipe Layout:为对象提供滑动布局,如,向左滑动即删除的操作。
FlexboxLayout :为Android提供框布局,其内容可通过CSS了解。
日志(Logging)
Logger:Android日志记录器。
Hugo:用触发注释的方法调用记录。
地图(Maps)
AirMapView :用以查看Google Maps API摘要,非常适合没有Google Play服务的应用程式。
Google地图的实用程序,如,热点地图或标记聚类。
音频播放器(Audio)
Music Player:含UI的完整音乐播放器。
RxAndroidAudio :封装带有Rx支持的Android Audio API RxAndroid音频播放器。
GIF
android-gif-drawable:使用视图和可绘制的GIF动图。
GifView :Android上使用View播放的GIF库。
图像(Image)
uCrop:对Android上的图片进行裁剪的库。
Glide:Android的媒体管理和图片加载库。
视频播放器(Video)
VideoPlayerManager:对Android MediaPlayer类的使用进行帮助说明的库。
Easy Video Player:易于操作的视频播放器,可通过视图使用。
信息(Messaging)
Chateau:在Android应用中提供聊天功能的框架。
网络(Networking)
OkHttp:Android的HTTP客户端。
AndroidAsync:基础级网络协议库。
消息推送(Push Notifications)
PubNub:用于处理推送通知的商业服务。
Gandalf:用于发送更新或维护相关的通知。
支付(Payments)
Android In-App Billing v3 Library:通过Android v3 API轻松处理应用内置付款的库。
Checkout:处理应用内购买操作的库。
安全(Security)
Sodium:轻松做加密,解密,签名和散列操作的工具。
PiracyChecker:通过使用Google的LVL,防止应用程式被盗用的工具。
文本(Text)
Ticker:显示滚动文本的UI组件。
MaterialEditText:Material Design的文本输入器。
字体(Font)
fontbinding:使用数据绑定的XML自定义字体的操作。
Calligraphy:在Android应用程式上使用传统字体的简易操作。
用户界面(User Interface)
Material Design Android Library:在Android中使用Google的Material Design(Android 2.2版)的库。
Material:将Material Design导入原有应用程序的库。
指示器(Activity Indicator)
AppIntro:为应用程序创建炫酷简介,类似于Google原始应用中的。
LolliPin:为应用程序提供pin密码。
操作按钮(Buttons)
Android-Bootstrap:通过使用Bootstrape规则,进行诸如在APP中创建按钮的操作。
Android Morphing Button:Android的操作按钮,其形状大小可更改。
表格(Form)
Vertical Stepper Form Library:在Material Design中创建表单的库。
键盘(Keyboard)
KeyboardVisibilityEvent:显示与隐藏键盘的简单操作。
AndroidKeyboardWatcher:追踪键盘开启/关闭操作情况的库。
菜单(Menu)
BottomBar:在Material Design中提供底部导航栏的视图组件。
Side Menu:为应用程序添加侧边菜单栏的工具。
评分(Rating)
Android-Rate:提醒用户对应用程序进行评价的简易库。
SimpleRatingBar:用于星级评分的UI组件。
滑屏(Slider)
SlidingMenu:轻松为应用程序创建滑动式菜单项。
MaterialDrawer:Android中轻便灵活的抽屉布局式库。

❺ Android常用类库包都有哪些

Android 类库中,各种包写成android.*的方式,重要包的介绍如下:
android.app:提供高层的程序模型、提供基本的运行环境。
android.content:包含各种的对设备上的数据进行访问和发布的类。
android.database:通过内容提供者浏览和操作数据库。
android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上。
android.location:定位和相关服务的类。
android.media:提供一些类管理多种音频、视频的媒体接口。
android.net:提供帮助网络访问的类,超过通常的java.net.*接口。
android.os:提供了系统服务、消息传输、IPC 机制。
android.opengl:提供OpenGL 的工具,3D 加速。
android.provider:提供类访问Android 的内容提供者。
android.telephony:提供与拨打电话相关的API交互。
android.view :提供基础的用户界面接口框架。
android.util:工具性的方法,例如时间日期的操作。
android.webkit:默认浏览器操作接口。 android.widget:包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用。

❻ Android一般采用什么数据库

用的Eclipse,数据量的话还可以把,因为是初学,所以就打算先少弄几个景点先试试,我想的是能不能做到应用去链接一个远端的数据库,就是比方说点开一个景点信息,它是从数据库中下载出来的。。额。。专业的我也不会说。。

❼ android如何让系统库成为全局

一、通过Settings.System进行读写
//其中"getXXX"代表对应的类似方法,如getInt()、getBoolean、putString()等。
//通过变量名称获取值,如果变量不存在,数据库中没有设置过初始值或者该值类型不对,将抛出SettingNotFoundException异常
Settings.System.getXXX(ContentResolver cr, String name);
//通过变量名称获取值,如果发生上面方法中导致异常的情况,将返给定的默认值
Settings.System.getXXX(ContentResolver cr, String name, XXX def);
//将指定名称的值写入数据库
Settings.System.putXXX(ContentResolver cr,String name, XXX Value);
非系统权限,需要在App项目的AndroidMainfes.xml文件中添加如下权限:

<uses-permission android:name="android.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WRITE_SETTINGS" />
二、在Settings.System添加一个自定义的全局变量
Settings.java文件位于frameworks\base\core\java\android\provider下,打开该文件,搜索关键词 SETTINGS_TO_BACKUP ,共有两处,一处是在Settings里面,另一处在内部类Settings.System里面,在SETTINGS_TO_BACKUP数组上面添加自定义变量,同时在该数组里面添加自定义变量名称,Settting和内部类System都需要添加(共四个地方),比如自定义系统变量SYSTEM_ZWH:
public static final String SYSTEM_ZWH = "system_zwh"; Public static final String[] SETTINGS_TO_BACKUP = { ... SYSTEM_ZWH, ... }
在代码中我们就可以通过对于的get和put方法对该值进行读取和写入操作了。

❽ 如何创建Android库以及Android aar文件详解

创建 Android 库

Android 库在结构上与 Android 应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和 Android 清单。不过,Android 库将编译到您可以用作 Android 应用模块依赖项的 Android 归档 (AAR:Android Archive Resource) 文件,而不是在设备上运行的 APK。与 JAR 文件不同,AAR 文件可以包含 Android 资源和一个清单文件,这样,除了 Java 类与方法外,您还可以捆绑布局和可绘制对象等共享资源。

库模块在以下情况下非常有用:

  • 构建使用某些相同组件(例如 Activity、服务或 UI 布局)的多个应用。

  • 构建存在多个 APK 变体(例如免费版本和付费版本)的应用并且需要在两种版本中使用相同的核心组件。
    在任何一种情况下,只需要将您希望重用的文件移动到库模块中,然后以依赖项的形式为每个应用模块添加库。本页面将说明如何执行这两个操作。

  • 创建库模块

    要在您的项目中创建一个新的库模块,请按以下步骤操作:
    1、点击** File > New > New Mole。**
    2、在出现的 Create New Mole 窗口中,依次点击** Android Library 和 Next。还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。**因此,本指南将侧重论述创建 Android 库。
    3、为您的库命名,并为库中代码选择一个最低的 SDK 版本,然后点击 Finish。

    在 Gradle 项目同步完成后,库模块将显示左侧的 Project 面板中。如果您未看到新模块文件夹,请确保将视图切换为 Android 视图。

    将应用模块转换为库模块

    如果您现有的应用模块包含您希望重用的所有代码,则可以按照以下步骤将其转换为库模块:

    1、打开现有应用模块的 build.gradle 文件。您应在顶部看到以下内容:

  • apply plugin: 'com.android.application'

  • 2、按照下面所示更改插件分配:

  • apply plugin: 'com.android.library'

  • 3、点击 Sync Project with Gradle Files。

    就这么简单。模块的整个结构仍然相同,但是现在它将作为 Android 库运行,构建也将创建一个 AAR 文件,而不是 APK。

    生成aar

    在Android Studio1.4中,New project,先默认新建一个Applicaton mole,接后File > New > New Mole,选择Androd Library > Next,指定Library Name和Mole Name。

    新建的Library与正常的Application最大区别是mole build.gradle中是**apply plugin: ‘com.android.library’ **而不是 apply plugin: 'com.android.application'

    Build > Make project,自动生成aar文件。

    以依赖项形式添加您的库

    要在另一个应用模块中使用您的 Android 库的代码,请按以下步骤操作:

    1、通过两种方式之一将库添加到您的项目(如果您是在相同项目中创建的库模块,则该模块已经存在,您可以跳过此步骤):

  • 添加已编译的 AAR(或 JAR)文件:
    1、点击 File > New Mole。
    2、依次点击 Import .JAR/.AAR Package 和** Next**。
    3、输入 AAR 或 JAR 文件的位置,然后点击 Finish。

  • 将库模块导入到您的项目中:
    1、点击** File > New > Import Mole。**
    2、输入库模块目录的位置,然后点击 Finish。
    库模块将复制到您的项目中,因此您可以尽管编辑库代码。如果您希望维护一个版本的库代码,则此方法可能不是您想要的,您应按照上文所述导入编译的 AAR 文件。

  • 2、确保库列在您 settings.gradle 文件的顶部,如下面名为“my-library-mole”的库所示:

  • include ':app', ':my-library-mole'

  • 3、打开应用模块的 build.gradle 文件,并向 dependencies 块中添加一行新代码,如下面的片段所示:

  • dependencies {

  • compile project(":my-library-mole")

  • }

  • 4、点击 Sync Project with Gradle Files。
    在上面的示例中,名为 my-library- mole 的 Android 库模块成为 build.gradle 文件所在模块的构建依赖项。
    您的应用模块现在可以访问 Android 库中的任何代码和资源,库 AAR 文件在构建时已捆绑到您的 APK 中。
    不过,如果希望单独共享 AAR 文件,则可以在 项目名称/模块名称/build/outputs/aar/ 中找到它,也可以通过点击 Build > Make Project 的方式重新生成此文件。

    选择要设为公开的资源

    库中的所有资源在默认情况下均处于公开状态。要将所有资源隐式设为私有,您必须至少将一个特定的属性定义为公开。资源包括您项目的 res/ 目录中的所有文件,例如图像。要阻止您的库用户访问仅供内部使用的资源,您应通过声明一个或多个公开资源的方式来使用这种自动私有标识机制。

    要删除某个公开资源,请将一个声明添加到您的库的 public.xml文件中。如果您之前尚未添加公开资源,则需要在您的库的 res/values/目录中创建public.xml 文件。

    下面的示例代码可以创建两个名称分别为 mylib_app_name和 mylib_public_string 的公开字符串资源:

  • <resources>

  • <public name="mylib_app_name" type="string"/>

  • <public name="mylib_public_string" type="string"/>

  • </resources>```

  • 如果希望任何资源保持对使用您的库的开发者可见,您应当将其设为公开。例如,尽管 [v7 appcompat 库](https://developer.android.com/topic/libraries/support-library/features.html#v7-appcompat)中的大多数资源都是私有资源,但是为了支持[Material Design](https://developer.android.com/design/material/index.html),控制工具栏小部件的属性应当公开。将属性隐式设为私有不仅可以阻止您的库用户从内部库资源获得代码自动完成建议,还让您能够在不中断您的库客户端的情况下重命名或移除私有资源。私有资源不在代码自动完成和 [Theme Editor](https://developer.android.com/studio/write/theme-editor.html) 的作用范围内,并且如果您尝试引用私有资源,[Lint](https://developer.android.com/studio/write/lint.html) 将显示警告。##开发注意事项在开发您的库模块和相关应用时,请注意以下行为和限制。

  • 将库模块引用添加至您的 Android 应用模块后,您可以设置它们的相对优先级。构建时,库会按照一次一个的方式与应用合并,并按照从低到高的优先级顺序。

  • * **资源合并冲突**

  • 构建工具会将库模块中的资源与相关应用模块的资源合并。如果在两个模块中均定义了给定资源 ID,将使用应用中的资源。

  • 如果多个 AAR 库之间发生冲突,将使用依赖项列表首先列出(位于 dependencies块顶部)的库中的资源。

  • 为了避免常用资源 ID 的资源冲突,请使用在模块(或在所有项目模块)中具有唯一性的前缀或其他一致的命名方案。


  • * **库模块可以包含 JAR 库**

  • 您可以开发一个自身包含 JAR 库的库模块;不过,您需要手动编辑相关应用模块的构建路径,并添加 JAR 文件的路径。


  • * **库模块可以依赖外部 JAR 库**

  • 您可以开发一个依赖于外部库(例如 Maps 外部库)的库模块。在这种情况下,相关应用必须针对包含外部库(例如 Google API 插件)的目标构建。另外也要注意,库模块和相关应用都必须在其清单文件的 [<uses- library>

  • ](https://developer.android.com/guide/topics/manifest/uses-library-element.html) 元素中声明外部库。* **库模块不得包含原始资源**

  • 工具不支持在库模块中使用原始资源文件(保存在 assets/目录中)。应用使用的任何原始资源都必须存储在应用模块自身的 assets/目录中。


  • * **应用模块的 minSdkVersion必须大于或等于库定义的版本**

  • 库作为相关应用模块的一部分编译,因此,库模块中使用的 API 必须与应用模块支持的平台版本兼容。


  • * **每个库模块都会创建自己的 R 类**

  • 在您构建相关应用模块时,库模块将先编译到 AAR 文件中,然后再添加到应用模块中。因此,每个库都有其自己的 R 类,并根据库的软件包名称命名。从主模块和库模块生成的 R 类会在所需的所有软件包(包括主模块的软件包和库的软件包)中创建。


  • * **库模块可能包含自己的 ProGuard 配置文件**

  • 通过将 [ProGuard](https://developer.android.com/studio/build/shrink-code.html) 配置文件添加到包含其 ProGuard 指令的库,您可以在自己的库上启用代码压缩。构建工具会为库模块将此文件嵌入到生成的 AAR 文件中。在您将库添加到应用模块时,库的 ProGuard 文件将附加至应用模块的 ProGuard 配置文件 (proguard.txt)。通过将 ProGuard 文件嵌入到您的库模块中,您可以确保依赖于此库的应用模块不必手动更新其 ProGuard 文件即可使用库。当 ProGuard 在 Android 应用模块上运行时,它会同时使用来自应用模块和库的指令,因此您不应当只在库上运行 ProGuard。

  • 要指定您的库的配置文件名称,请将其添加到 consumerProguardFiles方法中,此方法位于您的库的 build.gradle文件的 defaultConfig块内。例如,以下片段会将 lib-proguard-rules.txt设置为库的 ProGuard 配置文件:

  • android {
    defaultConfig {
    consumerProguardFiles 'lib-proguard-rules.txt'
    }
    ...
    }

  • 默认情况下,应用模块会使用库的发布构建,即使在使用应用模块的调试构建类型时亦是如此。要使用库中不同的构建类型,您必须将依赖项添加到应用的 build.gradle文件的 dependencies块中,并在库的 build.gradle文件中将 publishNonDefault设置为 true。例如,您应用的 build.gradle文件中的以下代码段会使应用在应用模块于调试模式下构建时使用库的调试构建类型,以及在应用模块于发布模式下构建时使用库的发布构建类型:

  • dependencies {
    debugCompile project(path: ':library', configuration: 'debug')
    releaseCompile project(path: ':library', configuration: 'release')
    }

  • 您还必须在自己库的 build.gradle文件的 android 块内添加以下代码行,以便将此库的非发布配置展示给使用它的项目:

  • android {
    ...
    publishNonDefault true
    }```
    不过请注意,设置 publishNonDefault会增加构建时间。
    为了确保您的库的 ProGuard 规则不会将意外的压缩副作用施加到应用模块,请仅包含适当规则,停用不适用于此库的 ProGuard 功能。尝试协助开发者的规则可能会与应用模块或它的其他库中的现有代码冲突,因此不应包含这些规则。例如,您的库的 ProGuard 文件可以指定在应用模块的压缩期间需要保留的代码。

    注:Jack 工具链仅支持 ProGuard 的部分压缩和模糊选项。

    AAR 文件详解

    AAR 文件的文件扩展名为 .aar,Maven 工件类型也应当是 aar。文件本身是一个包含以下强制性条目的 zip文件:

  • /AndroidManifest.xml

  • /classes.jar

  • /res/

  • /R.txt

  • 此外,AAR 文件可能包含以下可选条目中的一个或多个:

  • /assets/

  • /libs/**名称 **.jar

  • /jni/abi 名称 /名称.so(其中 abi 名称是 Android 支持的 ABI 之一)

  • /proguard.txt

  • /lint.jar

❾ 如何对 Android 库进行依赖管理

Android 开发人员为项目选择库的时候,考虑的因素不仅仅是功能、可用性、性能、文档丰富度和技术支持情况。他们还关心库的大小,以及要添加的方法数量。因为项目越大,依赖也越多,要把应用的方法数量控制在65k 以下,开发人员感觉很有压力。另外,对于非发行版项目而言,Proguard 使用起来效率太低,而且开发人员视 multidex 如瘟疫,避之唯恐不及。因此,编写库的作者必须特别注意项目的大小。 为了减少库的方法数量,最简单的途径就是不包含任何多余的依赖。因为你包含的所有依赖,都会被传递并添加至用户的项目里。举个例子,如果你只需要几个简单的工具方法,比如默默地关闭一个资源,那就没必要为此添加 Guava 。自己编写方法,或者从一个现有的库中提取(但是务必做出说明)就可以了。用户肯定会感激你去除了多余的14k方法。 但是,这并不是说你不该使用外部库,而是你要做出明智的选择。比如,像 HTTP 客户端这样的库已经有了,你若再去重写一个,最终结果只能是浪费时间,倒不如用这些时间改进自己的库。 除了有选择地使用库以外,还有几个策略也可以帮助你保持库的精简。其中一个策略就是使用 provided scope(已提供范围)来声明依赖。 这是 gradle 中 Android build system(Android 构建系统)的一部分。与 compile scope(编译范围)不同,provided scope 仅在编译时包含依赖。这就意味着,用户在构建项目时,该依赖不会随着 APK 文件打包。如果想在运行时使用该依赖,用户需要在应用的 build.gradle 里显式声明。 注意: 还有一种与 provided scope 相反的机制叫 package scope(包范围)。这种依赖会随 APK 文件打包,但是在编译时不可用。 你可能还想在库中使用可选择性依赖。其中一个原因是,某些功能可能只有部分用户使用。例如 Retrofit 1.x ,该库可以使用 REST 调用来响应,而不使用回调。那些想使用 RxJava 的用户可以添加之,而不想使用它的用户也可以不添加,以免加重负担。自从 Retrofit 使用 maven build system (maven 构建系统)以后,其配置稍有更改,但理念还是相似的。 在此笔者要提醒大家,如果你发现自己库中的某些功能只对少数用户有用,你应该认真考虑一下是否还要保留这些功能。关于这一点,后文中还会讲到。 在库里包含可选择性依赖的另一个原因,是Android 框架已经提供了一种解决方案,但是某个外部库提供的解决方案性能更好。如果用户本就依赖于该外部库,或者愿意增加方法数量以获得更好的性能,就可以添加可选择性依赖。 我最近看到的 PlacesAutocompleteTextView 库,就属于这种情况。该库使用的内部 HTTP 客户端,既可以是 OkHttpClient,也可以是 HttpURLConnection。通常,前者的性能更好,但是需要添加 OkHttp 作为依赖。 如果用户不想包含该依赖,可以自动从标准库回退到 HttpURLConnection。 为此,需要一个“resolver” 类以确定运行时要使用的依赖。 例如,以下的类就用于选择 HTTP 客户端: public final class PlacesHttpClientResolver { public static final PlacesHttpClient PLACES_HTTP_CLIENT; static { boolean hasOkHttp; try { Class.forName("com.squareup.okhttp.OkHttpClient"); hasOkHttp = true; } catch (ClassNotFoundException e) { hasOkHttp = false; } PlacesApiJsonParser parser = JsonParserResolver.JSON_PARSER; PLACES_HTTP_CLIENT = hasOkHttp ? new OkHttpPlacesHttpClient(parser) : new (parser); } private PlacesHttpClientResolver() { throw new RuntimeException("No Instances!"); } } 该类被加载时,会检查 OkHttpClient 的完全限定类名是否可用。如果抛出 ClassNotFoundException,我们就知道用户没有添加 OkHttp,于是回退到 HttpURLConnection。PlacesHttpClient 是包装以上两种实现方式的公共接口,因此在整个代码库中,这两种实现方式可以交换使用。JSON 解析也采用了同样的方法,Gson 可选择性地作为依赖包含在库中。 如果性能表现与库的大小之间的权衡系数很大,这个方法确实不错。但是,如果回退的实现方式比较困难(比如 JSON 解析就是这种情况),笔者建议你先使用外部库来节省时间,在后续的版本中再考虑添加回退实现。 笔者在前文中提到,你应该对库中包含的功能做出明智的选择。如果某个功能几乎所有用户都不需要,最好将其除去,而且这里也没有必要使用前面提到的第一种可选择性依赖。再次以 Retrofit 为例,在 2.x 版本 中,使用 REST 调用来响应这个功能,不再作为核心库的一部分提供给用户,而是移到一个单独的模块上,并作为 Retrofit 的 maven 构件发布 。 同样地,不同的响应转换器也被拆成了独立的依赖。例如,Retrofit 用户想要转换一个 JSON 响应,而且已经依赖于 Gson,他们可以在 build.gradle 文件中添加以下依赖: dependencies { compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' } 而那些使用其他 JSON 库(比如 Jackson )的用户,或者需要解析其他数据格式(比如 XML 或 protocol buffers)的用户,也可以采用这种方式添加自己需要的依赖,而且避免通用型依赖带来的额外负担。与此同时,核心库也不会被这些附加功能干扰,可以专注于需要解决的主要问题。

❿ 有哪些常用或优秀的 Android 第三方类库

Android开发第三方类库分类:

  1. gifview 、 gifview2

    这两个项目是同一人开发的,用于显示gif动画,纯java解码 ,gif图片过大会产生OOM。

  2. android-gif-drawable

    一个也是用于解码显示gif的类库,采用jni解码,大GIF也不会产生oom,完美运行。

  3. PhotoView

    PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件。使用比较简单,提供了一个名为PhotoView的控件,可以直接像普通ImageView那样使用。

    特性:支持单点/多点触摸,即时缩放图片;支持平滑滚动;在滑动父控件下能够运行良好;(例如:ViewPager)

不同的环境使用不同的类库,不同的系统也是同样的道理。

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:334
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:377
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:611
java用什么软件写 发布:2025-05-18 03:56:19 浏览:31
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:942
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:802
网卡访问 发布:2025-05-18 03:35:04 浏览:510
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371