Android项目生成aar包或者共享库文件供其他项目使用以及问题解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuchao_blog/article/details/54970244

Android共享包分两类:

1:*.jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
2:*.aar: 包含所有资源 ,class以及res资源文件全部包含

下面主要给大家介绍aar包的生成和引用方法:

一、’在Android studio打开一个工程,然后新建一个Module,新建Module时候选择Android Library,后面按新建普通工程操作




二、新建Module 类型为android Library 后如下图所示



三、.在新建的Module中编写完代码后,接下来编译整个工程后就会自动生成aar包,包的路径在新建的Module ==》 build ===》outputs ==>aar目录下。 如图


四、aar包生成成功后,就可以把生成好的.aar文件拷贝到需要引用的工程项目中的libs目录下;


接下来还需要配置一下项目中的build.gradle文件:

在android的目录下添加:

 repositories {
        flatDir {
        dirs 'libs'
    }

②在dependencies 的目录下添加:

compile(name:'你的aar包名', ext:'aar')

完整的配置文件:

[java] view plain copy
  1. apply plugin: 'com.android.application'  
  2.   
  3. android {  
  4.     compileSdkVersion 22  
  5.     buildToolsVersion "22.0.1"  
  6.   
  7.     defaultConfig {  
  8.         applicationId "com.geenk.testcamerascanarr"  
  9.         minSdkVersion 11  
  10.         targetSdkVersion 22  
  11.         versionCode 1  
  12.         versionName "1.0"  
  13.     }  
  14.     buildTypes {  
  15.         release {  
  16.             minifyEnabled false  
  17.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
  18.         }  
  19.     }  
  20.     repositories {  
  21.         flatDir {  
  22.         dirs 'libs'  
  23.     }  
  24. }  
  25. }  
  26.   
  27. dependencies {  
  28.     compile fileTree(dir: 'libs', include: ['*.jar'])   
  29.     compile 'com.android.support:appcompat-v7:22.2.0'  
  30.     compile(name:'你的aar包名', ext:'aar'
  31. }  
③.编译一次工程, 编译成功后,你将能在External Libraries列表中看到解析出来的aar文件,之后就可以在项目中直接调用aar共享包里面的所有资源了。


以上是在创建项目的时候就选择Liabrary库,如果我们想把已经创建好了的项目生成库文件该怎么操作呢?

两种思路:

1.像上面的,新建一个新的library配置一下,把你的代码java,res,libs什么的拷贝过去,重新配置一下gradle的文件。

2.把现有的项目,删掉不必要的文件,修改一下配置文件就可以导入了。这种方法是自己摸索出来的,下面要详细分享一下这种方法。

第一步:看到下面是一个准备的Android Studio项目,项目名叫CanvasDemo。把选中的删除,这些都是不必要的。


第二步:把app目录下的所有东西拖到根目录下,然后把app的目录删掉。


第三步:修改配置文件了,(1)把app.iml文件更名为与项目一致的CanvasDemo.iml,再用notepad++打开该文件,可见有两处的是 :app 的,也把它改为与项目名一致  :CanvasDemo ,保存一下。


第四步:打开build.gradle文件,要改两个地方,(1)把apply plugin: "com.android.application"这一句话改为apply plugin: "com.android.library",(2)带有applicationId开头的这一句话删。


第五步:拷贝把这个CanvasDemo到项目的根目录中


第六步:切换到Android目录下,打开settings.gradle文件,include这里加个逗号,加上':CanvasDemo'。这里就是上面为什么要把.iml后缀的文件名改为与项目名一致,并且把该文件里面的一些带:app的改为与项目名一致的:CanvasDemo。


第七步:最后一步就是在工程上加上该library的编译,手动和自动两种方式上面有提过到了,你懂得了,不懂往上一看就可以了,详细图解。

ps:在生成库后,build工程可能会遇到的坑:

1、manifest清单文件会报ic_launcher冲突错误,这是由于aar库里面的当前项目资源文件重名造成的。

解决的办法就是在application里面添加一个属性:

tools:replace="android:icon,android:theme"。
2、调试运行项目的时候,手机上面会出现2个相同的图标,这也是因为aar库里面清单文件里面主入口Activity的属性造成的:
<category android:name="android.intent.category.LAUNCHER" />
如果出现这个情况就需要先把共享的项目中主入口Activity的这个属性删除,然后重新从第一步开始生成库就可以了。


阅读更多

没有更多推荐了,返回首页