最近有朋友在我的博客私信我,向我咨询一些关于Android SDK开发的相关知识,借此机会,将我自己在开发SDK过程中的一些心得分享给大家,谢谢。

1. 什么是SDK?

     SDK(Software Development Kit 即 软件开发工具包),而我们自己开发的Android sdk本质上与Google提供的Android SDK是一样的,都是用于Android 应用程序的开发,你可以想象为是一个工具袋,当别人要用的时候,只需要知道这个工具袋有什么作用以及怎么使用就OK,而无需知道怎么制作这个工具袋。

2. SDK有哪几种表现形式?

     就目前而言,Android 端sdk的表现形式有很多种,我大致列举一下常见的几种表现形式:1、jar包形式2、aar形式3、module形式4、远程依赖库形式

3. 各种形式的开发需要注意什么?

1.Jar包形式
jar包形式是最常见的一种sdk表现形式,优点在于:体积小、编译速度快,缺点是:不能含有xml布局文件,以及直接使用图片等资源文件,但是,如果我们的sdk需要提供界面,又需要使用图片资源的时候该怎么办呢?在这里为大家提供一种常用的解决方案,由于jar打包生成之后不能包含xml布局,以及图片资源文件,所以我们可以采用代码动态布局,例如:

/*** Created by lxh on 2017/2/10.* QQ-632671653*/public class Test1 extends Activity {private Context mContext;@Overridepublic void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {super.onCreate(savedInstanceState, persistentState);this.mContext = this;//创建一个根布局RelativeLayout rootLayout = new RelativeLayout(mContext);RelativeLayout.LayoutParams rootLP = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);rootLayout.setLayoutParams(rootLP);//创建一个TextViewTextView testTV = new TextView(mContext);testTV.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));testTV.setText("这里是动态创建的布局");//将TextView加入到根布局中rootLayout.addView(testTV);//将布局添加到activitysetContentView(rootLayout);}
}

对于图片资源的处理,我们可以有多种处理办法,第一种:将图片放置在asset目录中,
然后使用以下方法获取到图片的位图

/*** 获取asset目录下图片的位图* @param picName* @return*/private Bitmap getAssetPic(String picName){Bitmap bitmap;InputStream is= null;try {is = mContext.getAssets().open(picName);bitmap = BitmapFactory.decodeStream(is);return bitmap;} catch (IOException e) {e.printStackTrace();return null;}}

获取到bitmap之后就可以很轻松的设置到imageview或者相关自定义控件上面了如:

imageView.setImageBitmap(getAssetPic("xxxxx.jpg"));

导出jar包时,将asset目录一同导出,具体导出方法请参考我的另一篇博客:http://blog.csdn.net/qq_23286245/article/details/50344071

另外一种方法是先将图片转化为字符串,将字符串用一个静态常量存储,使用时再转化为图片的方式显示,如:

    /*** 将bitmap转为字符串* @param bitmap* @return*/public String bitmaptoString(Bitmap bitmap){String string=null;ByteArrayOutputStream bStream=new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.PNG,100,bStream);byte[]bytes=bStream.toByteArray();string= Base64.encodeToString(bytes,Base64.DEFAULT);return string;}/*** 将字符串转bitmap* @param string* @return*/public Bitmap stringtoBitmap(String string){Bitmap bitmap=null;try {byte[]bitmapArray;bitmapArray=Base64.decode(string, Base64.DEFAULT);bitmap=BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);} catch (Exception e) {e.printStackTrace();}return bitmap;}

2.aar形式
aar相当于jar的进化版,为了解决jar不能包含资源文件而应运而生,aar是可以包含图片文件夹和xml布局的,可以直接将aar发布给他人使用,也可以将aar发布到maven,供他人远程依赖使用,但是再制作aar的时候也会有一些不大不小的坑,给大家分享一些常规的注意事项吧,详情见:https://my.oschina.net/u/1393188/blog/492576
http://blog.csdn.net/dliyuedong/article/details/49408931
由于笔者较懒,所以就不多说了,其他的例如包冲突的坑,大家自行百度解决吧,百度是你最好的老师之一哦。
3.module形式
在日常开发中,我们经常会在不同的项目中遇到重复的功能,或者相似的功能,但是如果一遍一遍的CV,终究不是可取之道,那么我们就可以采用模块化的思想,将一些常规的功能封装到一个模块中,也就是一个module,使用时主app module依赖这个module就可以了,开发效率也会大大提高,module适用于自己日常开发使用,但是凭借Android的开源精神,也可以发布给其他人使用,由于module是代码可见,并且可以轻松改动的形式,所以更适用于一些相似功能的封装,以便于修改源码。
4.远程依赖形式
使用Android studio可以直接在gradle中配置远程依赖,不用自己再去下载各种库,用着可是不能再爽了,并且可以很方便的持续更新维护,目前很常用的远程仓库有maven和jcenter等,至于上传方式各有不同,由于这个已经在网上有很多的教程,再次也就不过多赘述了,贴上几篇博客以供大家参考:
http://blog.csdn.net/lmj623565791/article/details/51148825
http://www.jianshu.com/p/e443456bb506
http://blog.csdn.net/zhangbuzhangbu/article/details/51730402

至此,差不多该去吃午饭了,有更多疑问的朋友,欢迎加QQ:632671653交流,感谢各位大佬的博客,贸然引用,还请见谅,笔者已然懒癌晚期。。。嘿嘿。皮皮虾,我们走。。。。

Android SDK开发心得总结相关推荐

  1. Android SDK开发4之心得体会

    目录 一. 前言 二.SDK分类 1.SDK简介 2.SDK 分类 三.SDK 设计 1 .核心原则 2.SDK 设计原则 3.接口易用性 4.命名规范要统一 5.跨端接口尽量保持一致 6.尽量不依赖 ...

  2. 浅谈Android SDK开发

    目录 浅谈Android SDK开发 SDK开发的原则 SDK设计 功能与职责边界设计 接口设计 兼容性设计 发布输出设计 SDK文档设计 SDK项目架构 组件化.模块化 统一资源管理 第三方依赖管理 ...

  3. 实际开发的存储过程_实际生产中的 Android SDK开发总结| 完结

    本文作者 作者:brucevanfdm 链接: https://zhuanlan.zhihu.com/p/163899902 本文由作者授权发布. 上一篇我们介绍了 SDK 开发的: 开篇与设计 Ex ...

  4. Android SDK 开发流程

    Android SDK 开发流程 1创建library 1.点击file --> new---->new Module 2.点击 next 3.编写SDK内容 public class L ...

  5. 鸟人的Android揭秘(5)——搭建Android SDK开发环境(一)

    前面已经完整讲解了Android平台的构成,以及从Git服务器下载源代码并进行编译的内容.接下来讲解如何搭建Android SDK开发环境,包括Android Studio.Sublime.Andro ...

  6. Google Android SDK开发范例大全

    1. 图书信息: Google Android SDK开发范例大全(第2版)     人民邮电出版社 2010-6-1 0:00:00 余志龙;陈昱勋;郑名杰;陈小凤;郭秩均 79 元 ISBN:97 ...

  7. Google Android SDK开发范例大全(第2版)

    内容简介 <Google Android SDK开发范例大全(第2版)>在上一版的基础上,以Android手机应用程序开发(采用AndroidSDK2.1)为主题,通过160多个范例全面且 ...

  8. Android好书推荐:《Google Android SDK开发范例》

    http://www.jizhuomi.com/android/book/51.html <Google Android SDK开发范例大全(第3版)>采用范例集的形式,由浅入深地带领Go ...

  9. Google Android SDK开发范例大全(第3版)

    查看书籍详细信息: Google Android SDK开发范例大全(第3版)当当网 编辑推荐 Android开发经典畅销书!前两版均为同类最畅销,新版最引人注目的特点是:架构清楚易使用:所有范例程序 ...

最新文章

  1. topcoder13444
  2. Mac是大脑,iPad是四肢 如何实现的呢?右键而已
  3. 根据数据库表字段删除所有相关信息(删库)
  4. mysql 优化器不准_mysql 优化器有哪些可选开关
  5. 【转】DICOM简述!!!!
  6. 【CodeForces - 298B 】Sail (模拟,题意)
  7. linux exfat分区格式化,技术|如何在 Linux 上将 USB 盘格式化为 exFAT
  8. Linux驱动(2)--ARM的架构发展以及如何评价处理器
  9. LeetCode-返回倒数第 k 个节点
  10. 数模美赛准备——我的第一个LaTex文档
  11. 【OVRP问题】基于鲸鱼优化算法求解开放式车辆路径问题附matlab代码
  12. 怎么样利用栅格数据分类后的结果以行政区域统计各个地类的面积
  13. 三维激光雷达点云处理分类及目标检测综述
  14. Ubuntu19下隐藏桌面图标
  15. Mediapipe+OpenCV图像识别技术与Unity引擎的结合-Part2
  16. 基于Python的个人博客系统设计与实现 报告+项目源码
  17. 深入理解Java虚拟机—Java虚拟机内存
  18. Python编程基础题(26-家务分配问题)
  19. Ubuntu16.04 安装 OPENCV详细教程 避坑
  20. js正则禁止输中文韩文日文

热门文章

  1. Kotlin 视频教程系列 陈光剑
  2. Hexagon SDK之Audio CAPI详解
  3. GMesh网格选项介绍
  4. 盘古开源:“大内存”时代即将到来,颠覆性的存储模式
  5. 华为OD机试真题 C++ 实现【最快到达医院的方法】【2023 Q1 | 100分】
  6. 生日倒计时计算(Java实现)
  7. mschart走势图 vc_VC++操作MSChart表格控件,效果不错。
  8. 要怎么选择微信号码检测软件
  9. echats的基础知识及使用
  10. Java奇淫巧技之Lombok