android studio打包aar遇到的坑

先简单介绍一下前景,由于我们的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 同一版本覆盖发布即可。

 

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要打包一个aar文件,可以按照以下步骤进行操作: 1. 在Android Studio中打开你的项目。 2. 在项目根目录下创建一个新的module,选择"Android Library"。 3. 在新的module中添加你想要打包的代码和资源文件。 4. 在新的module的build.gradle文件中添加以下代码: ``` apply plugin: 'com.android.library' android { // 配置你的库的版本号、包名、最小SDK版本等信息 } dependencies { // 添加你的库依赖的其他库 } // 配置打包输出的aar文件名 task createAar(type: Copy) { from('build/outputs/aar/') into('../aar/') include('*.aar') } // 执行打包任务 assemble.dependsOn createAar ``` 5. 在Android Studio的Terminal中执行以下命令: ``` ./gradlew assemble ``` 6. 打包完成后,在项目根目录下的"aar"文件夹中可以找到生成的aar文件。 希望这个回答能够帮到你! ### 回答2: Android Studio是一款功能强大的Android开发工具,可以方便地创建和打包aar库。aar文件Android应用程序库的格式,可以包含Activity、资源文件、Java等。 首先,我们需要在Android Studio中创建一个库项目。可以右键单击项目,然后选择“New”>“Module”>“Android Library”。 然后,我们需要在该库项目中添加所需的代码、资源、等。在添加完毕后,我们需要在项目的根目录下的build.gradle文件中进行如下配置: ``` apply plugin: 'com.android.library' android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { minSdkVersion 16 targetSdkVersion 30 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.3.0' } ``` 注意,我们需要将插件“com.android.application”改为“com.android.library”,以便打包aar库。 接下来,我们需要在项目根目录下的gradle.properties文件中添加以下内容: ``` android.useAndroidX=true android.enableJetifier=true ``` 这些属性将自动更新库项目中的依赖项,使其兼容AndroidX。 最后,我们需要在菜单栏中的“Build”>“Make Module 'library_name'”来打包aar库。打包后的文件将存储在项目目录下的build/outputs/aar/目录中,可以作为库供其他应用程序使用。 总之,Android Studio可以方便地创建和打包aar库,只需要按照上述步骤进行配置即可。 ### 回答3: Android Studio是一款高效的Android开发IDE,提供了打包aarAndroid Archive)的功能。 AAR是一种Android Library项目的一种打包方式。通常情况下,一个Android Library会被打包为一个AAR文件,可以被其他的Android项目引用。Android Studio提供了一种非常简单的方法来打包aar文件,并将它作为一个库项目添加到其他的Android项目中去。 以下是打包aar文件的步骤: 1. 创建一个新的Android Library项目。 2. 在模块的build.gradle文件中,添加以下内容: ``` apply plugin: 'com.android.library' android { //添加打包配置 libraryVariants.all { variant -> variant.outputs.all { outputFileName = "${project.getName()}-${variant.baseName}-${variant.versionName}.aar" } } } ``` 3. 然后,点击菜单 "File" -> "Project Structure",在左侧面板中选择"Modules" ,然后点击“+”号新建模块: 4. 选择“Import.Jar/.AAR”选项。 5. 选择刚才打包aar文件,然后设置新模块的名称和安装路径。 6. 点击“Finish”按钮,然后在新的模块中引用你的库文件。 通过以上步骤,即可轻松地将Android Library项目打包aar文件,并将其添加到其他的Android项目中去。使用aar文件,可以加速应用程序的构建过程,同时也可以提高开发者的生产效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值