一直不喜欢用android studio。臃肿,经常要联网下载东西,有时候不科学上网还不行。
编译慢,而且你还不知道它在干啥,进度是多少了。
出现错误时,也经常没有有价值的信息。
比如出现这种错误时,折腾半天都没搞定:
Execution failed for task ':xxx:generateJsonModelDebug'.
> java.lang.NullPointerException (no error message)
经过上网搜索,判断错误应该出现在externalNativeBuild上,但具体是什么原因,还是不知道。
1.通过运行gradlew assembleDebug --debug,确定是cmake执行的原因,因为
其中有一段cmake相关的一段打印:
-DANDROID_ABI=armeabi-v7a
-DANDROID_PLATFORM=android-21
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=。。。
2.那么手动在cpp目录使用cmake,build的时候提示找不到ninja,于是去网上下载了ninja
3.build时候提示:ninja: error: loading 'build.ninja':,网上找了一通没找到原因。最后发现原来cmake就没运行成功,还是先解决代码的问题,cmake后会生成build.ninja的。直到运行ninja可以编译出so出来
4.但是切换到android studio,还是死活都有generateJsonModelDebug错误。这不科学啊,手动执行cmake都能成功了,studio里面却不行。怀疑是cmake版本的问题,于是在studio里面下载CMake,终于成功了。
所以解决这个问题的关键就是,要用android studio中下载的CMake,而且它的CMake自动就包含了ninja!