精华内容
下载资源
问答
  • 2021-06-10 10:10:07

    一、背景

    在写基础库的时候需要打包一个arr提供给业务app的时候有两种方式,一种是将打包的aar直接发给业务开发人员通过本地依赖的方式引入或者将打包好的aar上传到maven私服上面业务app通过远程依赖的方式接入。但是有时候我们不想将自己的maven私服提供给别人就需要用本地依赖的方式,AS本地依赖打包出来的aar是不含有三方库的,业务app只依赖arr会报类找不到的错误。

    二、解决方案

    1.为什么aar不包含依赖代码

    Google Android Studio 的负责人在 stackoverflow 上解释了 为什么 Android Studio 不能将多个依赖打包进一个 AAR 文件的原因,是因为将不同的library打包在一起,涉及到资源和配置文件智能合并,所以是个比较复杂的问题,同时也容易造成相同的依赖冲突。

    2.app接入的时候引入三方库
    apply plugin: 'kotlin-android'
    apply plugin: 'org.greenrobot.greendao'
    apply plugin: 'kotlin-kapt'
    
    android {
        //为引入aar包做准备
        repositories {
            flatDir { dirs 'libs' }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        //加入aar本地依赖包,例如:
        implementation (name: 'aarName', ext: 'aar')
        //aar依赖的三方库引入
        implementation "com.squareup.retrofit2:converter-gson:2.4.0"
        implementation "com.google.android.material:material:1.1.0"
        ...
    }
    
    3.使用fat-aar-android将第三方库代码编译到aar中

    官方虽然不支持,但是开发者的能力是无限的,为了解决此问题,开发出来了一个 Gradle 插件 fat-aar-android, 这种方式是抛弃 Android Studio 自带的打包 AAR 的方法,而是自己编写一个生成 AAR 的脚本。

    更多相关内容
  • Android studio 的 module 打包一般会打包aar 的形式。如果 module 引用了一个本地的 aar,在打包的时候,这个被引用的 aar 是不会打包进去的,这种设计思想是比较好的,可以很好的避免包冲突的问题。例如 App ...
  • 主要介绍了Android Studio打包jar及aar包的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 1.新建一个Android工程,这个大家都会,步骤省略2.在刚刚新建的工程中新建一个module。依次步骤:点击 File ===》New ===》 New Module ===》 选择Android Library ===》点击nextandroid_library.png3.在新建的...

    1.新建一个Android工程,这个大家都会,步骤省略

    2.在刚刚新建的工程中新建一个module。依次步骤:点击 File ===》New ===》 New Module ===》 选择Android Library ===》点击next

    a8358d89461c

    android_library.png

    3.在新建的module中创建一个测试类,例如下图的类:

    a8358d89461c

    mylibrary.png

    内容:

    public class LogUtil {

    public static String showLog() {

    return "jar====>返回的数据";

    }

    }

    4.在module的gradle.build中添加makeJar的相关配置代码,如下:

    def _BASENAME = "TestJar";

    def _VERSION = "_V1.0";

    def _DestinationPath = "build"; //生成jar包的位置

    def zipFile = file('build/intermediates/intermediate-jars/release/classes.jar'); //待打包文件位置

    task deleteBuild(type:Delete){

    delete _DestinationPath + _BASENAME + _VERSION + ".jar"

    }

    task makeJar(type:Jar){

    from zipTree(zipFile)

    from fileTree(dir:'src/main',includes:['assets/**']) //将assets目录打入jar包

    baseName = _BASENAME + _VERSION

    destinationDir = file(_DestinationPath)

    }

    makeJar.dependsOn(deleteBuild, build)

    注意:上面的这段代码跟android{}这个节点是平级的

    5.编译生成jar包的操作,有两种方法:

    方法一:依次找到以下窗口,点击:

    a8358d89461c

    Gradle.png

    找到新建的module的Gradle,打开节点,依次打开Task ===》 other ===》 双击makeJar,就会编译,最后在新建module的build目录下生成目标jar文件

    a8358d89461c

    image.png

    a8358d89461c

    image.png

    a8358d89461c

    image.png

    而相应的aar文件则会同时生成:在下图目录中

    a8358d89461c

    image.png

    aar文件和jar的内容区别:aar文件包含了res目录下的资源文件,一般的jar下不包含,经过特殊的配置之后也可以包含res资源

    当然配置编译生成jar文件的另外两种配置可以参考下面的链接!

    感谢支持!

    展开全文
  • 前言jar与aar差异*.jar:...*.aar:包含所有资源 ,class 以及 res 资源文件全部包含1、将app-build.gradle的apply plugin: ‘com.android.application’修改成apply plugin: ‘com.android.library’,注释applicat...

    前言

    jar与aar差异

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

    *.aar:包含所有资源 ,class 以及 res 资源文件全部包含

    1、将app-build.gradle的apply plugin: ‘com.android.application’修改成apply plugin: ‘com.android.library’,注释applicationId,使我们的框架作为library;

    //apply plugin: 'com.android.application'

    apply plugin: 'com.android.library'

    defaultConfig {

    // applicationId "com.sunsky.aardemo"

    ……

    }

    2、将manifest中launcher去掉:

    android:icon="@mipmap/ic_launcher"

    android:label="@string/app_name"

    android:roundIcon="@mipmap/ic_launcher_round"

    android:supportsRtl="true"

    android:theme="@style/AppTheme"

    3、导出 AAR

    打开 Andriod Studio 右上角的Gradle projects,依次展开aardemo -> app -> Tasks -> build,双击 assemble

    acb6dd415b24

    导出AAR

    这时打开文件夹 app -> build -> outputs -> aar,将看到自动生成的app-debug.aar 和app-release.aar

    acb6dd415b24

    AAR文件目录

    4、Project引用 AAR(本地)

    4.1将aar文件放入libs目录里面

    4.2 在app目录下的build.gradle文件中添加以下内容

    implementation(name: 'app-release', ext: 'aar')//app-release为文件名称

    展开全文
  • 先简单介绍一下前景,由于我们的...2.如果我们的sdk内部不包括任何三方库,那么直接在android studio的gradle 自己module的Task-->build-->assemble 执行即可.。 然后就可以在build文件夹中的outputs文件中

    先简单介绍一下前景,由于我们的sdk内部实现不想暴露出来,所以考虑到打成jar包的形式
    1.android sdk 一般分为两种:

    .jar(仅包含编译生成的class文件),

    .aar(包含jar和资源文件),

    这个根据个人的项目需求可以决定使用哪一种;


    2.如果我们的sdk内部不包括任何三方库,那么直接在android studio的gradle 自己module的Task-->build-->assemble 执行即可.。


    然后就可以在build文件夹中的outputs文件中找到自己的aar文件,解压之后就可以看到对应的jar文件;

    在新项目中如何引入aar或jar即可,不再赘述。


    3.如果我们的sdk内部依赖了三方库,例如网络库OkHttp等,再使用以上方式,你会发现当去调用OkHttp的时候会报错,因为打成的本地aar文件是不包含三方的远程依赖库的,
    官方解释:怕三方依赖库之间冲突,为了避免此种情况,所以本地打成的aar文件无法包含三方依赖库。
    所以我们需要使用如下方式:

    3.1 打开 library 的 build.gradle 文件,在最外层加入如下内容:
     

    apply plugin: 'maven'
    
    
    uploadArchives{
        repositories.mavenDeployer{
            //本地仓库用这个: 本地仓库路径, Windows 为(url:"file://E://***/***/***/")
            repository(url:"file:/home/xxx/desklop/mysdk/")
    
            //远程用这个:指定maven远程仓库url
    	    //repository(url: "http://localhost:8081/nexus/content/repositories/releases/") {
    	    //nexus登录默认用户名和密码
    	    //authentication(userName: "admin", password: "admin")
    	    //}
    
            // 唯一标识
            pom.groupId = "com.xxx"
            // 项目名称
            pom.artifactId = "libA"
            // 版本号
            pom.version = "1.0"
        }
    }

    3.2 同样的,打开Android Studio右侧的Gradle面板,双击 module下面的 Tasks/upload/uploadArchives

    3.3 build success之后,本地配置的仓库路径中将会生成aar相关的文件

    3.4 在app module中引用aar,首先在根目录的 build.gradle 的仓库配置中加入本地仓库地址,然后在app module 的bulid.gradle 中添加 项目依赖

    //maven引入 二选一 添加到 项目级的 build.gradle
    maven{
        url 'file:/home/xxx/desklop/mysdk/'
    }
    
    // 远程仓库一般不需要再添加账户密码,但如果是需要验证账户和密码,则要添加credentials 及username、password 一起填入,否则会出现无法下载到sdk的情况
    //maven{
    //	url 'http://localhost:8081/nexus/content/repositories/releases/'
    //	credentials {
    //		username 'admin'
    //		password 'admin'
    //	}
    //}
     
    
    // 添加到 app 的 build.gradle,注意名字规则和上面配置本地仓库之间的关联
    implementation 'com.xxx:libA:1.0'

    如果是远程仓库则需要将本地的url替换为远程仓库url。
    注意:

    1.需要将 build 配置中的 apply plugin: 'com.android.application' 替换成 apply plugin: 'com.android.library',并且去掉applicationId

    2.有个细节,如果我们封装的aar需要给到react native使用,那么如果创建的module是直接在android原生项目中,它所依赖的 implementation "com.facebook.react:react-native:+" ,
    (有些比如像ReactPackageReadableMap都会有变更)你会发现Project中 External Libraries的 com.facebook.react:react-native 是v0.2.1版本的,这是因为jcenter中的当前库就是这个版本的,
    那么我们就需要换一个思路了,我们需要创建一个RN的项目,当前我使用的RN版本是  "react-native": "0.63.4"
    当我们把RN项目 npm init 之后,再去原生中创建或者将之前已经封装好的module再引入,那么再打成aar时,这时我们的sdk依赖的react-native版本就已经是高版本的了。

    3.无法重复上传同一个版本的sdk ,build会出现:Return code is: 400, ReasonPhrase: Bad Request.

    需要对maven库配置 设置允许release 同一版本覆盖发布即可。

     

    以上为个人的一些记录,如有帮助,记得点赞三连~

    展开全文
  • Android studio打包 aar

    2018-02-11 23:00:35
    android studio 2.0正式版为例1.aar包是Android studio打包android工程中src、res、lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件2.生成aar包步骤:2.1用...
  • Android Library 2.左侧切换至project 3.将用到的jar包放至libs,右击->add as library 4.若要导入.so文件 a.在src/main下新建文件夹jnLibs(必须是这个名字) b.将so文件放入 5.要在aar里写调用方法和逻辑写...
  • 需求现在有一个第三方库libstatic_add.a和对应的...方案创建Android Studio Library Project创建Project时,记得添加"Include C++ Support",如果没有安装CMake,LLDB和NDK的话,记得安装一下。项目创建好后,包括以...
  • AndroidStudio打包aar文件

    2018-11-02 15:17:11
    unity实际项目中,unity会调用...一 在androidStudio上创建一个新的android工程。 选择相应的androidSDK创建一个新的android工程。 二 添加Unity的class.jar 把Unity安装路径下的Editor\Data\PlaybackEngines\Andr...
  • android studio 打包aar 与 引入aar包

    千次阅读 2021-06-28 23:48:36
    1、 aar包是Android studio打包Android工程中src、res、lib后生成的aar文件(与Jar包最大的不同是Jar包不包含资源文件,而aar包中是包含的) 2、打aar包基本不需要什么操作,按下图步骤操作即可: 二、android ...
  • 打包aar -> 新建项目 -> 引入aar -> 编译运行 结果奔溃了!!! 原因是:class not found. 其实就是打包aar的时候远程依赖没有被添加到aar中。 所以把aar需要的远程依赖,添加一份到app的gradle文件就好...
  • Android Studio 打包 aar

    2020-11-11 23:12:01
    https://www.jianshu.com/p/baa7976cec09
  • AndroidStudio打包aar到JCenter仓库所使用的附件,我的博客地址为http://blog.csdn.net/ls1110924?viewmode=contents
  • Android 开发中对aar包和.jar包的使用必不可少,下面来总结一下新建一个项目为MyaarTest的工程,在file–>new moudle–>选择Androidlibrary创建一个名称为aartest的library,在这里定义自己的代码;其中生成aar包的...
  • android studio 打包aar

    千次阅读 2019-07-19 10:59:54
    本文摘抄网址:Android Studio 打包 aar artifactory下载网址:https://jfrog.com/open-source/ android中自动上传aar的代码设置:Artifactory的搭建与使用简介 推荐查看maven的一些属性设置:maven3常用POM属性...
  • 使用android studio打包和导入aar

    千次阅读 2022-01-12 13:47:48
    1,使用android studio新建项目之后,新建一个moudel。 File - new -new module,选择android library,取名为myapplication 在myapplication下的目录,src/main/java 下新建Java文件StringUtils package ...
  • 首先创建一个android工程,之后新建文件夹,和app平级 任意取名,我这边随便取了个ss 把要导入的aar文件拖入,并在ss文件夹内新建build.gradle文件 build.gradle文件输入以下内容 configurations.maybeCreate(...
  • 一. 简介 aar 是一个类似于 jar 的文件格式。但是他们之间是有区别的。...将一个AndroidStudio项目中的 Module 打包aar 其实很简单。 在每一个 Module 的目录下面都会有这样一个文件夹: build\outputs\
  • Android Studioaar

    2021-05-19 16:32:21
    给客户一个静态aar包比给一堆so动态库和jar包好。 打包 在你写好的SDK项目基础上,以下操作:(这里写好的意思指运行没问题,so包平台兼容并正常,打的jar包也没问题) 使用
  • AndroidStudio导出aar到Unity使用。

    千次阅读 2021-10-14 13:42:53
    新建空androidstudio工程 二。 新建module module名字随意,看个人喜好 三。在新建出的module中添加你的Unity的 classes.jar(获取途径:你自己的unity目录中【Editor\Data\PlaybackEngines\Android...
  • 首先什么是aar格式看看官网的说明:The 'aar' bundle is the binary distribution of an Android Library Project.The file extension is .aar, and the maven artifact type should be aar as well, but the file ...
  • Android studio 打包aar

    千次阅读 2015-07-13 11:16:13
    1.在库项目module下的build.gradle文件中添加以下代码 apply plugin: 'maven' group = 'com.tbc.android.test' version = '1.0.0' uploadArchives {  repositories {  mavenDeployer {  po
  • AndroidStudio生成aar包和如何使用aar

    千次阅读 2021-10-12 17:07:18
    aar包是Androidstudio打包android工程中src、res、lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 2、生成aar包步骤 2.1、用android studio打开一个工程,然后...
  • AS打包AAR以及常见报错 ps:假如你已下载AS2020.3并且已经配置好了sdk以及jdk 1.新建Project File-New project-Empty Activity 2.以默认app模块作为Module,编译aar需要该模块 在该Module内我们需要修改...
  • 我们写了一个项目A,要打包aar文件,给第三方公司使用,但是我们的项目A里,用的有另外公司的aar文件。也就是aar文件里嵌套aar文件。这种情况怎么打包呢?   把工程app下的build.gradle的 apply plugin: '...
  • AndroidStudio打包嵌套第三方aaraar

    千次阅读 2021-06-03 17:18:37
    之前写过一个如果打包嵌套第三方...解决这个问题,我使用的是fat-aar工具,参考博客图解使用fat-aar方式在AndroidStudio打包嵌套第三方aaraar,博客很详细。主要步骤如下: 1、Screen代码库app下的build.gradle中加
  • 打包方法: 然后找到生成的AAR:   导入u3d时需要注意: 先用压缩软件打开aar文件,然后删除libs文件夹中的classes.jar 如果删除了下图中的classes.jar:   不删除classes.jar就会出现: Failed to Move ...
  • 需求 现在有一个第三方库libstatic_add.a和对应的头文件static.h,...创建Android Studio Library Project 创建Project时,记得添加"Include C++ Support",如果没有安装CMake,LLDB和NDK的话,记得安装一下。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,256
精华内容 2,102
关键字:

androidstudio打包aar