bounty还有6天到期。回答此问题可获得+50声望奖励。Burton2000正在寻找一个答案从一个有信誉的来源。
我有一个使用Android Gradle Plugin 7.4.2的项目,我使用升级助手更新到8.0.2,但现在我的项目无法构建,并出现以下错误:
原因:从路径/Users/user 01/. gradle/caches/transforms-3/4445827 a66 e5 ef 9 b85054 fadb 96 c8209/transformed/jetified-armnn. delegate-23.05/jni/arm 64-v8.2-a/libarmnn_delegate_jni. so提取的jni不是ABI
有没有人知道是否有某种方法可以在Gradle中指定不使用此库的arm 64-v8.2-a ABI版本?我尝试添加以下内容:
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your app.
abiFilters 'arm64-v8a'
}
字符串
而且
splits {
abi {
enable true
reset()
include "arm64-v8a"
}
}
型
但这些都没用如果我恢复升级,项目构建正常,但我想使用最新版本的Gradle插件。
编辑:有关额外信息,此依赖项以.AAR文件的形式出现,其中包含已编译的本机.so文件的arm 64-v8 a和arm 64-v8.2-a版本。看起来在较旧的Android Gradle插件版本中,v8.2只是被忽略,但现在它会自动拾取并导致此问题?
1条答案
按热度按时间knsnq2tg1#
触发错误的代码位于MergeNativeLibsTask.kt中:
字符串
基于错误以“jni”开头的事实,在您的情况下,它似乎选择了路径的“jni”部分作为提取的ABI。
这段代码看起来确实需要一个支持的ABI名称,要么是相对路径的第一段,要么是相对路径之外的目录名称。
在您的例子中,我推测您有一个文件值
/Users/user01/.gradle/caches/transforms-3/4445827a66e5ef9b85054fadb96c8209/transformed/jetified-armnn.delegate-23.05/jni/arm64-v8.2-a/libarmnn_delegate_jni.so
和一个relativePatharm64-v8.2-a/libarmnn_delegate_jni.so
。/Users/user01/.gradle/caches/transforms-3/4445827a66e5ef9b85054fadb96c8209/transformed/jetified-armnn.delegate-23.05/jni
。该目录的名称是“jni”,它也不匹配任何已知的ABI。因此,错误。我没有看到任何方法使这个函数通过,除了确保它根本没有被调用这个文件。如果这是可能的,我不知道如何(但我肯定不是该领域的Maven)。另一个选择是从依赖项中删除“坏”ABI(如果您可以控制它)--接受的ABI列表应该是here。
这以前是reported as a bug on the Google Issue Tracker,但似乎没有太多(公开)的进展。如果你没有什么新的东西要添加,请不要在这些评论中发帖;用星星图标或“+1”按钮标记问题。