如何从library添加aar依赖包依赖库的aar文件中去除不用的jar包

Android studio中生成引用.aar和.jar的方法详解
作者:smart_dev
字体:[ ] 类型:转载 时间:
这篇文章主要是讲解.aar的生成与引用,文中的内容属于完全基础性概念,对刚学习使用Android studio的朋友们很有帮助,有需要的可以参考学习,下面来一起看看吧。
在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。
分别存储位置:
&&&& *.jar:库 /build/intermediates/bundles/debug(release)/classes.jar
&&&&&*.aar:库 /build/outputs/aar/libraryname.aar
.jar 与 .aar的区别
从名称上来讲,一个是java application resource;一个是android application resource;
那所有的区别从名字上即可体会到:
&&&& .jar 中只包含class文件和清单文件
&&&& .aar 中包含了class文件和其他所有资源文件,包括res中资源文件
比如你的lib库是一个自定义view封装,里面不仅有class文件并且包含了资源文件,那么此时你就需要将这个库以.aar的形式来提供给使用。
Android studio中如何生成.aar .jar
studio中以moudel来管理,新建一个moudel,选中android library
新建一个android lib
然后代码完成后,编译这个moudel即可生成.aar及.jar
aar生成目录
jar生成目录
你可以根据你的类库的作用,如果包含资源文件,就用aar.
Android studio中如何引用.aar .jar
将*.jar拷贝到app中的lib下
更改build.gradle 配置文件
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
在studio新版本中会自动生成,所有你只需直接拷贝.jar到lib目录下编译既可。
引用本地 .aar
将*.aar拷贝到app中的lib下
更改build.gradle 配置文件
repositories {
dirs 'libs'
dependencies {
compile(name: 'HouyiLib_v1.0.1', ext: 'aar')
值得注意的是:如果aar中也引用了第三方的lib,那么打包后的aar中是没有把这些三方库加入到aar中的,这样就需要在app中除了引用.aar外还要引用其中需要的其他第三方库。
以上就是这篇文章的全部内容了,希望本文的内容对大家学习使用Android Studio能有所帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Android工程依赖:android中打包带有Activity以及资源文件的jar包在工程中调用 - Android当前位置:& &&&Android工程依赖:android中打包带有Activity以及资Android工程依赖:android中打包带有Activity以及资源文件的jar包在工程中调用&&网友分享于:&&浏览:1281次Android工程依赖:android中打包含有Activity以及资源文件的jar包在工程中调用
将其中一个项目设置为引用的库,在另一个项目中添加这个库引用。
简单点的做法是
在被引用项目A中的project-properties 中添加一行 android.library=true
在引用的项目B 中添加android.library.reference.1=../A
其中 1表示引用的包的序号,“../A”表示 引用的项目的路径
具体做法如下:
第一步,把普通的android project设置成库项目
库项目也是一个标准的android项目,因此你先创建一个普通的android项目。 这个项目可以起任何的名称,任何的报名,设置其他需要设置的字段等,如图1所示。
接着把项目设置成库项目,步骤如下
在Package Explorer中, 鼠标右键项目文件夹,点击 Properties.
在Properties 窗口, 选择"Android" ,Library属性显示在右下边.
把"is Library" 单选框选择上,再点击 Apply.
点击 OK 关闭Properties 窗口.
这时,这个项目就变成库项目了。
当然,java项目也可以让其变成一个库项目,非常简单,执行上面的四步。其他程序项目就可以引用库项目了。
图 1.使一个项目为库项目
创建manifest文件
一个库项目的manifest文件也和标准的android应用程序一样,声明所有共享的组件。
比如APIDemo中的TicTacToeLib 这个例子,库项目声明了Activity GameActivity:
&manifest&
&application&
&activity android:name="GameActivity" /&
&/application&
&/manifest&
第二步 引用库项目
如果你开发的应用程序想要包括库项目中的代码和资源,非常简单,引用步骤如下
在Package Explorer中, 鼠标右键项目文件夹,点击 Properties.
在Properties 窗口, 选择"Android" ,Library属性显示在右下边.
点击Add ,打开了Project Selection对话框.
从可用库项目列表选择一个项目,然后点击 OK.
对话框关闭之后点击 Apply (在Properties窗口).
点击 OK 关闭Properties 窗口.
完成以上六步,Eclipse 会重建项目,把库项目中的内容包含进去。 如图2所示
图 2.让项目引用一个库项目
如果你想增加多个库项目的引用,使用up和down可以设置他们的相对的优先级和合并顺序。工具在合并引用的库的时候顺序是从低优先级(列表的下面)到高优先级(列表的上面)。 如果不只一个库定义了相同的资源ID,这个工具选择资源时会选择高优先级的资源。应用程序自身拥有最高的优先级,自身的资源zThe application itself has highest priority and its resources are always used in preference to identical resource IDs defined in libraries.
在menifest文件中声明库中的组件
在manifest文件中必须增加对在当前程序中用到的库项目中的所有的组件。比如,你必须声明任何用到的 &activity&, &service&, &receiver&, &provider&等,&permission&, &uses-library&,和其他类似的元素。
声明库项目中的组件时,必须使用包含包名的类全名。
在TicTacToeMain例子中,声明库Activity GameActivity :
&manifest&
&application&
&activity android:name="com.example.android.tictactoe.library.GameActivity" /&
&/application&
&/manifest&
需要了解更多关于androidManifest的信息请参阅 AndroidManifest.xml.
例子参见android-SDK下的\android-sdk\samples\android-x下的两个例子工程:TicTacToeLib和TicTacToeMain。可以看见两个工程下的project.properties文件。
库工程TicTacToeLib的:
android.library=true
target=android-3
主工程TicTacToeMain的:
android.library.reference.1=../TicTacToeLib/
target=android-8
可以参考SDK下的自带的例子,很好的学习库::\android-sdk\samples\... 真是一个大的宝库
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有自己搭建android compile引用库,把aar (library)上传到bitbucket的maven仓库(by 星空武哥)
自己搭建android compile引用库,把aar (library)上传到bitbucket的maven仓库(by 星空武哥)
发布时间: 15:58:31
编辑:www.fx114.net
本篇文章主要介绍了"自己搭建android compile引用库,把aar (library)上传到bitbucket的maven仓库(by 星空武哥)",主要涉及到自己搭建android compile引用库,把aar (library)上传到bitbucket的maven仓库(by 星空武哥)方面的内容,对于自己搭建android compile引用库,把aar (library)上传到bitbucket的maven仓库(by 星空武哥)感兴趣的同学可以参考一下。
&&&& 转载请标注原文地址:
&&&&& 当我们使用android studio的开发的时候,我们可以很方面的使用compile & &命令很方便的使用别人的第三方aar库
比如我们引用okhttp的时候就可以在gradle中:
dependencies {
compile 'com.squareup.okhttp3:okhttp:3.3.1'
感觉好高大上,今天我们就来实现自己的library在gradle用compile引用,就以bitbucket的仓库为例,当然github也可以,这里就不讲了,看完这篇文章可以试试github。
1、首先我们创建一个project,里面包含一个toolslibrary的库和一个app的module,让app依赖toolslibrary。
app依赖ToolsLibrary
&我们在toolslibrary里写了一个Toast的工具类来测试效果,然后在app里调用它
2、如果你的本地没有ssh key需要先配置,不然会失败,配置的方式请参考这篇博客:
3、创建bitbucket的maven仓库,我们这一步骤的目的:
(1)创建一个maven仓库,
(2)主分支为release
(3)上传一个“README.md”的说明文件到该仓库
&& 你不一定非要使用下面的步骤,你可以用自己的方式,但是你必须满足上面的这三个条件,否则会失败。
&&& 3.1 、我们在bitbucket中创建一个bitbucket_maven仓库
&3.2 、clone到本地,提示是一个空仓库
&3.3 、进入bitbucket_maven这文件夹
cd bitbucket_maven
&3.4、新建一个md文件,内容随便写,命名为“README.md”,必须是这个名字否则会失败。复制到bitbucket_maven文件夹下,
&然后git添加README.md文件
git add README.md&
3.5、 commit ,这一步比较麻烦,如果你使用过linux下的vi或vim会很感觉简单
git commit
输入完命令后可能进入了一个你不会操作的界面,但不要着急,仔细看下面这段话。
&&&& 1、首先你按下 回车键 或者 “i”
就进入了编辑状态,
&&&& 2、然后用键盘方向键将光标移到最下面,随便输入字母,我这里输入 init ,
&&&& 3、此时按下 “Esc” 键,然后再按住 “shift”+“冒号”键(L键右边),你会发现在左下方有个“:”,
&&&& 4、然后再输入 “w”、“q” 两个字母,表示保存退出的意思。
不会那就仔细看截图
&3.6 、新建一个release分支
git branch releases
&3.7、push到仓库
git push origin releases
&3.8 、进入bitbucket可以看到我们上传的README.md文件
&3.9 、如果你是其他方式完成的此步骤,你必须保证主分支是release,这里我们可以查看设置一下
4、实现功能
&&& 我们使用了GItAsMaven这个工具
&&& 可以在你的toolslibrary中的build.gradle中添加下面的命令来引用,也可以直接将文件复制到toolslibrary根目录下再引用它,这里我选用的后者。
apply from: '/JeroenMols/GitAsMaven/master/publish-bitbucket.gradle'
4.1、直接clone下来将publish-bitbucket.gradle文件复制到了toolslibrary根目录,在build.gradle引用他
apply from: 'publish-bitbucket.gradle'
&4.2、在toolslibrary的根目录创建gradle.properties文件,复制下面的文件,粘贴保存。这一步一定要仔细,不然很容易失败,
注意:等号后面不能有空格
ARTIFACT_PACKAGE=&包名&
ARTIFACT_NAME=&librar名字&
ARTIFACT_VERSION=&版本号&
ARTIFACT_PACKAGING=aar
COMPANY=&账户名/组名&
REPOSITORY_NAME=&仓库名&
&4.3 、复制下面的配置到你的project的gradle.properties文件内
USERNAME=&bitbucket账号&
PASSWORD=&bitbucket密码&
&5 、最后一步,执行运行命令
&&& 在terminal中输入下面的命令然后回车就开始执行(在第一次执行命令前,一定要先RebuildProject一次)
gradlew uploadArchives&
很幸运一次就成功了
6 、问题总结
&6.1 、看结果,虽然提示401 但是还是没问题,提示的错误是因为不支持中文的javadoc,后面我会给出解决方法
&解决“编码GBK的不可映射字符”的错误,我们在publish-bitbucket.gradle修改如下
&然后重新执行命令(注意:这里要再次执行必须修改版本号(ARTIFACT_VERSION=1.0.1),不然会失败)
gradlew uploadArchives
& & 可以看到1.0.1的版本上传成功了,也没有报 “编码GBK的不可映射字符的错误”
& bitbucket仓库的文件
&6.2 、如果在上传你的library时还是失败,可以试试此方法。
7、测试引用的结果
&&&& 这里我又新建了一个project,然后配置三个地方就可以了
& 7.1、设置账户和密码
&7.2、设置依赖地址,在你新建的project的build.gradle中配置
url &https://api.bitbucket.org/1.0/repositories/用户名或团队名/仓库名/raw/releases&
credentials {
username USERNAME
password PASSWORD
7.3、引用依赖,最关键的一部了
引用格式
compile 'ARTIFACT_PACKAGE:ARTIFACT_NAME:ARTIFACT_VERSION' //这是引用的格式
compile '包名:library名:版本号'
7.4、调用ToastUtils这个类
&可以看到可以调用了,说明成功了
参考文章:
参考文章:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:Android Library项目中如果使用Android Gradle plugin打aar包,通过maven依赖的库,或者是local依赖的aar都不会包含在生成的aar包里,如果项目是发布一个SDK,为了方便开发者使用,我们倾向于生成一个包含所有依赖库以及.so等文件的aar包。
通过反复研究和测试,以下Gradle脚本能满足需求,如果需要对代码运行ProGuard混淆,则需要使用Gradle 2.1
方法是为项目增加一个sub project(如pkg_project)专门用于打包,该项目中build.gradle内容如下:
apply plugin: 'java'version = 1.0
buildscript {
repositories {
mavenCentral()
dependencies {
classpath 'com.android.tools.build:gradle:19.1.0'
repositories {
mavenCentral()}
dependencies {
compile project(':&your_library_project&') //此处填写需要打包的Android Library Project name}
task sync_jars() && {
//把所有依赖的.jar库都拷贝到build/aar/libs下
into buildDir.getPath() +&/aar/libs&
from configurations.compile.findAll {
it.getName().endsWith(&.jar&)
task sync_aars(dependsOn:':&your_library_project&:assembleRelease') && {
//把所有依赖的.aar库里包含的classes.jar都拷贝到build/aar/libs下,并重命名以不被覆盖
def jar_name
def aar_path
def dest_dir = buildDir.getPath()+&/aar&
configurations.compile.findAll {
it.getName().endsWith(&.aar&)
}.collect {
aar_path = it.getPath()
jar_name = &libs/&+it.getName().replace(&.aar&,&.jar&)
from zipTree(aar_path)
into dest_dir
include &**/*&
rename 'classes.jar', jar_name
task fataar(dependsOn:[sync_aars, sync_jars]) && {
task (obfuse_classes_jar, type: proguard.gradle.ProGuardTask) {
//把build/aar/libs/*.jar混淆后生成build/aar/classes.jar
configuration &proguard.cfg&
injars buildDir.getPath()+&/aar/libs&
outjars buildDir.getPath()+&/aar/classes.jar&
libraryjars &${System.getProperty('java.home')}/lib/rt.jar&
libraryjars &${System.getProperty('java.home')}/Contents/Classes/classes.jar&
libraryjars System.getenv(&ANDROID_HOME&)+&/platforms/android-19/android.jar&
}.execute()
task (gen_aar, type: Zip) {
//把生成最终的aar包,注意libs目录需要被排除
def dest_dir = buildDir.getPath()+&/aar/&
baseName = &mysdk-all&
extension = &aar&
destinationDir = file(buildDir.getPath())
from dest_dir
exclude &libs&
}.execute()}
最后就可以使用gradlew pkg_project:fataar来打包了
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:34792次
排名:千里之外
原创:14篇
评论:12条
(1)(3)(1)(1)(1)(2)(1)(1)(1)(2)(1)(1)(4)(1)

我要回帖

更多关于 library添加aar依赖包 的文章

 

随机推荐