首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Studio上的NDK一直在重建,需要永远

Android Studio上的NDK一直在重建,需要永远
EN

Stack Overflow用户
提问于 2019-09-23 21:35:20
回答 3查看 741关注 0票数 4

我有一个大的Android Studio项目,它有一个单独的模块,其中包含本机代码。本机构建是用CMake定义的,并且包括一堆C++代码的源文件。

我注意到自从最近的更新(可能是Android Studio3.5)以来,NDK一直在重建所有的东西。这可能发生在Java代码中的一个小变化,在项目中的无关模块中切换风格,递增版本代码,等等。

这是一个大问题,因为它一次可以无缘无故地浪费10分钟。我找不到一种合理的方法来分析Android Studio中的NDK构建,并检查是什么导致了重建,或者是什么花了这么长时间。

不幸的是,该项目的构建文件太大,无法附加到这里。有什么值得注意的地方吗?

EN

回答 3

Stack Overflow用户

发布于 2019-10-05 01:52:08

对于使用cmake构建的C/C++代码,请确保将cmake指向可以保存其目标文件和二进制输出的目录。

假设您在顶级CMakeLists.txt中有一个对游戏的依赖,如下所示:

代码语言:javascript
复制
# dependency: Game
set ( game_src_DIR ../Game )
add_subdirectory( ${game_src_DIR} ${CMAKE_CURRENT_BINARY_DIR}/game )

然后,add_subdirectory的第二个参数指定了AndroidStudio保存目标文件的位置。

调试和发布对象文件将位于不同的子目录中,每个依赖项也将位于不同的子目录中,因此切换调试/发布不会发生冲突。

票数 1
EN

Stack Overflow用户

发布于 2020-03-25 23:15:13

这似乎是从Android Studio3.4开始的一种行为回归,并在Android Studio4.1 Canary 4中得到了修复。发行说明为here

票数 1
EN

Stack Overflow用户

发布于 2019-09-24 02:51:24

通常,拆分AS项目会有所帮助,这样C++部件(可能还有它的Java包装器)成为单独的(库)模块。希望这个模块更稳定,对应用程序版本代码的增量不敏感。

这样的模块不应该定义太多的风格,但要小心地与其他模块的风格匹配。有时,甚至可以禁用这类库的"debug“变体。NDK团队曾努力更好地处理调试与发布版本切换,但这仍然很棘手。

但是,如果在这些改进之后,对项目的无关紧要的更改仍然会导致大量的重建,我会建议考虑ccache。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58063705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档