首页 > 解决方案 > 如何重新生成 android_gradle_build.json 以使我的 NDK 项目从 Gradle 构建?

问题描述

我有一个在 Android Studio 下编译的 NDK 项目,但不是从 Gradle 中的命令行编译的。特别是,它缺少 /home/tim/git/jniApp/app/.cxx/cmake/release/armeabi-v7a/android_gradle_build.json

我无法签入 .cxx,因为它在我的硬盘上塞满了绝对路径——对 CI 没用。

重现一个最小的例子:

  1. 在 Android Studio 中新建一个 C++ 项目,
  2. 使用附加的 ARM 手机构建它,
  3. 删除 app/.cxx 目录
  4. 运行 ./gradlew clean
  5. 构建 -> 刷新链接的 C++ 项目
  6. 运行 ./gradlew build

并且该构建失败,因为上述文件不存在。

特别是,我留下了这个输出:

$ ./gradlew build

> Task :app:externalNativeBuildDebug
Build native-lib_armeabi-v7a
ninja: Entering directory `/home/tim/git/jniApp/app/.cxx/cmake/debug/armeabi-v7a'
ninja: no work to do.
Build native-lib_arm64-v8a
ninja: Entering directory `/home/tim/git/jniApp/app/.cxx/cmake/debug/arm64-v8a'
ninja: no work to do.
Build native-lib_x86
ninja: Entering directory `/home/tim/git/jniApp/app/.cxx/cmake/debug/x86'
[1/2] Building CXX object CMakeFiles/native-lib.dir/native-lib.cpp.o
[2/2] Linking CXX shared library /home/tim/git/jniApp/app/build/intermediates/cmake/debug/obj/x86/libnative-lib.so
Build native-lib_x86_64
ninja: Entering directory `/home/tim/git/jniApp/app/.cxx/cmake/debug/x86_64'
ninja: no work to do.

> Task :app:externalNativeBuildRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:externalNativeBuildRelease'.
> java.io.FileNotFoundException: /home/tim/git/jniApp/app/.cxx/cmake/release/armeabi-v7a/android_gradle_build.json (No such file or directory)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
38 actionable tasks: 6 executed, 32 up-to-date

我选择 CMake 还是 ndk-build 似乎并不重要(我更喜欢 ndk-build,但如果我可以获得一个不关心主机绝对路径的命令行构建,我会选择 CMake )。

是否有一个 Gradle 目标来生成该丢失的文件 - 或者更好的是整个 .cxx 目录?

似乎这是一个 Android Studio 错误,如果没有的话。

标签: androidandroid-studiogradleandroid-ndk

解决方案


推荐阅读