2017-06-06 18 views
1

我想要获得简单的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.installCMakecom.android.builder.sdk.DefaultSdkLoader.installSdkTool的源代码。
我的搜索一直没有成果。

我可以根据要求提供更多关于我的设置。 (即Android项目,码头工人的形象,gitlab-ci.yml等)

回答

1

好,mbertinhere通过使用较低的gradle这个构建工具,它解决了这个问题对他评论2月2日。 (即classpath 'com.android.tools.build:gradle:2.2.2)。

尝试之后,我的构建脚本通过了该错误! (谁知道为什么?)

感谢您的情感支持堆栈溢出!你是最棒的!