Android:2个具有相同包的aar库

2023-12-23

Edit:基于此讨论的后续问题已发布在以下链接中。

Android:如何管理同一应用程序使用的多个库中的公共代码库 https://stackoverflow.com/questions/57572278/android-how-to-manage-common-codebase-in-multiple-libraries-used-by-the-same-ap?noredirect=1#comment101605210_57572278

我有两个android aar库项目:LibA使用ClassA,LibB使用ClassB。两个库具有相同的基础包。两个库都使用名为 BaseClass 的相同类,当前分别驻留在每个库中的包名称“common”中。 BaseClass 包含一个名为 baseMethod 的方法。

这将使用具有相同名称和不同实现的类创建两个库。

这就是类的样子:

ClassA:

package mybasepackage.a;

import mybasepackage.common.BaseClass;

public class ClassA {

    BaseClass baseClass;

    public ClassA() {
        this.baseClass= new BaseClass();
    }

    public String myPublicMethod(){
        return this.baseClass.baseMethod();
    }
}

ClassB:

package mybasepackage.b;

import mybasepackage.common.BaseClass;

public class ClassB {

    BaseClass baseClass;

    public ClassB() {
        this.baseClass = new BaseClass();
    }

    public String myPublicMethod(){
        return this.baseClass.baseMethod();
    }
}

LibA 中的基类:

package mybasepackage.common;

 public class BaseClass{

   public String baseMethod() {
        return "Called from ClassA";
    }
}

LibB 中的基类:

package mybasepackage.common;

 public class BaseClass{

   public String baseMethod() {
        return "Called from ClassB";
    }
}

当我尝试在同一个应用程序中编译两个库时,它会抛出重复的类error: "Program type already present: mybasepackage.common.BaseClass",发生这种情况是因为编译器无法知道要编译哪个 BaseClass,因为它驻留在两个库中。

我的目标是允许两个 aar 库在同一个应用程序中成功编译,同时为 BaseClass 提供不同的实现。更正式地说,LibA 和 LibB 应在同一应用程序中编译,例如:

Calling new ClassA().baseMethod()将返回“从 A 类调用”。

Calling new ClassB().baseMethod()将返回“从 ClassB 调用”。

前提条件:我无法更改其中一个库中的基础包名称,因为它本质上会创建不需要的 BaseClass 重复项。

NOTE:我知道通过 aar 方法这可能是不可能的。如果确实如此,我愿意考虑其他部署架构,只要我能够使用不同实现的相同公共类来编译这些库,如问题中所述。


我的目标是允许两个 aar 库在同一个应用程序中成功编译,同时为 BaseClass 提供不同的实现

那是不可能的,抱歉。

我知道通过 aar 方法这可能是不可能的。

它与 AAR 无关。在同一个应用程序期间,不能有两个具有相同完全限定类名的类。这些重复的类来自哪里并不重要。

我愿意考虑其他部署架构,只要我能够使用不同的实现使用相同的公共类来编译这些库,如问题中所述。

那是不可能的,抱歉。再说一遍:重复的类来自哪里并不重要。你根本不能有重复的课程。

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

Android:2个具有相同包的aar库 的相关文章

  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • 隐式超级构造函数 Person() 未定义。必须显式调用另一个构造函数?

    我正在开发一个项目 但收到错误 隐式超级构造函数 Person 未定义 必须显式调用另一个构造函数 我不太明白它 这是我的人物课程 public class Person public Person String name double D
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 从 TextView 中显示的数字中删除小数点[重复]

    这个问题在这里已经有答案了 对于我的简单计算器 我将结果显示在TextView 但它总是显示小数 我怎样才能删除它们 这是我的代码 public class MainActivity extends Activity implements
  • 如何以编程方式启动 ssh 服务器 android,以及如何获取连接到设备的用户名和密码

    我正在开发像这样的应用程序sshdroid 我想在 Android 操作系统上打开 ssh 连接 并且我想从电脑连接应用程序 我使用了 JSCH lib 但是这个lib用于将android连接到pc 我的要求是pc到android 任何人都
  • 在为 Android 实现 Google 登录时,任务“:app:transformClassesWithDexForDebug”执行失败

    我正在尝试为 Android 实现 Google 登录 并且我正在按照以下说明进行操作 https developers google com identity sign in android start integrating https
  • NoClassDefFoundError:无法解析:Landroid/support/v7/appcompat/R$styleable

    新手尝试完成 Google 提供的我的第一个应用程序教程 在这个致命异常的过程中 我确实导入了很多随机包来消除许多事情的 无法解析 错误 例如 ActionBarActivity EditText Fragment LayoutInflat
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议

随机推荐

  • GMSMapStyle 未解析的标识符

    我想在 ios 中更改我的谷歌地图样式 为此 我正在尝试实现此代码 GMS地图样式 https developers google com maps documentation ios sdk styling 我正在进口import Goo
  • 如何检查对象是否正在@synchronized

    有时我会编写以下代码来同步例程 synchronized objToBeSync 当两个线程尝试同时访问同步块时 其中一个线程会阻塞其他线程 直到其中一个线程退出同步块 但是 有时我不希望一个对象阻塞另一个对象 但其他对象检查对象是否正在同
  • CSS 中字体大小的最佳单位

    各自的优点和缺点是什么 em px and pt 我当前的选择是百分比 唯一的原因是因为我可以全局更改所有元素的字体大小 只需修改根元素 主体 上的字体大小即可 我会推荐 EM 只是因为我使用 Baseline CSS 来设置基本的表单 布
  • google+ 分享和 onendinteraction - 无需确认

    我正在设置一个 google 分享按钮 并想知道何时有人分享了该链接 以便我可以执行操作 您可以使用以下命令在共享按钮上注册回调onendinteraction属性 并且文档指出 只要共享框关闭以及共享完成 就会调用此函数 我的函数是在窗口
  • Tensorflow 无法工作:无法加载动态库“nvcuda.dll”; dlerror:找不到 nvcuda.dll

    几周前 我安装了适用于 CPU Windows 的 TensorFlow 并且运行良好 然而 今天我尝试为 GPU 安装它 但我的 GPU 不受支持 所以我删除了 GPU 版本并重新安装了 CPU 版本 现在 当我尝试运行一个简单的卷积神经
  • 在 Tomcat 中运行后台 Java 程序 [重复]

    这个问题在这里已经有答案了 有人可以在这里提供建议吗 我遇到过这样的情况 用户将通过 Java JSP 和 servlet 以交互方式向我的应用程序提交数据挖掘请求 该应用程序将动态计算出数据等的关联规则 由于这样的工作可能需要一段时间 我
  • PHP 中的分段错误(核心转储)

    好的 我正在 Ubuntu 上的命令行上运行 PHP 应用程序 它以 分段错误 核心转储 结束 我该如何从这里开始调试它 我很确定没有内存泄漏 因为我已经使用 get memory usage 检查过它 编辑 好吧 正如 Brendan 和
  • 什么决定(如何配置)php PDO 驱动程序对日期和时间戳字段的值使用什么格式字符串?

    我有 Firebird 3 0 数据库 其中包含日期和时间戳字段 并且我正在使用 interbase 扩展 是的 仍然是 interbase 和 PHP 7 x 中的 Yii2 框架 我有 Yii 代码 Yii app gt db gt c
  • Rails - 删除未保存的关联记录

    假设我有一个包含很多文章的用户模型 如果我多次调用 user articles new 我将有许多与该用户关联的未保存的文章对象 当您运行 user articles 时 它们是可见的 调用 user save 将保存所有未保存的记录 如何
  • 使用 LINQ 展平分层数据集 - 但需要注意

    我有以下数据集 需要将其展平为列表
  • Java 中的 RegEx:如何处理换行符

    我目前正在尝试学习如何使用正则表达式 所以请忍受我的简单问题 例如 假设我有一个输入文件 其中包含一堆由换行符分隔的链接 www foo com Archives monkeys htmMonkey 网站的描述 www foo com Ar
  • java.io.IOException:不支持标记/重置

    这段代码不起作用 我已经准备好一堂课了 因为它可以找到here http javafree uol com br topic 879623 Executar wav html 但音乐不起作用 我怎样才能解决这个问题 private void
  • 如何检查我的 Python Discord 机器人是否具有必要的权限?

    我制作了一个实用机器人来帮助记录消息并帮助将通道从一台服务器迁移到另一台服务器 我需要检查它是否具有执行命令所需的权限 但以下代码不起作用 我使用 client event并且不想使用 bot command 这是我的权限检查代码 if n
  • 如何在调用sqlcmd时更改端口

    我有这个命令 sqlcmd exe E i C joe db scripts joe db tasks Install sql 我需要添加特定的非标准端口 32001 我该怎么做 我在想一些像这样的标志 p或其他东西 但我不知道语法 根据这
  • 在select语句中显示表名

    我需要在 select 语句中显示表名 如何 确切的问题 我们在两个表中有公共列 我们正在使用以下方式显示记录 select column name from table name 1 union select column name fr
  • 如何使用 Google CardBoard Android SDK 和 Rajawali 制作一个简单的 VR 视频播放器

    我是这些领域的新人 我正在尝试改变一个program https github com ejeinc RajawaliCardboardExample现在在 github 中播放 Cardboard 视频 我使用 StreamingText
  • 为什么媒体查询的顺序在 CSS 中很重要?

    最近 我一直在设计响应速度更快的网站 并且经常使用 CSS 媒体查询 我注意到的一种模式是 定义媒体查询的顺序实际上很重要 我没有在每个浏览器中测试它 只是在 Chrome 上测试 这种行为有解释吗 有时 当您的网站无法正常工作并且您不确定
  • 数组中出现 NullPointerException

    我不断收到 NullPointerException 见下文 在 C 中一切正常 但在 android 中却崩溃了 arrDBNumbers 已满 代码应该运行并计算 1 2 3 等到 49 的数量 将 1 添加到 arrFreq i 1
  • Python - Flask:找不到 render_template() [重复]

    这个问题在这里已经有答案了 我是烧瓶新手 我有这个代码 你能给我一个建议吗 我做错了什么 谢谢 from flask import Flask from flask import request from flask import rend
  • Android:2个具有相同包的aar库

    Edit 基于此讨论的后续问题已发布在以下链接中 Android 如何管理同一应用程序使用的多个库中的公共代码库 https stackoverflow com questions 57572278 android how to manag