关于Andorid的第三方库导入和其他知识

来源:互联网 发布:琳琅怎么绑定淘宝账号 编辑:程序博客网 时间:2024/05/21 20:56

现在讲的都是些基础的东西,东西会一步步往上升的,知道操作的可以在这里找找问题  ,顺便温习下。然后不知道的就在这里学习下。嗯就这样吧。

  1. 第三方库的分类和区别。

  2. 如何导入这些库

 

一丶第三方库分类和区别:

  1.  jar文件。我们需要了解的是Jar通常都是只包含.class文件和清单文件。不包含资源文件,在Android里面就是不包含Layout.xml还有其他的资源。当然你也可以包含但是会识别不了。.class是我们.java编译出来的。这样比直接提供java少了一层编译。


    2. library文件。工程库.java和资源文件等。

   除了不能运行和progject基本上一样的。正常情况下是不能独立运行的, 但是也可以修改gradle来成为独立工程。通过相互切换可以做组件化开发加快调试。


把上面的是说可以运行的工程文件。下面就是library可以修然后运行。


    3. aar 文件。先说说aar文件和jar文件的区别吧。jar我们知道的是只有.class文件和清单文件而aar文件里面可以包含资源文件,说白了专属的Android jar。面也就是一些.jar+res+assets+R和清单文件等。一些必选和可选文件。我们突然发现了一个问题。这个和library有什么关系和区别呢?当然是有联系的。实际上aar是library编译后的文件的集合。

这里希望大家了解到一个事情就是library既可以编译成jar,又可以编译成aar。如果只是java文件可以选择导出jar。如果加UI应该导出aar。

来2张bigbang(逼格棒)的图片。




这个基本上不用怎么翻译了吧。就是我上面说的内容。第一张图是解释aar的。第二张图是说明aar里面必须要包含什么文件和可选的包含的文件。


这里给大家插播一个小知识。res/raw 和assets的异同。

相同点:都会原封不动的的打如apk包中。

不同点:res/raw中的文件会被映射到R.java里面可以通过 id open流找到并引用。而assets里面的文件则需要通过AssetManager来调用。还有一个不同的地方就是assets是可以建立二级目录的而res是不可以的。我现在好想哭,每个里面都有好多的知识点。还有里面文件大小的注意点等等无数的点。先了解个大概不要在意这些细节。看样子后面还得专门用一个篇幅写这些。

获取方式:

InputStream is = getResources().openRawResource(R.id.fileName);

AssetManager am = getAssets();

InpusStream is = am.open("fileName");


4.os文件。这个是动态库文件,这个要讲的话很大一个篇幅。先和大家说说大概吧。以后可以专门再用一篇讲讲这个。我们经常看到引入os的时候会有很多个文件夹,这个其实是不同cpu架构。目前支持7种,而每一种都关联一个相应的applicationBinary Interface。这个主要是定义了二进制文件如何在相应的系统平台上。这个里面很多东西。我也只是知道个皮毛。很多设备都支持多于一种的ABI。例如ARM64和x86设备也可以同时运行armeabi-v7a和armeabi的二进制包主要的架构有:armeabi,armeabi-v7a,X86,mips等等。也是大学的技术及组成原理里面的。

主要是由c。c++编写的。先了解这些吧。

      

二丶导入第三方库,方式和注意点。

A)     jar包的导入以fastJson为例子

下载链接:http://download.csdn.net/download/pdsyzbaozi/8199419

  1.   jar包的导入。这个就很好导入了也基本没有什么可以说的了吧。

  2.  先找到相应的jar包

  3.  工程切换到project模式。放入libs目录下。然后同步一下工程。理论上这样是可以了的。如果不行往下面走

  4. 在这里这样写,意思是将本libs里面的所有的以jar结尾的文件导入到工程里面来。

逗逼朋友们。如果没有libs目录怎么办,在app目录下自己创建。

示例图(fastJson):

    


大功告成


B)     Library的导入和注意:以PullToRefreshListView为例子

下载链接:https://github.com/chrisbanes/Android-PullToRefresh

  1. 找到并且下载并且解压

  2. 一步步往后next就可以了, 然后就会遇到这个问题


是说没有找到这个版本的的sdk要么点击下载,要么去求改library的gradle文件,修改很简单。compileSdkVersion就是说编译版本,你电脑上有哪个就添加哪个,最好就是用你主工程里面的。 buildeToolsVersion也是直接复制过来。然后同步一下工程就不会问题了。


完美。


c. 打开project Structure

找到你要添加lib就可以了。        



哦哦对了出现了小插曲,这个方进来用不了会报错。不是导包的问题,是包的问题。修改下就可以了。



C) .os文件的导入以高德地图为例子

  1.       还是得先下载下来os。


  1. 和java在同一个目录层级新建一个jniLibs,然后把文件全部拽进去,在有的时候我们看到在gradle有这样的配置

    SourceSets {

               main{

              JniLibs.srcDirs = [‘libs’]

             }

    }

这个是为什么呢。这里的话是因为我们没有将os文件放到jniLibs下面直接放到了libs下面和jar包在同一个目录,这样的话就得在gradle里面说明os路径,不然会找不到的。

配置好高德的一些配置然后运行就可以了。



但是在这个过程中又出现了小插曲。这个是调试后的结果.

给大家看看插曲

当我运行在模拟器上面的时候



说当前的native libs不支持当前的cup架构。然后修改模拟器cpu架构就可以。这个就说明了上面的为什么os分那么多包,是不同cpu架构调度不同的方法和什么对齐方式的。我知道一般arm是精简指令集,X86是复杂指令集的代表。是大学计算机组成里面了解的一点点。哦对了教大家看手机cpu架构


     

  adb shell

cat /proc/cupinfo

不要问我adb shell 怎么不是内部命令,不要问我cat的意思。

D)    aar的导入

  1. aar的导入方式一:Maven远程仓库

  compile'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'

  直接这样就可以了。


   b.arr的导入方式二:本地aar包

     1.直接本地aar包这个和jar一样放入libs里面就可以了。

     2.然后在gradle里面加入到工程里面

     3.compile(name:'fileName', ext:'aar') 

    补充说明:1.aar实际上就是Android专属的jar,建议将module都打成aar可以提高as的速度。因为里面主要是.class而不是.java不用编译。2.我们需找库导入的时候可以直接通过Project Structure里面选择Choose Library Dependncy找,先在我基本都是这样的。

像如果将我们自己开发的库打包成SDK给别人,无非也就是给别人提供这些。后面的内容会给大家讲如何将我们的库打包出来提供给别人用。

 如有什么问题可以添加我微信公众号,每天分享原创干货。

1 0
原创粉丝点击