stdlib.h: No such file or directory

1
2
E:\Install\android-ndk-r16b\sources\cxx-stl\gnu-libstdc++\4.9\include\cstdlib:72: error: stdlib.h: No such file or directory
#include <stdlib.h>

解决办法:换个版本的 NDK(低版本无用的话,64位换成32位)

例如:Qt-on-android5.7,ant是1.9.11,ndk是r12b

参考:https://q.cnblogs.com/q/106250/

过程试图写入的管道不存在

在编译Android项目时,可能会出现警告提示:
​ 过程试图写入的管道不存在。

  1. 观察离警告最近一次命令是:
    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

  2. 为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

  3. 同样在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这条命令了。

  1. 在网上用“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

参考:http://blog.sina.com.cn/s/blog_9285741101019m5h.html

‘android–1’ does not exist in SDK

Warning: Android platform ‘android–1’ does not exist in SDK.

没有设置 Android SDK

(但是我有遇到无法设置 android build SDK 的情况,解决方法是设置里直接换了个 SDK)

参考:https://www.cnblogs.com/okgogo2000/p/9257808.html

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
2
3
[javac] Compiling 5 source files to D:\Qt\AndroidTest\RunAndroidx86\android-build\bin\classes
[javac] 错误: 不再支持源选项 5。请使用 6 或更高版本。
[javac] 错误: 不再支持目标选项 1.5。请使用 1.6 或更高版本。

\sdk\tools\ant\build.xml 文件中搜索 1.5,改成 1.81.6 还是会警告过时。

1
2
3
4
5
<!-- compilation options -->
<property name="java.encoding" value="UTF-8" />
<property name="java.target" value="1.5" />
<property name="java.source" value="1.5" />
<property name="java.compilerargs" value="" />

下载 Gradle 卡住

1
2
3
4
5
6
Downloading https://services.gradle.org/distributions/gradle-4.6-bin.zip

Exception in thread "main" java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
......

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
2
3
Cannot find the androiddeploy Json file.
Error while building/deploying project Bilibili-MagicalDanmaku (kit: Android for x86 (Clang Qt 5.13.1 for Android x86))
When executing step "Deploy to Android device"

实测无效的:

选项--构建与运行--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
2
3
4
5
adb: failed to stat E:/Projects/BilibiliLiveDanmaku_Android/android-build//build/outputs/apk/android-build-debug.apk: No such file or directory
Installing Android package to device.
Running command "D:/DevKits/SDK/platform-tools/adb.exe -s 192.168.91.101:5555 install -r E:/Projects/BilibiliLiveDanmaku_Android/android-build//build/outputs/apk/android-build-debug.apk"
Performing Streamed Install
Installing to device failed!

注意到 E:/Projects/BilibiliLiveDanmaku_Android/android-build//build/outputs/apk/android-build-debug.apk: No such file or directory 中间路径有两条 //,表示这个生成的文件夹是空的。

同上面一个解决方案:Disable 编译工具,点击重新激活。