Android公共库的建立方法

Android代码-CommonLibary CommonLibrary项目简介 CommonLibrary主要是自己整理的一些项目开发中常用的工具类、通用UI的集合,目前在不断的更新中,尽可能的覆盖Android开发中通用的一些东西 。 > anim > -- AnimationUtils、ViewAnimationUtils。动画工具类,也可为视图创建动画效果。 > data > -- AESUtils、Base64、ByteUtil、DESUtils、HexUtil、MD5Utils、RSAEncrypt、SharePreUtils。用于数据的安全性及数据持久化 > io > -- BitmapUtils、FileUtils、IOUtils、PhotoUtils、StorageUtils。用于图片、文件、Bitmap、IO流之间的转换 > log > -- LogUtils。Log工具类,可控制Log输出开关、保存Log到文件、过滤输出等级 > network > -- 用于判断网络连接类型、监听网络变化、设置网络、开启GPS等。 > toast > -- DialogUtils、NotificationUtils、To 立即下载

转载自:http://trinea.iteye.com/blog/1512905,原作者Trinea


本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用、引用后的工程结构分析、library引入方式的优缺点。

 

我的公共库已开源,可见TrineaAndroidCommon@Github,包含图片缓存、下拉刷新、静默安装及其他Android开发常用工具类,欢迎star和fork^_^。示例APK地址:TrineaAndroidDemo

 

1、java中公共库的创建和引入

熟悉java的朋友都知道在java中可以将公用代码提取出来新建工程,打包成jar包,然后通过外部依赖或是maven依赖加入其他工程使用。

 

2、android中公共库的创建和引入

使用android提供的is library功能创建公共库,android adt提供了公共库的创建方法,下面逐一介绍

a. 新建android工程

这一步同一般的android工程创建方法,如下

 

b. 设置工程属性为library

右击工程->properties->Android,将工程设置为是library,如下

 

c. android公共库的引入方法

右击需要引入library的工程->properties->Android,在library中添加之前新建的common,如下

这样我们就成功引入library了,对于引入后的工程结构分析可以参见本文下面第三部分介绍。引入后我们可以正常的引入java类,对于资源可以像在同一个工程中引入即可,因为library的资源被并入了工程中。

 

PS:如果这个时候工程编译出错,则可能是因为工程和公用library中资源的冲突问题,在后面的分析中我们可以知道引入library后,对于工程的资源会进行合并。比如library中现在含有icon.png的drawable资源,若调用者资源中也含有icon.png则会编译报错,这个时候我们可以将library中的icon资源删除,对于library来说尽量不要放这些drawable资源,我们甚至可以如下图红圈所示删除所有drawable资源文件夹,防止冲突发生。

当然删除icon后同时需要修改相应的引用资源的文件,如这里AndroidManifest.xml中的android:icon

 

3、引用后的工程结构分析

引入library的工程目录结构如下

从上图三个黄色标记的地方我们可以发现library的资源被并入了工程中,同时生成了两个一样的资源文件R.java。这样做的话,对于工程来说可以方便的调用library中的资源,跟在同一个工程中调用资源无甚区别。

a、library的资源被并入调用者工程中,并且相同资源值被覆盖

library中存在strings.xml内容如下

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, AndroidCommon!</string>  
  4.     <string name="app_name">AndroidCommon</string>  
  5. </resources>  

调用者同样存在strings.xml,内容如下

Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="app_name">TESTPROJECT</string>  
  4.     <string name="string2">testString</string>  
  5. </resources>  

最终R.java中的string我们可以看到同时存在hello、app_name、string2三个变量,即资源被合并。并且app_name的值为TESTPROJECT,即资源值被覆盖。

b. 资源一致性

修改上面红色标记的AndroidCommon_src中的AndroidCommon的内容,会发现library中的内容也会被相应修改

c. 编译一致性

修改library的资源进行编译会发现调用者工程也会同时被编译。 

 

 

4. library引入方式的优缺点

通过library方式成功引入了公用库

a. 提高了代码的复用率减少了开发量

b. 可以使得项目模块化以及更好的扩展

 

同时对于这种工程方式的引入还是觉得有一些不妥的地方

a. 通过源码引入,而不是通过类似jar包引入,从而对于library的修改导致所有引入该library都需要同时编译过于麻烦


AndroidCommonLibrary:这个项目主要是针对Android常用的库进行源码分析,了解二进制原理,帮助我们开发过程中解决出现的问题,包含:EventBus,Picasso,Glide,okhttp,Retrofit,leakcanary等项目 AndroidCommonLibrary Android常用依赖库分析,包括:EventBus,Picasso,Glide,Gson,okhttp,RxAndroid,RxJava等。 1.项目信息表格 项目 Github地址 版本 开发工具 是否完成 事件总线 3.1.1 作为 完成 毕加索 2.71828 作为 完成 滑行 4.11.0 作为 格森 2.8.5 作为 冲尾 1.x(Java) 主意 好的http 3.14.x(Java) 主意 翻新 2.6.0 主意 完成 RxAndroid 2.1.1 作为 RxJava的 3.x 主意 匕首2 2.x 主意 漏泄的 1.6.3 作为 完成 番石榴 28日 主意 VirtualXposed 掌握 作为 暴露 掌握 作为 AndroidUtilCode abc7a5da 作为 2. 立即下载

相关推荐

开源公共类库CommonLibrary

开源通用类库,七七八八包含了如 40个左右的通用模块.

Android 公共库的建立方法

本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用、引用后的工程结构分析、library引入方式的优缺点。   我的公共库已开源,可见TrineaAndroidCommon@Github,包含图片缓存、下拉刷新、静默安装及其他Android开发常用工具类,欢迎star和fork^_^。示例APK地址:TrineaAndroidDemo   1、java中公共库的...

微信号codek2 专注于 Android 开源项目源码解析 开源项目分享 433

ITK-snap进行分割区域标注、三维显示及改变显示颜色

在进行医学图像器官分割时,无论我们是用传统方法还是深度学习,最后肯定要用到手动分割的区域作为金标准来验证我们方法的精度。但是手动标注器官的轮廓是十分耗时的,这里我介绍一个比较简单的标注方法,以肺分割作为例子。 我们使用ITK-snap作为分割标注工具。 当切片间距离比较小时,比如1mm,一个患者的完整HRCT序列通常在200张以上,如果让医生一一进行分割区域标注是非常耗时乏味的。因此,我们可以使用最简单的阈值法比如OSTU,加上基本的形态学操作对肺进行粗分割得到粗略的分割掩码,在此基础上再手动的对分割结果进

u010409517的博客 2万+

Android Studio怎么新建Android公共库模块

Android Studio怎么新建Android公共库模块?Android Studio中想添加公共库类似的,可以直接调用得代码,该怎么让Android公共库还可以使项目模块化? java的公共库是直接将公用代码封装jar包,Android的公共库类似,目的都是为了代码的重用。使用Android公共库还可以使项目模块化,以便协同开发和更好地扩展。 1、在Android Studio中依次

crgwcy的博客 2698

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

Spark数据倾斜问题+解决方案

1、数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于 其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈 数据倾斜俩大直接致命后果 1)数据倾斜直接会导致一种情况:Out Of Memory 2)运行速度慢 主要是发生在Shuffle阶段。同样Key的数据条数太多了。导致了某个key(下图中的80亿条)所在的Task数 据量太大了。远远超过其他Task所处理的数据量 一个经验结论是:一般情况下,OOM的原因都是数据倾斜 2、如

诸葛搏毅 6770

(Android开发技巧系列)创建公用组件和在新应用中调用组件

前言:          Android开发过程中,会涉及到将公用功能封装成组件,这样供后续应用开发使用,下面将介绍如何在Eclipse中打包组件并在其他应用中使用.      (如果你是从事是java开发,那就飘过,如果以前是dot net 开发 那就留下来看一会 ) Java 封装组件的概要说明:      在说明java封装组件前,先说明一下 dot net 是如何封装组件的,公共组

AlienTech for better life!~ 1714

某手 v8.x 签名计算方法(二) sig和__NS_sig3

一、目标 今天的目标是 sig和__NS_sig3,咱们抓个包先 二、步骤 sig目测像是MD5 先jadx搜索 sig= ,没有找到结果。 再试试 sig ,晕倒 6k多个结果,突然灵光一闪,这些参数,必然是要加入到 Map中,那么我们搜索 "sig" 应该就是这个 CPU.getClock,Hook之 var signCls = Java.use('com.yxcorp.xxx.util.CPU'); signCls.getClock.implementation = function(a,b,c

fenfei331的博客 2428

Android组件化架构解析总结

前面说到,组件化的核心就是解耦,所以组件和组件之间是不能有依赖的,例如在首页模块点击购物车按钮需要跳转到购物车模块的购物车页面,两个模块之间没有依赖,所以不能在使用Activity的显示跳转来跳转页面了 ,虽然隐式启动是可以实现跳转的,但是隐式 Intent 需要通过 AndroidManifest 配置和管理,协作开发显得比较麻烦。建议创建一个lib_core的公共功能模块组件,将常用的与业务无关的功能封装到此模块中,例如图片加载功能,网络请求功能,日志管理功能等,这些功能可以被所有的app通用。

XBlithe的博客 2206

OpenClaw三层记忆系统:让你的AI助理记住你的习惯,越用越顺手

对于更早的、已经移出滑动窗口的对话内容,我们没有直接丢弃,而是用大模型做摘要压缩,只保留核心信息,然后把摘要存入短期会话记忆的末尾,或者长期用户记忆。比如,10轮之前的对话内容,我们会压缩成:“用户之前查询了仓山万达店4月1日-4月7日的库存数据,对报表的要求是纯文本,不要Markdown”,既保留了核心信息,又不会占用太多上下文窗口。如果说Agent的执行链路是AI的“骨架”,工具调用体系是AI的“手脚”,那么记忆系统就是AI的“大脑”

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 378

Arch Linux 命令大全,值得收藏!

Arch Linux 是一款轻量级、高度可定制的 Linux 发行版,以其简洁和强大的特性深受高级用户喜爱。但对于新手来说,完全掌握 Arch Linux 的操作需要时间和实践。本文将为您详细介绍常用的 Arch Linux 命令,涵盖系统管理、文件操作、用户管理、软件安装与管理、网络配置和磁盘管理等内容,帮助您更高效地使用 Arch Linux。

网络技术联盟站 973

Eclipse中Android公共库的正确建立及调用方法

Eclipse中Android公共库的正确建立及调用方法

编程路上的野花 1072

《深入浅出多模态》(四):多模态经典模型CLIP

本文为《深入浅出多模态》系列多模态经典模型CLIP,首先从整体介绍多模态模型发展,对其中经典CLIP模型进行详述,从具体论文、数据集、代码、模型结构、结果等角度分析,本专栏适合从事多模态小白及爱好者学习,欢迎大家关注,如有侵权请联系删除!

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 1045

RoboMaster硬件基础讲义V0.2.1:从电源设计到调试排查的完整链路

嵌入式硬件设计的第一步不是画原理图,而是建立从电源树到信号完整性的全局认知。无论是 DC-DC 降压链路、STM32 最小系统,还是 CAN 总线与电机驱动接口,稳定的硬件系统都遵循同样的底层逻辑:先算功率预算,再布局布线,最后按检查单调试。这种工程化方法不仅能帮助新队员避开上电冒烟、下载失败、数据飘移等常见坑,也能让战队把个人经验沉淀为可传承的规范。RoboMaster 等机器人竞赛场景中,硬件稳定性直接决定战术能否执行;而一份覆盖电源、主控、通信、PCB布局与调试的产品级讲义,正是从“能画板”走向“能稳

weixin_33862993的博客 383

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android 公共库(项目库) 的建立方法

本文转自:http://trinea.iteye.com/blog/1512905,感谢作者! 本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用、引用后的工程结构分析、library引入方式的优缺点。   自己也写了一些android公共的库,有兴趣的可以参考 TrineaAndroidCommon GoogleCode或(TrineaAndroidCo

技术改变世界 716

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

constraintlayout 支持 android 4.1_Android-模块化、组件化、插件化、热修复-组件化工程构建+页面路由多种方式实践...

上一篇MonkeyLei:Android-模块化、组件化、插件化、热修复-组件化一下试试 我们大概尝试了下一个Module的library与application切换。这也是为为后续的继续做准备...今天我们就尝试自己搭建一个组件化工程,并初步做一个页面的跳转(组件间的通信其中一个点),后续还会完善组件间相互通信的方式。 工程实践完后,我会设置下Module的状态(Library和Modu...

weixin_42298093的博客 184

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

自己总结的一些android公共库

本文主要介绍自己在android开发中总结的一些公共库,目前包括下拉刷新ListView、可以响应各个方向CompoundDrawables点击操作的TextView、图片缓存,不断更新,欢迎交流 ? 一、自定义的View 1 下拉刷新的ListView,类似新浪微博客户端下拉刷新效果 使用见:下拉刷新ListView的使用 实现原理见:下拉刷新ListView的实现原理...

diyu8056的博客 172
上一篇: 【Android笔记】多线程与 UI 交互的方法
下一篇: Android 获取Wifi下的IP地址
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值