创建包含多个 AAR/JAR 的 AAR

2024-01-17

我看到了一些问题(Android Studio 将 2 个 .aar 合二为一 https://stackoverflow.com/questions/30084314/android-studio-combine-2-aar-into-one和其他)由不同的开发人员发布,但我还没有看到明确的回复,使我能够创建一个包含 1 个或多个 AAR 或 JAR 的 AAR(我可以使用 JAR,因为我不需要共享任何资源;只需要类)。这是我的图书馆项目的 app.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.google.code.gson:gson:2.1'
    compile ('libs/eventbus.jar')
    compile project(':core-release')
    compile project(':midware-release')
}

同样,这个应用程序是一个库项目,需要另外两个库项目(“core-release”、“midware-release”),虽然我能够生成一个可以在我的应用程序中使用的 AAR 文件,但该应用程序无法找到依赖的库项目的类,因此,我必须将两个库项目的 AAR 添加到我的应用程序中。

这是 app.gradle 应用程序项目(无需手动添加 JAR),它无法找到依赖项目的类:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.app.sample"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile files('libs/eventbus.jar')
    compile project(':sdk3-debug')
}

我不认为库项目的 AAR 文件正在拉入依赖项目(AAR 或 JAR),因此应用程序无法找到这些类。

我读到了有关传递依赖的内容,但我无法找到可能对我的情况有所帮助的示例实现。


我还没有看到明确的答复,使我能够创建包含 1 个或多个 AAR 或 JAR 的 AAR。

是的,我认为因为这个主题不限于 AAR 或 JAR,而是 Maven 如何管理依赖关系。

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

虽然我能够生成一个可以在我的应用程序中使用的 AAR 文件,但该应用程序无法找到依赖库项目的类,因此我必须将两个库项目的 AAR 添加到我的应用程序中。

包含依赖项不是您的 AAR 责任,您的 POM 文件应包含有关依赖项的信息。

https://maven.apache.org/pom.html https://maven.apache.org/pom.html

我不认为库项目的 AAR 文件正在拉入依赖项目(AAR 或 JAR),因此应用程序无法找到这些类。

正确,您仍然需要在应用程序中包含库依赖项。

我假设您希望应用程序可以使用您的库,而不指定您的库依赖项core-release and midware-release。我在这里做了完整的解释android studio 生成带有依赖的aar https://stackoverflow.com/questions/26020466/android-studio-generate-aar-with-dependency/48434752#48434752但这是你需要做的:

  1. Upload core-release and midware-release到您的 Maven 存储库
  2. 为您的库创建一个包含依赖项的 POM 文件

    <project>
       <modelVersion>4.0.0</modelVersion>
       <parent>...</parent>
       <artifactId>okhttp</artifactId>
       <name>OkHttp</name>
       <dependencies>
          <dependency>
             <groupId>com.example</groupId>
             <artifactId>core-release</artifactId>
          </dependency>
          <dependency>
             <groupId>com.example</groupId>
             <artifactId>midware-release</artifactId>
          </dependency>
       </dependencies>
       <build>...</build>
    </project>
    
  3. 使用该 POM 文件发布您的 AAR

    mvn deploy:deploy-file \
          -DgroupId=com.example \
          -DartifactId=your-library \
          -Dversion=1.0.1 \
          -Dpackaging=aar \
          -Dfile=your-library.aar \
          -DpomFile=path-to-your-pom.xml \
          -DgeneratePom=true \
          -DupdateReleaseInfo=true \
          -Durl="https://mavenUserName:[email protected] /cdn-cgi/l/email-protection/repository/maven-releases/"
    

然后您的应用程序可以使用您的库。 Gradle 将自动下载您的库传递依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建包含多个 AAR/JAR 的 AAR 的相关文章

随机推荐

  • 将 SSL 密钥库文件添加到 PCF (Cloud Foundry) 上的 HTTP 客户端请求的 Java 可信存储中

    在我的 Spring Boot 应用程序中 我发出了 https 安全 请求 为此 我需要将流动参数作为 JVM 参数传递 javax net ssl trustStore javax net ssl trustStorePassword
  • 无法获得正确的 XSLT 输出

    我有一个像这样的 XML section section
  • 什么是 NHibernate?为什么要使用它? [复制]

    这个问题在这里已经有答案了 可能的重复 什么是 NHibernate https stackoverflow com questions 959270 what is nhibernate 我听说过这个名字NHibernate http n
  • .Net MVC 5.2.3:如何从 SelectListItem 创建禁用选项?

    我正在尝试创建一个下拉列表 其中禁用了一些选项 以便它们不可选择 这是我的代码 var places new SelectList new List
  • .setAttribute("禁用", false);将可编辑属性更改为 false

    我想要与单选按钮相关的文本框 因此 每个单选按钮都应启用其文本框并禁用其他单选按钮 但是 当我将文本框的禁用属性设置为 true 时 它 也会更改可编辑属性 我尝试再次将可编辑属性设置为 true 但它不起作用 这就是我尝试过的 JS函数
  • 如何将 NSWorkspace 通知迁移到 Swift 4?

    在 Swift 3 中 我使用以下代码注册了睡眠和唤醒通知 let notificationCenter NSWorkspace shared notificationCenter notificationCenter addObserve
  • 是否可以根据国家/地区提供多个 APK 支持?

    我有一个包含免费和收费产品的应用程序 我需要为我的应用程序创建两个 APK 并在支持应用内结算的国家 地区显示支持应用内结算的应用程序 并显示不支持应用内结算的同一应用程序的另一个 APK 在不支持的国家 地区进行应用程序计费 仅提供免费产
  • 如何从 JSON 对象中提取属性及其值 [重复]

    这个问题在这里已经有答案了 我返回以下 json 对象并将其存储在名为 data 的变量中 data min 1 q1 59 median 117 q3 175 max 233 由于这是单个对象而不是对象数组 因此我无法执行 data 0
  • cimg 库 - 链接错误[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我尝试使用 cimg 库 我已经包含了 CImg h 头文件 但是当我尝试编译它时 出现链接错误 tmp cc2tvYs
  • 卡在“将 API 使用情况发送到 iTunes Connect”上

    我尝试将用 Starling 开发的游戏上传到应用商店 但 应用程序加载器 停留在 将 API 使用情况发送到 iTunes Connect 10 天前上传成功 新版本只有一行不同的代码编译是一样的 有人有这个问题吗 有人有解决办法吗 我尝
  • 如何启用Objectify XA事务?

    我正在同一类型的实体之间实现友谊功能Profile 该实体类型是根 非父 实体 一个配置文件有一个Set
  • Photoshop“黑白”调整图层背后的算法是什么?

    我做了很多研究 但没有找到任何东西 但我也不知道到底要搜索什么样的关键字 我希望能够转换输入RGB图像到灰度但我希望能够添加更多或更少红色 黄色 绿色 青色 蓝色 洋红色像Photoshop 您知道等式是什么吗 或者我在哪里可以找到这些等式
  • C语言中如何将int转换为float?

    我正在尝试解决 int total 0 number 0 float percentage 0 0 percentage number total 100 printf 2f percentage 如果数字的值为 50 总数为 100 我应
  • -xms 总和大于主机 RAM 的多个 JVM

    注意 我是 Java 新手 我是 Python 开发人员 JVM 的想法对我来说很陌生 假设您有一台 8 核 160GB RAM 的服务器 如果您使用 xms 100G 运行 Java 程序 它不会抛出任何错误 如果使用 xms 100G
  • Perforce 相当于 git local commit

    我在使用 Git 一年后才开始使用 Perforce 是否有任何等同于 git local commit 到我的分支的强制 本质上 如果我想要完成一项可能需要撤消和重做我的特定更改的复杂任务 有什么方法可以在 Perforce 中完成此任务
  • 是否可以在 Hudson/Jenkins 中用参数化字符串替换整个存储库 URL?

    在 Hudson Jenkins 中 是否可以替换entireSubversion 模块存储库 URL 中带有字符串参数的字符串 我不想只替换版本或类似的内容 我想替换整个网址 因此 当我运行构建时 我会收到输入 URL 的提示 我会输入类
  • C++ 从字符串中间提取数字

    我有一个vector含有strings遵循以下格式text number number Eg Example 45 3 我只想要第一个数字 45在示例中 并且我无法使用当前代码执行其他操作 std vector
  • 在不同的函数中分配的空闲内存?

    我正在尝试学习 C 目前正在尝试编写基本的堆栈数据结构 但我似乎无法掌握基本的知识malloc free right 这是我一直在使用的代码 我只是在这里发布一小部分来说明特定问题 而不是全部代码 但错误消息是通过运行此示例代码生成的val
  • PGAdmin III 无法连接 AWS RDS

    我正在尝试从 PgAdmin 3 连接 AWS RDS PostgreSql 我点击了以下链接http docs aws amazon com AmazonRDS latest UserGuide USER ConnectToPostgre
  • 创建包含多个 AAR/JAR 的 AAR

    我看到了一些问题 Android Studio 将 2 个 aar 合二为一 https stackoverflow com questions 30084314 android studio combine 2 aar into one和