0

我正在开发一个在 apk 中嵌入本机“.so”文件的 Android 项目。每当我们需要发布错误修复时,我们现在都会发布一个带有“.so”的新 apk 文件,其中包含修复。但这是一个巨大的文件,效率不高。

所以我的问题是,是否可以仅使用已更改的相关“.o”文件来更新“.apk”中的“.so”?意味着保持“.so”文件的其余部分相同,我们可以只更新那些改变的“.o”文件吗?类似于一些系统如何推动他们的错误修复。

4

1 回答 1

2

.so无法更新动态库 ( ) 的部分内容。它不像静态库 ( .a),本质上,它只是一个带有目标文件的普通存档。动态库更像是一个普通的可执行文件,可以被认为只是一个没有main. 事实上,共享库通常编译为PIC,总体而言,如果库的一部分发生更改,则应更新所有其他部分。

比如说,某个函数的代码中多了一条指令,a后面跟着函数bc。然后b和的地址c应该增加被添加到的指令的大小a。然后这个动态库的所有调用站点bc内部的所有调用站点都应该使用新地址进行更新。

也就是说,理论上可以做到,但实施成本远高于从中获利。

于 2013-11-11T13:09:55.477 回答