想了解更多关于开源的境详内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
实践过程中的部分视频演示
- https://www.bilibili.com/video/BV1Dp4y1w7kP
- https://www.bilibili.com/video/BV1Fj411t7mM
mkdir ~/workcd ~/workgit clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitvim ~/.bashrc# --- 写入下面这行配置export PATH="$PATH:/home/ubuntu/work/depot_tools"# ---source ~/.bashrc
ssh-keygencat ~/.ssh/id_rsa.pub# Gitee - 设置 - SSH公钥 - 添加cd ~/workmkdir enginecd enginetouch .gclientvim .gclient# --- 写入如下内容solutions = [ { "managed": False,支持 "name": "src/flutter", "url": "git@gitee.com:openharmony-sig/flutter_engine.git", "custom_deps": { }, "deps_file": "DEPS", "safesync_url": "", },]# ---gclient sync# 从 http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist 每日构建中,下载ohos-sdk-full,应用开在engine根目录下,新建文件夹 ndk/linux/4.0 ,解压ohos-sdk-full sdk中的native文件夹到 ndk/linux/4.0 文件夹中;mkdir -p ndk/linux/4.0cd ndk/linux/4.0# 把 native-linux-x64-4.0.9.6-Beta2.zip 放到此目录,并解压unzip native-linux-x64-4.0.9.6-Beta2.zip
开始编译:
cd ~/work/enginemake
出现如下错误:
../../third_party/dart/runtime/bin/socket_base_posix.cc -o obj/third_party/dart/runtime/bin/dart_io_api.socket_base_posix.o../../third_party/dart/runtime/bin/socket_base_posix.cc:154:12: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare] cmsg = CMSG_NXTHDR(&msg, cmsg); ^~~~~~~~~~~~~~~~~~~~~~~/home/ubuntu/work/engine/ndk/linux/4.0/native/sysroot/usr/include/sys/socket.h:360:44: note: expanded from macro 'CMSG_NXTHDR' __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~../../third_party/dart/runtime/bin/socket_base_posix.cc:160:15: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare] cmsg = CMSG_NXTHDR(&msg, cmsg), control_message++) { ^~~~~~~~~~~~~~~~~~~~~~~/home/ubuntu/work/engine/ndk/linux/4.0/native/sysroot/usr/include/sys/socket.h:360:44: note: expanded from macro 'CMSG_NXTHDR' __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~../../third_party/dart/runtime/bin/socket_base_posix.cc:263:33: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare] i++, message++, cmsg = CMSG_NXTHDR(&msg, cmsg)) { ^~~~~~~~~~~~~~~~~~~~~~~/home/ubuntu/work/engine/ndk/linux/4.0/native/sysroot/usr/include/sys/socket.h:360:44: note: expanded from macro 'CMSG_NXTHDR' __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~3 errors generated.[122/8624] CXX obj/flutter/third_party/tonic/file_loader/tonic.file_loader_posix.oninja: build stopped: subcommand failed.
解决方案,忽略编译警告,重新编译通过修改 /home/ubuntu/work/engine/src/build/config/compiler/BUILD.gn。
# 搜索 default_warning_flags = 修改为下面的代码# line 602 603default_warning_flags = ["-Wno-sign-compare"]default_warning_flags_cc = ["-Wno-sign-compare"]
编译成功输出目录:
/home/ubuntu/work/engine/src/out/ohos_debug_unopt_arm64/home/ubuntu/work/engine/src/out/ohos_release_arm64
git clone https://gitee.com/openharmony-sig/flutter_flutter
可以参考下,根据你实际的存放位置修改路径。
# depot-toolsexport PATH="$PATH:/home/ubuntu/work/depot_tools"# javaexport JAVA_HOME=/home/ubuntu/env/jdk-17.0.8export PATH="$PATH:$JAVA_HOME/bin"# node.jsexport NODE_HOME=/home/ubuntu/env/node-v14.19.1-linux-x64export PATH="$PATH:$NODE_HOME/bin"# ohosexport PATH="$PATH:/home/ubuntu/env/oh-command-line-tools/bin"export OHOS_SDK_HOME=/home/ubuntu/env/ohos-sdkexport OHPM_HOME=/home/ubuntu/env/oh-command-line-tools/ohpmexport SIGN_TOOL_HOME=/home/ubuntu/env/developtools_hapsigner/autosign# gradleexport GRADLE_HOME=/home/ubuntu/env/gradle-7.1export PATH="$PATH:$GRADLE_HOME/bin"# flutterexport PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cnexport PATH="$PATH:/home/ubuntu/env/flutter_flutter/bin"# hdcexport HDC_HOME=/home/ubuntu/env/ohos-sdk/10/toolchainsexport PATH="$PATH:$HDC_HOME"
{ "version-name": "2.0.0", "version-code": 2, "app-distribution-type": "os_integration", "uuid": "5027b99e-5f9e-465d-9508-a9e0134ffe18", "validity": { "not-before": 1594865258, "not-after": 1689473258 }, "type": "release", "bundle-info": { "developer-id": "OpenHarmony", "distribution-certificate": "-----BEGIN CERTIFICATE-----\nMIICSTCCAc+gAwIBAgIFAJV7uNUwCgYIKoZIzj0EAwIwYzELMAkGA1UEBhMCQ04x\nFDASBgNVBAoMC09wZW5IYXJtb255MRkwFwYDVQQLDBBPcGVuSGFybW9ueSBUZWFt\nMSMwIQYDVQQDDBpPcGVuSGFybW9ueSBBcHBsaWNhdGlvbiBDQTAeFw0yMjAxMjkw\nNTU0MTRaFw0yMzAxMjkwNTU0MTRaMGgxCzAJBgNVBAYTAkNOMRQwEgYDVQQKDAtP\ncGVuSGFybW9ueTEZMBcGA1UECwwQT3Blbkhhcm1vbnkgVGVhbTEoMCYGA1UEAwwf\nT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUmVsZWFzZTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABAW8pFu7tHGUuWtddD5wvazc1qN8ts9UPZH4pecbb/bSFWKh7X7R\n/eTVaRrCTSSdovI1dhoV5GjuFsKW+jT2TwSjazBpMB0GA1UdDgQWBBScyywAaAMj\nI7HcuIS42lvZx0Lj+zAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUE\nDDAKBggrBgEFBQcDAzAYBgwrBgEEAY9bAoJ4AQMECDAGAgEBCgEAMAoGCCqGSM49\nBAMCA2gAMGUCMFfNidGo6uK6KGT9zT1T5bY1NCHTH3P3muy5X1xudOgxWoOqIbnk\ntmQYB78dxWEHLQIxANfApAlXAD/0hnyNC8RDzfLOPEeay6jU9FXJj3AoR90rwZpR\noN9sYD6Oks4VGRw6yQ==\n-----END CERTIFICATE-----\n", "bundle-name": "{ { ohosId}}", "apl": "normal", "app-feature": "hos_normal_app" }, "acls": { "allowed-acls": [ "" ] }, "permissions": { "restricted-permissions": [] }, "issuer": "pki_internal"}
touch ~/.npmrcvim ~/.npmrc# 写入如下内容registry=https://registry.npmjs.org@ohos:registry=https://repo.harmonyos.com/npm/# 或者这样registry=https://registry.npm.taobao.org@ohos:registry=https://repo.harmonyos.com/npm/
常用命令:
# 环境检测 flutter doctor# 环境配置flutter config --<key> <value># 创建新项目flutter create --platforms ohos,android --org <org> <appName># 已连接设备查找flutter devices# 应用安装flutter install# 资源打包flutter assemble# 应用构建flutter build hap --target-platform ohos-arm --debug true --local-engine=<兼容ohos的engine产物路径># 应用运行flutter run --local-engine=<兼容ohos的engine产物路径># 调试模式flutter attach
实践命令(创建项目并打包hap)。
# createflutter create --platforms ohos,android myappcd myapp# build debug hapflutter build hap --target-platform ohos-arm64 --debug true --local-engine=/home/ubuntu/work/engine/src/out/ohos_debug_unopt_arm64# build release hapflutter build hap --target-platform ohos-arm64 --local-engine=/home/ubuntu/work/engine/src/out/ohos_release_arm64
flutter build hap -h。
Build an Ohos Hap file from your app.Global options:-h, --help Print this usage information.-v, --verbose Noisy logging, including all shell commands executed. If used with "--help", shows hidden options. If used with "flutter doctor", shows additional diagnostic information. (Use "-vv" to force verbose logging in those cases.)-d, --device-id Target device id or name (prefixes allowed). --version Reports the version of this tool. --suppress-analytics Suppress analytics reporting when this command runs.Usage: flutter build hap [arguments]-h, --help Print this usage information. --target-platform The target platform for which the app is compiled. [ohos-arm64 (default), ohos-arm, ohos-x86] --debug Build a debug version of your app. --profile Build a version of your app specialized for performance profiling. --release Build a release version of your app (default mode).
在Linux下在非root权限下使用hdc会出现无法找到设备的情况,此问题原因为用户USB操作权限问题,解决方法如下:
sudo chmod -R 777 /dev/bus/usb/
或者su切换到root用户下运行。
这样操作之后 hdc list targets 可查看到已连接的OH设备。
文章相关附件可以点击下面的原文链接前往下载:
https://ost.51cto.com/resource/3049
想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
责任编辑:jianghua 来源: 51CTO 开源基础软件社区 应用开发鸿蒙(责任编辑:娱乐)
OPPO K11x火热预售中:8GB+256GB版优惠100元
智慧PC体验再上一个台阶 华为MateBook家族618好价不容错过