我的用例如下:
>我有一个由第三方提供给我的aar库(比方说L1).请注意,我没有这方面的来源.
>我想在L1顶部写一个包装层,然后创建另一个aar(SDK)(比方说L2). L1应该打包在L2内.请注意,L2中的代码是最小的,它就像L1的包装器.
>这个想法是,如果有人将此SDK集成到他们的Android应用程序中,应用程序应该只与L2交互,甚至不需要知道L1存在.基本上,我想在应用程序gradle文件中,只应包含L2.
我的问题是这是否可行?
我看了一些关于堆栈溢出的类似问题 – 我得到了以下可能的解决方案 – 但它们似乎都不合适:
>使用android-fat-aar插件 – 据我所知,这个插件不适用于最新的gradle版本,不再主动维护.我使用的是Android Studio版本3.3.1和gradle版本4.10.1.我认为它还有一些其他限制因为在aidl文件的情况下效果不佳.
>一些答案似乎表明将aar发布到像maven这样的存储库,在这种情况下,这将得到解决.我不确定我是否理解正确,但无论如何,将L1或L2发布到任何公共存储库对我来说都不是一个选择.
因此,重申基本要求是:
>应用程序应该只调用L2的API并与之交互.
>应用程序应该只需要在其gradle文件中包含L2的依赖性?
考虑到我提到的限制,有没有办法实现它 – 它不一定必须通过合并aars.
以下是否可行/是否有意义:
>编写L2所需的代码并从中创建一个jar
>提取L1 aar(因为aar基本上是一个存档)
>添加上面步骤1中创建的jar并创建一个包含L2 API的新aar(比方说L3).
>现在,应用程序需要添加为依赖项,并且只与一个依赖项L3(将具有L2 API)进行交互.