构建配置和Android NDK

3
我最近几天一直在努力搭建一个系统,用于构建我们的 Android NDK 应用程序的多个配置。我能够很好地构建库,但是当更改构建配置时,我通常会遇到保持这些库更新的问题。
我需要一个在大部分情况下都是完全自动化的系统:用户只需更改构建配置,一切都会正常工作!
你是如何解决构建配置和库无法正确重建的问题的?
我尝试了很多不同的方法,但它们似乎都有我无法控制的问题。
最初,我们只输出具有相同名称的共享对象文件,而不考虑构建配置(例如 game.so)。问题在于,更改构建配置不会触发库的重建;您必须对源代码或构建脚本进行更改。因此,人们从调试切换到发布版,运行应用程序,而且不知不觉中仍在链接到调试版本。
然后,我们尝试将库输出到基于构建配置的唯一共享对象。例如,调试版本为 gamed.so。发布版本为 gamer.so。问题在于,Java 代码没有构建配置的概念,那么我们怎么知道要加载哪个库版本(这是从 Java 中完成的)?
为了解决这个问题,我们通过 try/catch 循环遍历所有可能的库版本来尝试加载它们。当我们找到存在的版本时,就加载它!问题在于,在将新配置部署到手机时,旧版本的库不会被删除。因此,如果您已经构建并运行了调试和发布版本,则这两个库现在都在手机上!无论您首先请求哪个版本,它都会找到并加载。
总之,这似乎是必须解决的问题,但我在网上找到的信息非常少。没有符合我的需求的信息。
我的问题是:你是如何解决构建配置和库无法正确重建的问题的?
1个回答

1

这真的很奇怪。我一直以为install -r会刷新/data/data/app.pack.age/lib目录。你用什么设备进行开发?


我正在使用Galaxy S2手机。它没有root,所以我不认为我可以查看我的数据目录中实际的内容。我不确定 "adb install" 的参数是什么。我是通过Eclipse运行的,并没有看到任何相关引用。也许它没有指定“-r”标志?你以前在Eclipse中做过这个吗? - Goose
是的,我也是通过Eclipse来完成的。不需要root权限就可以读取已安装应用程序的“lib”目录:adb shell ls -l /data/data/your.package.name/lib - Alex Cohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接