在过去的几天里,我一直在努力让系统启动并运行以构建我们的 Android NDK 应用程序的多种配置。我能够很好地构建库;我遇到的问题通常源于在更改构建配置时使这些库保持最新。
我需要一个大部分完全自动化的系统:用户只需更改构建配置,一切正常!
您如何解决构建配置和库未正确重建的问题?
我尝试了很多不同的方法来解决这个问题,但它们似乎都以我无法控制的问题告终。
最初,我们只是输出了一个具有相同名称的共享对象文件,而不管构建配置如何(例如 game.so)。问题是,更改构建配置不会触发重新构建库;您必须更改源代码或构建脚本。因此,人们从 Debug 更改为 Release,运行应用程序,并且在不知不觉中实际上仍然链接到 Debug 版本。
因此,我们尝试根据构建配置将库输出到唯一的共享对象。例如,调试版本是 gamed.so。发布版本是gamer.so。问题是,Java 代码没有构建配置的概念,那么我们如何知道要加载哪个版本的库(由 Java 完成)?
为了解决这个问题,我们通过尝试加载它们的所有可能版本的库进行 try/catch 循环。当我们找到存在的那个时,加载它!问题是在将新配置部署到手机时不会删除旧版本的库。因此,如果您已经构建并运行了 Debug 和 Release,那么这两个库现在都在手机上!无论您首先要求哪个,它都会找到并加载。
所以无论如何,这似乎必须已经解决了,但我在网上找到的信息很少。没有什么能满足我的需求。
我的问题是:您如何解决构建配置和库未正确重建的问题?