我想要获得简单的Android单元测试,以在Gitlab CI上运行,但我遇到了问题,无法正确构建CI Docker镜像。我有master
项目,该项目从Library
项目中抽取。库中有C代码,所以我需要使用CMake来构建它。所有这些都是在使用Android Studio时在我的Windows机器上进行的本地工作。但是,一旦我移动到CI服务器,事情出现以下错误打破:Android Gradle - Gitlab CI - Docker - CMake - 空指针异常
Using incremental javac compilation for :Library debug. Incremental java compilation is an incubating feature. Checking the license for package CMake 3.6.3155560 in /android-sdk-linux/licenses License for package CMake 3.6.3155560 accepted. Preparing "Install CMake 3.6.3155560 (revision: 3.6.3155560)". "Install CMake 3.6.3155560 (revision: 3.6.3155560)" ready. Finishing "Install CMake 3.6.3155560 (revision: 3.6.3155560)" Installing CMake 3.6.3155560 in /android-sdk-linux/cmake/3.6.3155560 "Install CMake 3.6.3155560 (revision: 3.6.3155560)" complete. "Install CMake 3.6.3155560 (revision: 3.6.3155560)" finished. FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':Library'. > java.lang.NullPointerException (no error message) * Try: Run with --debug option to get more log output. * Exception is: org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':Library'. at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:94) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:89) ... at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) Caused by: java.lang.NullPointerException at com.android.builder.sdk.DefaultSdkLoader.installSdkTool(DefaultSdkLoader.java:572) at com.android.build.gradle.internal.SdkHandler.installCMake(SdkHandler.java:302) at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.create(ExternalNativeJsonGenerator.java:628) at com.android.build.gradle.internal.TaskManager.createExternalNativeBuildJsonGenerators(TaskManager.java:1241) at com.android.build.gradle.internal.LibraryTaskManager.lambda$createTasksForVariantData$11(LibraryTaskManager.java:240) ... at com.sun.proxy.$Proxy15.afterEvaluate(Unknown Source) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82) ... 56 more BUILD FAILED Total time: 1 mins 25.384 secs Stopped 0 worker daemon(s). Received result Failure[value=org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: A problem occurred configuring project ':Library'.] from daemon DaemonInfo{pid=39, address=[1f3b75f9-7080-48b5-b298-0e6136640a0a port:41964, addresses:[/127.0.0.1]], state=Busy, lastBusy=1496784783851, context=DefaultDaemonContext[uid=0e3eadf0-a7bd-4ede-9eb8-0c2a96ebef58,javaHome=/usr/lib/jvm/java-8-openjdk-amd64,daemonRegistryDir=/root/.gradle/daemon,pid=39,idleTimeout=10800000,daemonOpts=-Xmx1536m,-Dfile.encoding=UTF-8,-Duser.country,-Duser.language=en, -Duser.variant]} (build should be done). ERROR: Job failed: exit code 1
由线
Caused by: java.lang.NullPointerException
at com.android.builder.sdk.DefaultSdkLoader.installSdkTool(DefaultSdkLoader.java:572)
at com.android.build.gradle.internal.SdkHandler.installCMake(SdkHandler.java:302)
它看起来与CMake的问题来看。但是看起来它已经安装并且许可证被接受,正如上面该块的开始处的输出所指出的那样。
任何人都可以给我一些指示什么是问题?
* Gradle是否不知道CMake的安装位置? *这可能是NDK的问题吗? *或者可能在哪里可以找到com.android.build.gradle.internal.SdkHandler.installCMake
和com.android.builder.sdk.DefaultSdkLoader.installSdkTool
的源代码。
我的搜索一直没有成果。
我可以根据要求提供更多关于我的设置。 (即Android项目,码头工人的形象,gitlab-ci.yml等)