stdlib.h: No such file or directory
1 | E:\Install\android-ndk-r16b\sources\cxx-stl\gnu-libstdc++\4.9\include\cstdlib:72: error: stdlib.h: No such file or directory |
解决办法:换个版本的 NDK(低版本无用的话,64位换成32位)
例如:Qt-on-android5.7,ant是1.9.11,ndk是r12b
过程试图写入的管道不存在
在编译Android项目时,可能会出现警告提示:
过程试图写入的管道不存在。
观察离警告最近一次命令是:
C:\Qt\Qt5.7.1forAndroid\5.7\android_armv7\bin\androiddeployqt.exe –input D:/QtWorkspace/Android/build-First-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_1-Debug/android-libFirst.so-deployment-settings.json –output D:/QtWorkspace/Android/build-First-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_1-Debug/android-build –deployment bundled –android-platform android-26 –jdk C:/Java/jdk1.8.0_131 –ant C:/apache-ant-1.9.9/bin/ant.bat为androiddeployqt.exe添加选项–verbose,
C:\Qt\Qt5.7.1forAndroid\5.7\android_armv7\bin\androiddeployqt.exe –verbose –input D:/QtWorkspace/Android/build-First-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_1-Debug/android-libFirst.so-deployment-settings.json –output D:/QtWorkspace/Android/build-First-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_1-Debug/android-build –deployment bundled –android-platform android-26 –jdk C:/Java/jdk1.8.0_131 –ant C:/apache-ant-1.9.9/bin/ant.bat将这条命令在PowerShell上运行,会发现离“过程试图写入的管道不存在。”的最近一条命令是:
D:/Android/sdk/tools/android.bat update project –path D:/QtWorkspace/Android/build-First-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_1-Debug/android-build/ –target android-26 –name QtApp同样在PowerShell上运行这条命令,发现提示:
The “android” command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools\bin\sdkmanager.bat
and tools\bin\avdmanager.bat
意思是,android sdk tools不再支持android.bat这条命令了。
- 在网上用“The “android” command is deprecated.”搜索,发现 http://forum.cocos.com/t/creator1-4-1-android/45151 这篇帖子,其中蓝色孤舟给出了详细的说明,大意是新版本的android sdk tools不再支持android.bat这条命令,需要将android sdk tools降级。他同时提供了windows和mac上的版本为25.2.3的android sdk tools。
下载并覆盖android studio的原有tools,编译就会成功了。
参考:https://blog.csdn.net/jupipe_guanly/article/details/75462085?utm_source=blogxgwz1
No suitable Java found.
使用上面方法的第三条,发现:
No suitable Java found. In order to properly use the Android Developer
Tools, you need a suitable version of Java JDK installed on your system. We recommend that you install the JDK version of JavaSE, available here:
遇到此问题时,将 你的SDK解压后的文件名\tools\lib下的find_java替换为版本r16版中的find_java,下载地址 http://tekeye.biz/download/find_java.zip,原因,网上查找说应该是r17以上的版本重写了find_java.bat
‘android–1’ does not exist in SDK
Warning: Android platform ‘android–1’ does not exist in SDK.
没有设置 Android SDK
(但是我有遇到无法设置 android build SDK 的情况,解决方法是设置里直接换了个 SDK)
aidl.exe 系统找不到指定的文件
E:\Install\sdk\tools\ant\build.xml:564: Execute failed: java.io.IOException: Cannot run program "E:\Install\sdk\platform-tools\aidl.exe" (in directory "D:\Qt\AndroidTest\RunAndroidx86\android-build"): CreateProcess error=2, 系统找不到指定的文件。
sdk/build-tools/28.0.3/
里面的文件 复制到 platform-tools/
里面(不知道要不要覆盖,反正结果还是编译出错)
不再支持源选项 5 / 1.5
1 | [javac] Compiling 5 source files to D:\Qt\AndroidTest\RunAndroidx86\android-build\bin\classes |
在 \sdk\tools\ant\build.xml
文件中搜索 1.5
,改成 1.8
。1.6
还是会警告过时。
1 | <!-- compilation options --> |
下载 Gradle 卡住
1 | Downloading https://services.gradle.org/distributions/gradle-4.6-bin.zip |
1、先保证程序在windows下能正常运行,即MinGW编译通过
2、进入“项目-Build Android APK”,点击create templates,对弹出的提示确认。系统会自动建立一些配置文件
3、点开文件build.gradle
,做如下修改,即可顺利编译成功。但记得电脑能上网。
修改:屏蔽jcenter()
添加一行maven{ url 'https://maven.aliyun.com/repository/jcenter' }
,记住,下面还有一个jcenter()
,同样屏蔽处理
Cannot find the androiddeploy Json file
1 | Cannot find the androiddeploy Json file. |
实测无效的:
选项--构建与运行--Qbs--Kit 选择Android for armeabi-v7a (GCC 4.9,Qt5.10.1 for Android armv7)
未找到原因,但发现把一些容易出兼容性问题的模块删掉之后可用。
Android deploy settings file not found, not building an APK.
这是Qt的一个小Bug,安卓配置文件不太稳定。
只需要在左侧项目栏里:
选定你的编译工具(编译平台),右侧选择Disable它,
然后双击激活它,重新载入一下,就OK了。
路径 // 问题
1 | adb: failed to stat E:/Projects/BilibiliLiveDanmaku_Android/android-build//build/outputs/apk/android-build-debug.apk: No such file or directory |
注意到 E:/Projects/BilibiliLiveDanmaku_Android/android-build//build/outputs/apk/android-build-debug.apk: No such file or directory
中间路径有两条 //
,表示这个生成的文件夹是空的。
同上面一个解决方案:Disable 编译工具,点击重新激活。