关于安卓子模块打包,aar,jar丢失问题

背景

项目中,三方依赖是一个本地子module,子module中,又引入了一些aar,jar包。这个时候,如果子module要输入一个aar包给业务侧调用,观察打包结果。

问题

如果直接使用gradle进行打包,会导致子module中引入的aar,jar包导入失败,这个时候,主项目如果有用到这些aar包或者jar包,就会报错,提示找不到这个依赖。
通过打开生成的产物,也可以观察到,lib目录下,是没有引入到这些aar,jar包的。

修复

思路:主要原因,是这个子模块在打包的过程,没有把自己的三方依赖一起打包。
方式:
使用三方库进行导入:fataar
这个库,主要是打包的场景下用到的,专门处理这种打包三方依赖丢失的问题,详情用法,文档中有。
这里简单说明一下:
(1)根build.gradle引入:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.github.kezong:fat-aar:1.3.8'
    }
}

(2)需要打包的子module引入(输出aar的module)

apply plugin: 'com.kezong.fat-aar'

(3)子module引入三方依赖时的语法处理

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    // java dependency
    embed project(path: ':lib-java', configuration: 'default')
    // aar dependency
    embed project(path: ':lib-aar', configuration: 'default')
    // aar dependency
    embed project(path: ':lib-aar2', configuration: 'default')
    // local full aar dependency, just build in flavor1
    flavor1Embed project(path: ':lib-aar-local', configuration: 'default')
    // local full aar dependency, just build in debug
    debugEmbed(name: 'lib-aar-local2', ext: 'aar')
    // remote jar dependency
    embed 'com.google.guava:guava:20.0'
    // remote aar dependency
    embed 'com.facebook.fresco:fresco:1.12.0'
    // don't want to embed in
    implementation('androidx.appcompat:appcompat:1.2.0')
}

(4)所有依赖产物都打包进入产出的aar中
这里就要在产出module的build.gradle文件中,声明如下:

fataar {
    transitive = true
}

同样,如果要忽略,就用exclude语法,和原来一致,示例如下:

embed('com.facebook.fresco:fresco:1.11.0') {
    // exclude any group or module
    exclude(group:'com.facebook.soloader', module:'soloader')
    // exclude all dependencies
    transitive = false
}

其中,可以看到,是用embed代替implementation的

后续打包步骤,和原生一致,这里就不再叙述了。

that’s all-------------------------------------------------------------

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值