首页 > 系统 > Android > 正文

Android SDK开发心得总结

2019-11-09 15:09:26
字体:
来源:转载
供稿:网友

最近有朋友在我的博客私信我,向我咨询一些关于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; @Override public 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); //创建一个TextView TextView testTV = new TextView(mContext); testTV.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); testTV.setText("这里是动态创建的布局"); //将TextView加入到根布局中 rootLayout.addView(testTV); //将布局添加到activity setContentView(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交流,感谢各位大佬的博客,贸然引用,还请见谅,笔者已然懒癌晚期。。。嘿嘿。皮皮虾,我们走。。。。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表