一、 前言
最近,安装试用了Rad Studio 11.2,安装过程相对比较顺利,安装之后,试用了C++Builder 11.2开发Android应用的功能,然而试用及调试过程并不顺利。
(一) 创建项目
选择“File->New->Multi-Device Application - C++Builder”,在弹出的窗体选择“Header/Footer with Navigation”,自动完成Multi-Device Application项目创建。
(二) 调试发现问题
选择快捷键F9,开始调试,出现了许多错误。程序无法完成编译,自然无法完成在Android设备进行安装测试。总结起来主要存在三方面的问题:
1. Android SDK配置存在问题
虽然在Rad Studio 11.2安装时,在Platform selection环节,在Additional Options页面选择了 Android SDK 25.2.5 - NDK r21以及Eclipse Adoptium Open JDK11,但是在Rad Studio 11.2 中,通过选择菜单“Option->Deployment->SDK Manager”,发现Android SDK相关配置文件并不完全正确。
2. string.h
编译调试过程中,出现“[bccaarm Error] string.h(204): functions that differ only in their return type cannot be overloaded string.h(45):previous declaration is here”,导致无法继续完成程序编译工作。
3. 无法链接Android设备开展安装调试
上述两方面问题解决后,可以完成程序的调试,可以正常生成Android应用程序,但是无法连接Android设备(手机)开展测试工作。
本文主要聚焦解决以上问题,现将解决上述问题的过程记录下来,以防不时之需,同时给遇到同样问题的人以参考。
二、 解决Android SDK配置不当问题
进入目录“CatalogRepository”,一般缺省位置位于为“C:\Users\Public\Documents\Embarcadero\Studio\22.0\ CatalogRepository”,本文设置为“C:\Program Files (x86)\Embarcadero\Studio\22.0\CatalogRepository”,将原来的Android SDK根目录 “AndroidSDK-2525-22.0.46141.0937”修改为“AndroidSDK-2525-22.0.46141.0937-bak”(完成Android SDK配置之后,可以删除该目录),减少后续在SDK Manager管理环节设置再次修改文件目录的麻烦。
(一) 创建SDK文件的根目录
在目录“CatalogRepository”中创建“AndroidSDK-2525-22.0.46141.0937”,与原来的目录(AndroidSDK-2525-22.0.46141.0937-bak)位于同样的位置,作为更新后的Android SDK的存放目录。
(二) 更新Android SDK
以管理员身份运行 cmd.exe,切换进入目录“C:\Program Files (x86)\Embarcadero\Studio\22.0\CatalogRepository\ AndroidSDK-2525-22.0.46141.0937-bak \cmdline-tools\latest\bin”,在其中找到文件“sdkmanager.bat”,运行以下指令:
sdkmanager.bat --sdk_root="C:\Program Files (x86)\Embarcadero\Studio\22.0\CatalogRepository\AndroidSDK-2525-22.0.46141.0937" "build-tools;32.0.0" "tools" "platforms;android-31" "platform-tools" "emulator" "extras;intel;Hardware_Accelerated_Execution_Manager" "patcher;v4"
上述指令中,--sdk_root 就是需要新安装Android SDK的根目录,也就是在之前创建的“AndroidSDK-2525-22.0.46141.0937”目录。
后面每个双引号之间表示一个需要安装的对象,需要安装的对象用双引号,同时需要安装的对象之间用空格隔开。执行完成上述的指令,更新后的Android SDK已经安装完成。进入“AndroidSDK-2525-22.0.46141.0937”目录:
表明Android SDK已经安装更新完成。
删除之前修改后的目录“AndroidSDK-2525-22.0.46141.0937-bak”。
(三) Android SDK配置
在Rad Studio 11.2 中,通过选择菜单“Option->Deployment->SDK Manager”,完成SDK设置,设置完成后界面(已经没有了之前的异常提示符号)。
三、 解决因为string.h导致的编译问题
问题:[bccaarm Error] string.h(204): functions that differ only in their return type cannot be overloaded string.h(45):previous declaration is here
在RAD Studio11.2中点击上述提示信息,将会自动打开下述文件,
C:\Program Files (x86)\Embarcadero\Studio\22.0\CatalogRepository\AndroidNDK-21-22.0.46141.0937\android-ndk-r21\sysroot\usr\include\string.h,
将该文件中第191行的如下内容注释掉:
/* #if defined(__cplusplus) */
同时,随后在上述注释掉的语句之后增加如下内容:
#if defined(__cplusplus) && defined(__clang__) && ((__clang_major__ > 3) || (__clang_minor__ > 4))
保存,重新编译程序,没有任何问题,顺利完成程序编译。
四、 完成无线调试Android应用设置
(一) 接入同一无线网络
确保Rad Studio 11.2所运行的开发机器(PC端)与Android测试设备在同一无线网络。
(二) 完成Android 测试设备设置(以荣耀60 Pro为例)
进入设置->关于手机,双击版本号,进入开发者模式。
设置->系统与更新->开发人员选项->无线调试,打开无线调试开关。
(三) Android设备链接PC端
以管理员身份运行 cmd.exe,切换进入目录“C:\Program Files (x86)\Embarcadero\Studio\22.0\CatalogRepository\AndroidSDK-2525-22.0.46141.0937\platform-tools”,在其中找到文件“adb.exe”,运行以下指令:
adb connect 192.168.1.4:37557 (手机本身的ip与端口)
adb pair 192.168.1.4:41093 (配对码配对设备)
Enter pairing code: 770015
出现如下信息,表示无线连接成功,可以进行无线调试。
Successfully paired to 192.168.1.4: 41093 [guid=adb-A6BFUT2107002999-TwQJxn]
五、 参考资料
1. Delphi11.1 版本 Android SDK 更新步骤
网址:https://blog.csdn.net/sensor_WU/article/details/124010086
2. 如何用Android Studio进行无线的真机调试?
网址:https://www.zhihu.com/question/31998053/answer/2989498553