【问题标题】:Build Configurations and the Android NDK构建配置和 Android NDK
【发布时间】:2012-10-24 00:29:25
【问题描述】:

过去几天,我一直在努力让系统启动并运行,以构建我们的 Android NDK 应用程序的多种配置。我能够很好地构建图书馆;我遇到的问题通常源于在更改构建配置时使这些库保持最新状态。

我需要一个大多数情况下完全自动化的系统:用户只需更改构建配置,一切就正常工作!

您如何解决构建配置和库未正确重建的问题?

我尝试了很多不同的方法来解决这个问题,但它们似乎都以我无法控制的问题告终。

最初我们只是输出了一个同名的共享对象文件,而不考虑构建配置(例如game.so)。 问题是,改变构建配置并不会触发库的重建;您必须更改源代码或构建脚本。因此,人们从 Debug 更改为 Release,运行应用程序,并且在不知不觉中实际上仍然链接到 Debug 版本。

然后我们尝试根据构建配置将库输出到唯一的共享对象。例如,调试版本是 gamed.so。发布版本是gamer.so。 问题是,Java代码没有构建配置的概念,那么我们怎么知道要加载哪个版本的库(是从Java做的)?

为了解决这个问题,我们通过尝试加载它们的所有可能版本的库进行 try/catch 循环。当我们找到存在的那个时,加载它! 问题是在将新配置部署到手机时不会删除旧版本的库。因此,如果您已经构建并运行了 Debug 和 Release,那么这两个库现在都在手机上!无论您首先要求哪个,它都会找到并加载。

所以无论如何,这似乎已经必须解决了,但我在网上找到的信息很少。没有什么能满足我的需要。

我的问题是:您是如何解决构建配置和库未正确重建的问题的?

【问题讨论】:

    标签: android eclipse android-ndk buildconfiguration


    【解决方案1】:

    这其实很奇怪。我一直看到install -r 刷新/data/data/app.pack.age/lib 目录。您使用哪种设备进行开发?

    【讨论】:

    • 我使用的是 Galaxy S2。它没有植根,所以我认为我无法查看数据目录中的实际内容。我不确定我对“adb install”的论点是什么。我正在通过 Eclipse 运行它,但没有看到任何对它的引用。也许它没有指定 -r 标志?你以前通过 Eclipse 做过吗?
    • 是的,我也是通过 Eclipse 完成的。不,您不需要 root 来读取已安装应用程序的 lib 目录:adb shell ls -l /data/data/your.package.name/lib
    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多