aar 中的 jar 无法构建为 apk

问题描述 投票:0回答:1

我在aar中构建了一个flutter模块,它的结构如下: enter image description here

然后我在apk中使用aar,如下所示: enter image description here enter image description here bulid apk后,jar的so无法打包到apk中: enter image description here

这发生在android gradle插件7.4.0中

我在一个旧项目中使用了同样的方式,其中 android gradle 插件:'com.android.tools.build:gradle:3.5.3',然后就可以了,aar 中的 jar 可以打包到 apk 中: enter image description here 我该怎么办,还有其他人遇到这个问题吗

先建一个aar,里面有一些jar,jar里有so库,然后把jar包放到aar的lib目录下

android jar shared-libraries aar
1个回答
0
投票

您的

.aar
文件的内容未正确集成到最终的
.apk
文件中,因为其结构违反了
.jar
.aar
.apk
文件的结构规则。您可能对此概述感兴趣。

您的屏幕截图显示了一个

.aar
文件,其中有一个
libs
目录,其中包含一个
.jar
文件,该文件本身包含一个
lib
目录,其中包含包含
.so
文件的 ABI 特定目录。这是一个无效的构造。

那个

libs
目录包含
.jar
文件,这是正确的。但是这些
.jar
文件(作为 Java 类库)必须仅包含
.class
文件,而根本不包含本机库(.so 文件)。原生库必须放入名为
lib
的目录中(而不是
jni
——该名称只能在项目中使用,而不能在
.aar
.apk
文件中使用),正如您在其他
 上看到的那样 你的。screenshot
因此请记住考虑 AAR 的一些要点:

(1)

libs 目录包含

.jar
文件,其中
包含 .class 文件(以及一些清单内容,但这在这里并不重要)。

(2)

lib 目录包含本机共享库(

.so
文件),其子目录根据每个支持的硬件平台类型(ABI,因此
armeabi-v7a
arm64-v8a
x86
和/或
x86-64
)命名).
    

© www.soinside.com 2019 - 2024. All rights reserved.