任务generateJsonModelArmDebug

时间:2019-05-21 17:56:50

标签: android gradle cmake

我尝试使用Android Studio使用cmake 3.14.0版本构建本机c ++项目。就像文档中一样:https://developer.android.com/studio/projects/add-native-code#use_a_custom_cmake_version。因此,我将version "3.14.0"添加到build.gradle中,并将cmake.dir=C\:\\CMakeWin32添加到有关vanilla cmake的local.properties中。 然后:

> Task :UnitTests:generateJsonModelArmDebug
> Task :UnitTests:generateJsonModelArmDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':UnitTests:generateJsonModelArmDebug'.
> Illegal char <:> at index 47: C:/j/client/dava.framework/Programs/UnitTests\C:/r15c/sources/android/cpufeatures/cpu-features.c

如果我在NDK捆绑包中使用默认的cmake 3.6,则一切正常。我的环境是:
Windows-10
Android Studio-3.4.1
gradle-尝试4.10.1和5.4.1
ndk-尝试15c和19c

在我的CMakeLists.txt文件中添加依赖项:

    add_library( ${PROJECT_NAME} SHARED ${PLATFORM_ADDED_SRC} ${REMAINING_LIST} )
    include(AndroidNdkModules)
    android_ndk_import_module_cpufeatures()
    target_link_libraries( ${PROJECT_NAME} cpufeatures)

我从错误消息中了解到C:/r15c/sources/android/cpufeatures/cpu-features.c的完整路径,希望gradle与当前项目C:/j/client/dava.framework/Programs/UnitTests的路径连接。我认为gradle及其如何使用cmake_server生成json代码模型的问题。但是如何解决呢?预先感谢。

更新(更多信息):

  1. 如果我的建造方式是:C:\j\client\dava.framework\Programs\UnitTests\Platforms\Android>gradlew :UnitTests:generateJsonModelArmDebug --info > log.txt 2>&1
  2. 在来自cmake服务器的日志文件复制响应中,并将其保存在文件test.json中
  3. 在Firefox中打开test.json,然后在source部分中查看目标libcpufeatures.a具有指向一个源文件的完整路径。
  4. sourceDirectory来自父项目C:/j/client/dava.framework/Programs/UnitTests的遗物
  5. 所以我认为gradle尝试将cmake中的这两个bug结合在一起,或者将gradle与cmake中的json响应结合在一起。 json view of responce from cmake-server

1 个答案:

答案 0 :(得分:0)

Bug位于Google gradle插件中,因此我只是对其进行了升级,并且它与新的cmake 3.14兼容。 只需更新您的gradle插件即可:

    dependencies { classpath 'com.android.tools.build:gradle:3.4.1' }