Q001: 文档问题-开启开发者模式
文档中心https://developer.huawei.com/consumer/cn/doc/quickApp-Guides/quickapp-open-developer-option-0000001137005543实际上文档描述错误:连续多次点击“Harmony 版本”无效
A001: 应为:连续多次点击“软件版本”
Q002:真机调试-签名问题
Install Failed: error: failed to install bundle.
code:9568320
error: no signature file.
Open signing configs
Q003:
.margin({ top: '%2' } 无效
A003:
.margin({ top: '2%' } 因为上边%误写在数字前了
Q004:
如何浏览沙箱文件夹?
A004:
View > Tool Windows > Device File Browser
例如 data/app/el2/100/base/com.example.myapplication/haps/entry/files/
Q005:
如何下载 OpenHarmony SDK?
A005:
File > Settings > OpenHarmony SDK
Q006:
如何下载NDK?
A006:
File > Settings > OpenHarmony SDK 勾选Native
下载的是已解压状态,网上说的解压不需要
下载路径:DevEco安装路径\sdk\default\openharmony\native\
cmake命令路径(接续上行路径):build-tools\cmake\bin
到系统环境变量Path中(注意重启电脑生效)
Q007:
CMake Error: CMake was unable to find a build program correspongding to "Ninja"
A007:
ninja.exe与camke.exe在同一文件夹下,确保有这个exe
若仍有这个错误,说明没有重启电脑让环境变量生效
Q008:
error: declaration of 'xxx' has a different language linkage
xxx是一个.c中的函数名
对c/cpp编译不太懂,现象是之前编译没这个错误,后来在ndk中又增加了一个napi接口,再编译就报这个错
A008:
在xxx对应的.h中
有例如下边的声明:
char* xxx(const char *str);
在外边套上extern "C" 即可
extern "C" { char* xxx(const char *str); }
Q009:
warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings]
对c/cpp编译不太懂,现象是之前编译没这个错误,后来在ndk中又增加了一个napi接口,再编译就报这个错
这个错误指向某个.c中的一个全局变量:
char* strPackageName = "xxx";// 1
test("test");// 2
A009:
对于1,前边加const即可
对于2,test((char*)"test");// 编译通过,效果待验证
Q010:
如何设置NDK的目标设备cpu架构
A010:
DevEco左上侧工程树结构 entry/build-profile.json5内的
externalNativeOptions内增加
"abiFilters": [ "arm64-v8a", "x86_64" ]
Q011:
base64解码丢失字符问题
A011:
如果用ArkTs的base64编码和解码,没有问题。
如果用某些base64编码工具(下称工具A)编码得到的编码串,用在线解码工具例如https://base64.us解码,用java源码解码,或用iOS的oc解码,都能返回正确原文,但用ArkTs base64解码,则有时(不是全部)出现上述问题,多表现为若原文最后有换行,其后有一些字符时,解码得到的原文会丢失这个换行及其以后所有字符。
另外对同一段原文base64编码,工具A和ArkTs得到的编码串不一样,但用https://base64.us解码结果确都正确!
由于用工具A对大量文件进行了编码,所以不可能批量用ArkTs对这些文件重新编码。不过由于所得到的文件内容是通过NDK传给ArkTs的,所以可以通过在NDK侧用c语言的base64解码后再传给ArkTs侧使用。