Android 生成APK将从文件名中删除本机库版本号

Android 生成APK将从文件名中删除本机库版本号,android,apk,native,version-numbering,android-native-library,Android,Apk,Native,Version Numbering,Android Native Library,我有一个使用autotools构建共享库的遗留代码。这些库需要在Android应用程序中使用,因此我为其创建了一个简单的Java类和JNI包装器(作为一个共享的.so库) 我已经有了Android.mk脚本,它可以正确地执行遗留构建系统,为Java程序构建本机库并链接它 输出文件如下所示: libs/armeabi/lib-a.so.0 libs/armeabi/lib-b.so.2 libs/armeabi/lib-wrapper.so lib包装器。因此依赖于两个库lib-a和lib-b。

我有一个使用autotools构建共享库的遗留代码。这些库需要在Android应用程序中使用,因此我为其创建了一个简单的Java类和JNI包装器(作为一个共享的.so库)

我已经有了Android.mk脚本,它可以正确地执行遗留构建系统,为Java程序构建本机库并链接它

输出文件如下所示:

libs/armeabi/lib-a.so.0
libs/armeabi/lib-b.so.2
libs/armeabi/lib-wrapper.so
lib包装器。因此
依赖于两个库
lib-a
lib-b
。请注意,旧版autotools安装程序将版本号添加到共享库文件名中,该文件名作为依赖项嵌入到
lib wrapper.so

# arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf -d ./lib-wrapper.so 
Dynamic section at offset 0x7608 contains 28 entries:
  Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [lib-b.so.2]
0x00000001 (NEEDED)                     Shared library: [lib-a.so.0]
问题:

在APK构建过程中(例如从Eclipse导出未签名的包),版本号
从文件名中删除。这会导致错误:

无法加载库:链接_图像[1721]: 30无法为“lib wrapper.so”加载所需的库“lib-b.so.2”

因为APK包含文件
lib-b.so

# arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf -d ./lib-wrapper.so 
Dynamic section at offset 0x7608 contains 28 entries:
  Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [lib-b.so.2]
0x00000001 (NEEDED)                     Shared library: [lib-a.so.0]
如何在APK构建期间强制保留版本号?

修改旧版构建系统是不可能的(除非必须这样做),因为构建x86库/执行器时使用了相同的设置


谢谢。

android链接器无法识别不以“.so”结尾的共享库。您需要更改旧版生成系统创建的文件名。

您好,您找到了不更改生成系统的解决方案吗?没有。我们添加了一些脚本来手动重命名文件。但是我已经一年没碰过了所以。。现在有了格拉德,也许问题解决了。