侵权投诉

基于Java开发的鸿蒙网络访问方面的代码

鸿蒙系统HarmonyOS 2020-10-16 10:40 次阅读

前言

过了一个漫长的中秋+国庆假期,大家伙的鸿蒙内功修炼的怎么样了?难道像小蒙一样,都在吃吃喝喝中度过么,哎,罪过罪过,对不起那些鸡鸭鱼肉啊,赶紧回来写篇文章收收心,让我们一起看看,在鸿蒙中如何发送网络请求吧。

本文会从Java原生访问入手,进而再使用Retrofit访问网络,可以满足绝大部分开发者对于鸿蒙网络访问方面的代码需求,开始之前需要先做一下基础配置。

鸿蒙系统网络访问基础配置

1、跟Android类似,要访问网络,我们首先要配置网络访问权限,在config.json的"module"节点最后,添加上网络权限代码

"reqPermissions": [
      {
        "reason": "",
        "name": "ohos.permission.INTERNET"
      }
    ]

2、配置网络明文访问白名单

"deviceConfig": {
    "default": {
      "network": {
        "usesCleartext": true,
        "securityConfig": {
          "domainSettings": {
            "cleartextPermitted": true,
            "domains": [
              {
                "subDomains": true,
                "name": "www.baidu.com"
              }
            ]
          }
        }
      }
    }
  }

其中的name即为可以直接http访问的域名,如果全是https链接则可以做该不配置,切记域名是不带http://的,切记域名是不带http://的,切记域名是不带http://的,重要的事说三遍。

Java原生访问网络

由于鸿蒙系统支持Java开发,所以我们可以直接使用Java原生的Api来进行网络访问 该方式使用了java的url.openConnection() Api来获取网络数据

HttpDemo.java

package com.example.demo.classone;

import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;

public class HttpDemo {
    /**
     *访问url,获取内容
     * @param urlStr
     * @return
     */
    public static String httpGet(String urlStr){
        StringBuilder sb = new StringBuilder();
        try{
            //添加https信任
            SSLContext sslcontext = SSLContext.getInstance("SSL");//第一个参数为协议,第二个参数为提供者(可以缺省)
            TrustManager[] tm = {new HttpX509TrustManager()};
            sslcontext.init(null, tm, new SecureRandom());
            HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
                public boolean verify(String s, SSLSession sslsession) {
                    System.out.println("WARNING: Hostname is not matched for cert.");
                    return true;
                }
            };
            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
            HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
            URL url = new URL(urlStr);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setReadTimeout(10000);
            connection.setConnectTimeout(10000);
            connection.connect();
            int code = connection.getResponseCode();
            if (code == HttpURLConnection.HTTP_OK) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String temp;
                while ((temp = reader.readLine()) != null) {
                    sb.append(temp);
                }
                reader.close();
            }
            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }
        return sb.toString();
    }
}

HttpX509TrustManager.java

package com.example.demo.classone;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class HttpX509TrustManager implements X509TrustManager {
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }
}

最后是测试是否能够正确访问的代码,注意网络访问是耗时操作要放线程里面执行

new Thread(new Runnable() {
        @Override
        public void run() {
            String result = HttpDemo.httpGet("http://www.baidu.com");
            HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "网页返回结果:"+result);
        }
    }).start();

采用Retrofit访问网络

在模块的build.gradle里添加Retrofit库的引用,我这边采用的是retrofit2的2.5.0版本做示例

implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'io.reactivex.rxjava3:rxjava:3.0.4'

新建ApiManager类用来管理获取OkHttpClient,SSLSocketClient用来提供https支持,ApiResponseConverterFactory是Retrofit的转换器,将请求结果转成String输出

ApiManager.java

package com.example.demo.classone;

import com.example.demo.DemoAbilityPackage;
import ohos.app.Environment;
import okhttp3.*;
import retrofit2.Retrofit;

import java.io.File;
import java.util.concurrent.TimeUnit;

/**
 * 提供获取Retrofit对象的方法
 */
public class ApiManager {
    private static final String BUSINESS_BASE_HTTP_URL = "http://www.baidu.com";

    private static Retrofit instance;
    private static OkHttpClient mOkHttpClient;

    private ApiManager(){}

    public static Retrofit get(){
        if (instance == null){
            synchronized (ApiManager.class){
                if (instance == null){
                    setClient();
                    instance = new Retrofit.Builder().baseUrl(BUSINESS_BASE_HTTP_URL).
                            addConverterFactory(ApiResponseConverterFactory.create()).client(mOkHttpClient).build();
                }
            }
        }
        return instance;
    }

    private static void setClient(){
        if (mOkHttpClient != null){
            return;
        }
        Cache cache = new Cache(new File(getRootPath(Environment.DIRECTORY_DOCUMENTS),"HttpCache"),1024*1024*100);
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
//                .followRedirects(false)//关闭重定向
//                .addInterceptor(new AppendUrlParamIntercepter())
                .cache(cache)
                .retryOnConnectionFailure(false)
                .sslSocketFactory(SSLSocketClient.getSSLSocketFactory())
                .hostnameVerifier(SSLSocketClient.getHostnameVerifier())
                .readTimeout(8,TimeUnit.SECONDS)
                .writeTimeout(8,TimeUnit.SECONDS)
                .connectTimeout(8, TimeUnit.SECONDS);
//                .protocols(Collections.singletonList(Protocol.HTTP_1_1));
        mOkHttpClient = builder.build();
        mOkHttpClient.dispatcher().setMaxRequests(100);
    }

    private static String getRootPath(String dirs) {
        String path = DemoAbilityPackage.getInstance().getCacheDir() + "/" + dirs;
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        return path;
    }
}

SSLSocketClient.java

package com.example.demo.classone;
import javax.net.ssl.*;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;

public class SSLSocketClient {

    //获取这个SSLSocketFactory
    public static SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, getTrustManager(), new SecureRandom());
            return sslContext.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    //获取TrustManager
    private static TrustManager[] getTrustManager() {
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
                    }

                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[]{};
                    }
                }
        };
        return trustAllCerts;
    }


    //获取HostnameVerifier
    public static HostnameVerifier getHostnameVerifier() {
        HostnameVerifier hostnameVerifier = new HostnameVerifier() {
            @Override
            public boolean verify(String s, SSLSession sslSession) {
                return true;
            }
        };
        return hostnameVerifier;
    }
}

ApiResponseConverterFactory.java

package com.example.demo.classone;

import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Converter;
import retrofit2.Retrofit;

import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;

/**
 * BaseResponse的转换器
 */
public class ApiResponseConverterFactory extends Converter.Factory {

    public static Converter.Factory create(){
        return new ApiResponseConverterFactory();
    }

    @Override
    public Converter responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
        return new StringResponseBodyConverter();
    }

    @Override
    public Converter requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) {
        return null;
    }

    class StringResponseBodyConverter implements Converter {
        @Override
        public String convert(ResponseBody value) throws IOException {
            String s = value.string();
            return s;
        }
    }
}

开始使用Retrofit书写业务逻辑

BusinessApiManager.java

package com.example.demo.classone;

/**
 * 服务端访问接口管理
 */
public class BusinessApiManager {

    private static BusinessApiService instance;
    public static BusinessApiService get(){
        if (instance == null){
            synchronized (BusinessApiManager.class){
                if (instance == null){
                    instance = ApiManager.get().create(BusinessApiService.class);
                }
            }
        }
        return instance;
    }
}

BusinessApiService.java

package com.example.demo.classone;

import retrofit2.Call;
import retrofit2.http.*;

/**
 * 服务端访问接口
 */
public interface BusinessApiService {
    /**
     * 获取网页信息
     * @param url
     * @return
     */
    @GET()
    Call getHtmlContent(@Url String url);
}

测试Retrofit是否能够正常使用

BusinessApiManager.get().getHtmlContent("https://www.baidu.com").enqueue(new Callback() {
    @Override
    public void onResponse(Call call, Response response) {
        if (!response.isSuccessful() || response.body() == null){
            onFailure(null,null);
            return;
        }
        String result = response.body();
        HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "网页返回结果:"+result);
    }

    @Override
    public void onFailure(Call call, Throwable throwable) {
        HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "网页访问异常");
    }
});

总结

鸿蒙是基于Java开发的,所有Java原生api都是可以直接在鸿蒙系统上使用的,另外只要和java相关的库都是可以直接引用的,例如在引用retrofit的时候也带入了RxJava。 更多retrofit的使用方式,可以参考retrofit在android系统中的实现,鸿蒙系统基本兼容。
编辑:hfy

收藏 人收藏
分享:

评论

相关推荐

如何使用 HiBurn 工具烧录鸿蒙的 .bin 文件到 Hi3861 开发板

鸿蒙官方文档的Hi3861开发板第一个示例程序中描述了如何使用 DevEco Device Tool....
的头像 电子发烧友网工程师 发表于 10-25 09:23 82次 阅读
如何使用 HiBurn 工具烧录鸿蒙的 .bin 文件到 Hi3861 开发板

详细教程:在鸿蒙系统源码中添加第三方软件包

打开鸿蒙系统的源码,可以看到有这么一个文件夹:third_party。里面存放的是第三方的代码。 点....
的头像 电子发烧友网工程师 发表于 10-24 11:12 96次 阅读
详细教程:在鸿蒙系统源码中添加第三方软件包

在鸿蒙系统中移植Paho-MQTT实现MQTT协议的详细教程

MQTT 是当前最主流的物联网通信协议,需要物联网云平台,例如华为云、阿里云、移动 OneNET 都....
的头像 电子发烧友网工程师 发表于 10-24 11:05 247次 阅读
在鸿蒙系统中移植Paho-MQTT实现MQTT协议的详细教程

如何把鸿蒙Liteos-a移植到STM32MP157教程

1.make menuconfig演示,修改Kconfig添加 2.Kconfig只是定义Ma....
发表于 10-23 16:44 28次 阅读
如何把鸿蒙Liteos-a移植到STM32MP157教程

HarmonyOS liteos-a中断体系

串口只需要实现接收中断,不需要实现发送中断:对于APP来说,使用串口打印时,使用发送中断效率更高。但是由于内核也使用串口...
发表于 10-23 16:42 202次 阅读
HarmonyOS liteos-a中断体系

学习Java有前途吗?Java岗位饱和了吗?这篇文告诉你!

现在学Java有前途吗?Java岗位饱和了吗?学Java前途是有的,Java流行的网络编程语言之一,....
的头像 如意 发表于 10-23 16:25 166次 阅读
学习Java有前途吗?Java岗位饱和了吗?这篇文告诉你!

【课件】_liteos-a用内存模拟flash

移植一个最小系统要做什么事情?首先,串口驱动:方便调试;地址映射:虚拟地址-物理地址;完善中断子系统:至少提供TIck中断;...
发表于 10-23 16:22 202次 阅读
【课件】_liteos-a用内存模拟flash

鸿蒙shell命令:tftp

首先确定的是TFTP服务器是没有问题的,然后我在OHOS下执行:tftp -p -l /bin -r 000.hap 192.168.1.191 然后返回 T...
发表于 10-23 12:13 39次 阅读
鸿蒙shell命令:tftp

浅谈鸿蒙内核代码调度队列

鸿蒙内核代码中有两个源文件是关于队列的,一个是用于调度的队列,另一个是用于线程间通讯的IPC队列。
的头像 鸿蒙系统HarmonyOS 发表于 10-23 11:00 102次 阅读
浅谈鸿蒙内核代码调度队列

Python受欢迎程度直上升 即将超过Java

来自:程序猿(ID:imkuqin) TIOBE已公布2020年10月的编程语言排行榜。C语言依然排....
的头像 人工智能与大数据技术 发表于 10-23 10:41 199次 阅读
Python受欢迎程度直上升 即将超过Java

华为Mate40正式发布:旗舰高水准,搭载麒麟9000

华为在10月22日晚发布了重磅新品旗舰——华为Mate40系列,时隔一年,华为将它自身科技结合的最高水准倾注在
的头像 鸿蒙视界 发表于 10-23 10:17 205次 阅读
华为Mate40正式发布:旗舰高水准,搭载麒麟9000

【每日精选】惊!这么好的资料还不快收藏起来?

简介:专题汇集了HarmonyOS从入门到精通的各种开发资料,内容包括:设计参考、程序源码、开发实例、教程笔记等等,为大家节省...
发表于 10-22 18:28 288次 阅读
【每日精选】惊!这么好的资料还不快收藏起来?

APP配网【源码、手机APP、手册】

连老师:鸿蒙系统相关的知识整理成文档,这里分享给大家。主要是hi3861芯片。后续还会持续更新~~目....
发表于 10-22 17:28 27次 阅读
APP配网【源码、手机APP、手册】

HiSpark_WiFi_IoT智能开发原理图硬件资料

这是一份HiSpark_WiFi_IoT 物联网套件原理图硬件资料,希望能帮到需要的小伙伴。
发表于 10-22 17:08 29次 阅读
HiSpark_WiFi_IoT智能开发原理图硬件资料

Mate40抢先曝光:60w快充+双模5G+鸿蒙系统,真旗舰机!

自苹果官方公布了iPhone12的发布时间后,许多网友也开始频频关注华为即将发布的Mate40系列手机,毕竟华
的头像 鸿蒙视界 发表于 10-21 15:05 284次 阅读
Mate40抢先曝光:60w快充+双模5G+鸿蒙系统,真旗舰机!

SQL和Java的代码写法

根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。
的头像 数据分析与开发 发表于 10-21 10:35 124次 阅读
SQL和Java的代码写法

HarmonyOS资料下载专题

HarmonyOS资料下载专题:专题汇集了HarmonyOS从入门到精通的各种开发资料,内容包括:设计参考、程序源码、开发实例、教...
发表于 10-21 10:31 337次 阅读
HarmonyOS资料下载专题

HarmonyOS鸿蒙系统的入门学习课件免费下载

Ability 是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以....
发表于 10-21 08:00 34次 阅读
HarmonyOS鸿蒙系统的入门学习课件免费下载

鸿蒙系统移植:编译第一个APP:hello

我们在Ubuntu中给PC机编译程序时,执行这样的命令: gcc -o hello hello.c....
发表于 10-20 16:18 34次 阅读
鸿蒙系统移植:编译第一个APP:hello

第2节《鸿蒙OS开发环境搭建》

今天给大家带来的文档主要包含以下知识点: 1、Linux构建工具要求; 2、Windows开发工....
发表于 10-20 15:48 41次 阅读
第2节《鸿蒙OS开发环境搭建》

第4节《鸿蒙OS应用程序开发》

这份学习文档主要是带领大家在鸿蒙OS上学习开发一个应用程序,主要知识点如下: 1、U-Boot引导....
发表于 10-20 15:40 54次 阅读
第4节《鸿蒙OS应用程序开发》

HiSpark_IPC_DIY摄像头资料

HiSpark_IPC_DIY摄像头开发套件采用海思 3518EV300 系列 AI DSP,F23....
发表于 10-20 15:25 47次 阅读
HiSpark_IPC_DIY摄像头资料

美的首批搭载鸿蒙系统的厨电亮相“科技月”,创新产品吸睛

美的向科技企业转型,成效如何?探路数字化、智能化,“成色”几何?就在日前,一年一度、被誉为美的“科技奥斯卡”的
的头像 鸿蒙视界 发表于 10-20 11:41 305次 阅读
美的首批搭载鸿蒙系统的厨电亮相“科技月”,创新产品吸睛

HarmonyOS HiSpark AI Camera开发套件组装指导视频

https://www.bilibili.com/video/BV1tV411m7gW
发表于 10-19 20:50 101次 阅读
HarmonyOS HiSpark AI Camera开发套件组装指导视频

【每日精选】HarmonyOS资料下载专题&电源电路设计(海量资源供你下)

简介:HarmonyOS资料下载专题:从鸿蒙出世到现在,对于鸿蒙资料查询下载,大家是否有点迷茫-不知去何处查找。为此,本专题汇集...
发表于 10-19 18:47 42次 阅读
【每日精选】HarmonyOS资料下载专题&电源电路设计(海量资源供你下)

收到鸿蒙AI Camera。屏幕滑动特别迟钝,设置和摄像头的图标点击没反应。怎么回事?

收到鸿蒙AI Camera。屏幕滑动特别迟钝,设置和摄像头的图标点击没反应。怎么回事? ...
发表于 10-19 18:35 101次 阅读
收到鸿蒙AI Camera。屏幕滑动特别迟钝,设置和摄像头的图标点击没反应。怎么回事?

HarmonyOS_HDF框架(直播课件)

Liteos-a中驱动程序也跟Linux类似,Linux使用设备树描述硬件信息,驱动程序从设备树里获....
发表于 10-19 15:13 37次 阅读
HarmonyOS_HDF框架(直播课件)

HarmonyOS 内核文档

从系统的角度看,进程是资源管理单元。进程可以使用或等待 CPU、使用内存 空间等系统资源,并独立于....
发表于 10-19 14:50 62次 阅读
HarmonyOS 内核文档

2020年10月编程语言排行榜:Python即将超过Java

来源:菜鸟教程 TIOBE 2020 年 10 月份的编程语言排行榜已经公布,官方的标题是:Pyth....
的头像 inr999 发表于 10-19 11:37 277次 阅读
2020年10月编程语言排行榜:Python即将超过Java

华为为什么要做鸿蒙操作系统?

首先声明,本文仅代表笔者本人的看法。信我就正确,不信我就未必正确。 华为的朋友给我申请了一个特邀码,....
的头像 Linuxer 发表于 10-19 10:03 627次 阅读
华为为什么要做鸿蒙操作系统?

一文详解Java动态调试技术

调试是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。最常用的断点调试技术会在断点位置停顿,....
的头像 陈翠 发表于 10-18 11:33 468次 阅读
一文详解Java动态调试技术

Hi3861V100/Hi3861LV100 设备驱动 开发指南

Hi3861V100/Hi3861LV100 设备驱动 开发指南
发表于 10-17 10:43 404次 阅读
Hi3861V100/Hi3861LV100 设备驱动 开发指南

鸿蒙开发资料

鸿蒙开发资料
发表于 10-17 10:40 202次 阅读
鸿蒙开发资料

一文知道Java中接口的定义

使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体....
发表于 10-16 15:44 178次 阅读
一文知道Java中接口的定义

鸿蒙系统预计明年初正式应用到手机,小米、OV是否会选择使用鸿蒙系统?

由于华为消费者业务CEO已经确认:鸿蒙系统今年年底就要开始在手机上使用,并在明年开始,华为手机将全面使用鸿蒙O
的头像 鸿蒙视界 发表于 10-16 15:43 487次 阅读
鸿蒙系统预计明年初正式应用到手机,小米、OV是否会选择使用鸿蒙系统?

令人惊喜!麒麟芯片+方舟编译器,鸿蒙系统彻底解决卡顿问题

最近几年来,华为荣耀手机在流畅度方面逐渐走在了国产前面,甚至可以这样说,已经走在了三星的前面,虽然和苹果还是有
的头像 鸿蒙视界 发表于 10-16 15:04 381次 阅读
令人惊喜!麒麟芯片+方舟编译器,鸿蒙系统彻底解决卡顿问题

HarmonyOS 内核设计程序文档

HarmonyOS 内核的进程模块可以给用户提供多个进程,实现了进程之间的切换和通信,帮助用户管理业....
发表于 10-16 14:53 35次 阅读
HarmonyOS 内核设计程序文档

HarmonyOS智慧屏设计文档

智慧屏采用了自然简单,符合直觉的设计原则,让全家人轻松简单的使用智慧屏。基于对用户生活、娱乐习惯的洞....
发表于 10-16 14:42 31次 阅读
HarmonyOS智慧屏设计文档

HarmonyOS智能穿戴应用设计文档

为构建一致且易用的操作体验,我们总结了这份设计指南,对应用设计提供指导,适用于智能穿戴和轻量级智能穿....
发表于 10-16 14:36 45次 阅读
HarmonyOS智能穿戴应用设计文档

HarmonyOS IoT应用设计文档

在万物互联的新时代,HarmonyOS 会尽最大努力为用户打造简单易用的 IoT 设备使用体验。通过....
发表于 10-16 14:13 34次 阅读
HarmonyOS IoT应用设计文档

OpenHarmony:跨越边界 有你有我

电子发烧友网报道(文/黄山明)2020年10月15日,开放原子开源基金会OpenHarmony分论坛....
的头像 Simon观察 发表于 10-16 10:45 2406次 阅读
OpenHarmony:跨越边界 有你有我

【线下活动】鸿蒙1024技术沙龙—— Hello New World! 火热报名中

大会介绍: HarmonyOS 2.0开源一月有余,业界关于HarmonyOS应用方向、硬件开发、市....
的头像 鸿蒙视界 发表于 10-15 20:59 645次 阅读
【线下活动】鸿蒙1024技术沙龙—— Hello New World! 火热报名中

HarmonyOS设备应用开发文档

HarmonyOS 针对汽车场景提供了驾驶安全管控和车辆控制能力集,帮助开发 者构建车载控制平台上....
发表于 10-15 15:17 34次 阅读
HarmonyOS设备应用开发文档

HarmonyOS开发文档(二)

HarmonyOS 视频模块支持视频业务的开发和生态开放,开发者可以通过已开放的接口很容易地实现视频....
发表于 10-15 14:47 29次 阅读
HarmonyOS开发文档(二)

HarmonyOS开发文档(一)

华为自有开源操作系统鸿蒙OS,鸿蒙OS凭借多终端开发IDE,多语言统一编译,分布式架构Kit提供屏幕....
发表于 10-15 14:15 48次 阅读
HarmonyOS开发文档(一)

HarmonyOS智能硬件设备虚拟化特性开发

在这个 Codelab 中,你将能够使用 HUAWEI DevEco Device Tool 完成摄....
发表于 10-15 11:32 42次 阅读
HarmonyOS智能硬件设备虚拟化特性开发

HarmonyOS应用设计文档

当为多款不同的设备开发应用时,除了要考虑每个设备的独特特性外,还需要考虑多个设备的共性,并使用通用性....
发表于 10-15 11:22 29次 阅读
HarmonyOS应用设计文档

HarmonyOS Codelabs设备虚拟化特性开发

在这个 Codelab 中,您将能够使用 HUAWEI DevEco Device Tool 完成摄....
发表于 10-15 11:10 22次 阅读
HarmonyOS Codelabs设备虚拟化特性开发

JFinal的源代码资料合集

JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习....
发表于 10-15 08:00 27次 阅读
JFinal的源代码资料合集

【每日精选】鸿蒙资料专题+电路原理图集锦分享

1.鸿蒙系统资料专题简介:为方便广大鸿蒙开发者而建立的专题,本专题将对HarmonyOS全面解析,汇集了鸿蒙系
的头像 物联网星球 发表于 10-14 19:01 518次 阅读
【每日精选】鸿蒙资料专题+电路原理图集锦分享

HarmonyOS Codelabs软件应用示例操作指南

HarmonyOS 是面向全场景多终端的分布式操作系统,使得应用程序的开发打破了智能终端 互通的性能....
发表于 10-14 15:31 27次 阅读
HarmonyOS Codelabs软件应用示例操作指南

HarmonyOS Codelabs软件应用视频操作指南

HarmonyOS 是面向全场景多终端的分布式操作系统,使得应用程序的开发打破了智能终 端互通的性....
发表于 10-14 14:24 28次 阅读
HarmonyOS Codelabs软件应用视频操作指南

在Linux操作鸿蒙开发板实现Helloworld程序

本文主要介绍了如何在 Linux 环境下在 Hi3516DV300 开发板搭载鸿蒙 OS 实现一个简....
发表于 10-14 12:05 88次 阅读
在Linux操作鸿蒙开发板实现Helloworld程序

盘点Java程序员不能错过的7个基本框架,完美构建复杂应用

现在IT开发人员面对的较大挑战就是复杂性,构建的应用越来越复杂。今天给大家列出Java程序员不能错过....
的头像 如意 发表于 10-14 11:54 309次 阅读
盘点Java程序员不能错过的7个基本框架,完美构建复杂应用

鸿蒙系统 Ubuntu 操作入门资料

我们安装的 Ubuntu 是桌面版本,这样我们可以像在 windows 系统下操作一样,相对于平时所....
发表于 10-14 11:47 57次 阅读
鸿蒙系统 Ubuntu 操作入门资料

鸿蒙HarmonyOS烧录方法总结

理解 HarmonyOS 驱动框架,用户态 APP 和内核态驱动之间的通信机制。HarmonyOS ....
发表于 10-14 11:26 49次 阅读
鸿蒙HarmonyOS烧录方法总结

鸿蒙系统HarmonyOS入门文档

HarmonyOS 是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体 娱乐等)的....
发表于 10-14 11:13 140次 阅读
鸿蒙系统HarmonyOS入门文档

小米愿意使用!前提麒麟处理器和鸿蒙系统独立开来

自从华为被美国列为实体名单之后,谷歌就切断华为使用安卓系统的通道,可以说是在华为手机最为重要的操作系....
的头像 鸿蒙系统HarmonyOS 发表于 10-13 12:15 512次 阅读
小米愿意使用!前提麒麟处理器和鸿蒙系统独立开来

华为鸿蒙系统USB口、网络口烧写方式

确认Hi3518EV300单板内含有USB下载功能的U-boot版本,若不支持,请将上海海思提供的最....
的头像 电子发烧友网 发表于 10-13 10:33 676次 阅读
华为鸿蒙系统USB口、网络口烧写方式

【每日精选资料】实战经验教你如何避坑+精选开源资料分享

1.十大绝招,教你搞懂令人头秃的高频电路布线问题 简介:如果数字逻辑电路的频率达到或者超过 45MH....
的头像 发烧友实验室 发表于 10-12 19:06 555次 阅读
【每日精选资料】实战经验教你如何避坑+精选开源资料分享
博评网