下载
官网下载: HBuilderX-高效极客技巧 (dcloud.io)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f6f3fbcef76548f39e89ae383dff4d05.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
因为我们需要打包app,所以最好下载的是App开发版,若是标准版则需要自行下载和配置app的依赖
![在这里插入图片描述](https://img-blog.csdnimg.cn/21176a46a82b4b999fd228064be556ce.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
下载好后是一个压缩包,解压后直接可以使用(无安装):
![在这里插入图片描述](https://img-blog.csdnimg.cn/35f63db7a232446b8b0eb17070dc4f28.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
使用
第一次使用可以选择主题,和习惯快捷键 (这里我选择vscode)
![在这里插入图片描述](https://img-blog.csdnimg.cn/68020bf4aff041268f19ff9f6eaff652.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
安装预览
点击右上角预览按钮
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1121f8aa9f047c2b52ce9ab8b499450.png#pic_center)
选择Yes
![在这里插入图片描述](https://img-blog.csdnimg.cn/276c547c667e42eda5a79f6cdb117d33.png#pic_center)
安装完毕后,可以成功预览我们的文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/70370630f8cc4141a254b8244591949a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
创建项目
我这里选择5+App 默认模板 作为样例讲解
![在这里插入图片描述](https://img-blog.csdnimg.cn/6bcc8508f47d4fc083c17be70bd17832.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
生成如下项目
![在这里插入图片描述](https://img-blog.csdnimg.cn/21076c272e4249f68609ae1c84acb48c.png#pic_center)
这里我直接贴一段我预先写好的小demo (附录有源代码)
![在这里插入图片描述](https://img-blog.csdnimg.cn/7d940547e16141c09bd0438792012103.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
打包成APK
发行 —> 原生App-云打包 (本地打包需要Android的sdk环境)
由于我们这里是新建的项目,所以很多内容未配置,会出现警告
[HBuilder] 17:54:31.228 项目的AppID不能为空,请在该项目下的manifest.json中重新获取
![在这里插入图片描述](https://img-blog.csdnimg.cn/72bcb1f09dbd4de0b03ae86ad8f1bc28.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center)
manifest.json 配置
进入 manifest.json
发现这里有警告AppID 不能为空
![在这里插入图片描述](https://img-blog.csdnimg.cn/2aeb44b6640846a7bdbba89dedf31a9b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
注册账号
点击重新获取会要求我们登录注册,那就按照流程走即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/649fc479d8174062b01f7a3389f2aab7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
限权配置
因为我这里有网络请求,所以要获取一下 INTERNET 的限权
![在这里插入图片描述](https://img-blog.csdnimg.cn/93ee6ffa191c456a8d681a6ed9908b51.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图标设置
注意:这里的图标不能是修改了后缀的.png 图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/244239a7a73d44dc87cce38019f63d01.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
原生App-云打包
回到 发行 ---> 原生App-云打包
我们学习阶段选择使用公共测试证书即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/2801f4d67ec442e6804ef90248fcbc7b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
第一次打包需要安装依赖,安装即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd6e5a190a814bde96de3879f9f8220f.png#pic_center)
出现了几个警告,原来是我还没绑定手机,身份验证之类的
https://ask.dcloud.net.cn/account/setting/profile/
https://dev.dcloud.net.cn/app/index
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a10c4dd930547bab46c32b70addea79.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
打包中,不要关闭(这里耗时可能会很长)
![在这里插入图片描述](https://img-blog.csdnimg.cn/edcfa81536054c6fae74f115acfd002a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
apk所在路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/338e7e8303d44554b97338d343c91f81.png#pic_center)
安装使用效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/fdf23959663b478e8d4198734d75b629.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
使用Android模拟器
安装配置模拟器 - HBuilderX 文档 (dcloud.net.cn)
通过Android Studio 启动模拟器
![在这里插入图片描述](https://img-blog.csdnimg.cn/6fb051344d1548fb9741f8060ae8d007.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d4ec7a89eb3c4833b4b6455d0ffd15c8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
Android模拟器启动后,HBuilderX会将其识别为名称为emulator-xxxx 的Android手机,其中的xxxx为模拟器的id如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/0b57f3bb7e3f42568a8c08170038ccbf.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/df1ff283bd8c4015b93a9602a0403305.png#pic_center)
运行成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/b037bb79b47d4874b0a3eaf724a58922.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)
通过命令行启动模拟器
进入Android SDK目录
找到emulator 文件夹
命令行进入该文件夹下的路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/335b57d3ef454bd88ea4013985084a44.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
emulator.exe -list-avds
emulator.exe -avd 模拟器名字
emulator.exe -netdelay none -netspeed full -avd 模拟器名字
emulator.exe -netdelay none -netspeed full -avd Nexus_5_API_26
![在这里插入图片描述](https://img-blog.csdnimg.cn/42b062329963471c830d7268aa2e702b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSp6LWQ57uG6I6y,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
顺便提下模拟器的默认安装位置
C:\Users\windows\.android\avd
附录
上方网页的原代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>天气查询</title>
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
</head>
</script>
<style>
.weather {
width: 100%;
margin-left: 10px;
}
.weather>h5 {
margin-top: 15px;
margin-left: 10px;
}
.weather>.form-control {
display: inline-block;
width: 150px;
margin: 0 2%;
}
.show-city {
font-family: 宋体;
font-size: 20px;
}
.weather-table-div {
display: inline-block;
}
.weather-table {
width: 280px;
margin: 20px 10px;
}
.weather-table>thead>th {
font-family: 宋体;
font-size: 23px;
text-align: center;
padding: 0 0;
}
.weather-table>tbody>tr>td {
padding: 1px 3px;
}
.weather-table>tbody>tr> :first-child {
font-size: 20px;
text-align-last: justify;
text-align: justify;
text-justify: distribute-all-lines;
}
.weather-table>tbody>tr> :nth-child(2) {
font-size: 20px;
text-align: center;
}
</style>
<body>
<div class="weather">
<h5>
城市天气查询:
<img src="http://api.k780.com/upload/weather/d/0.gif" alt="日间" />
<span> / </span>
<img src="http://api.k780.com/upload/weather/n/1.gif" alt="夜间" />
</h5>
<input class="form-control" placeholder="请输入城市名" type="text" v-model="cityName" @keyup.enter="checkWeather" />
<button class="btn btn-primary" @click="checkWeather">确认</button>
<br>
<span class="show-city" v-if="showCity">
你查询的城市是:<b>{{ showCity }}</b>
</span>
<br />
<div class="weather-table-div" v-for="(item, index) in weatherData">
<table class="table table-striped weather-table">
<thead class="thead-light">
<th colspan="2">{{ item.days + " " + item.week }}</th>
</thead>
<tbody>
<tr>
<td>温度</td>
<td>{{ item.temperature }}</td>
</tr>
<tr>
<td>天气</td>
<td>{{ item.weather }}</td>
</tr>
<tr>
<td>日间</td>
<td><img :src="item.weather_icon" alt="" /></td>
</tr>
<tr>
<td>夜间</td>
<td><img :src="item.weather_icon1" alt="" /></td>
</tr>
<tr>
<td>风向</td>
<td>{{ item.wind }}</td>
</tr>
<tr>
<td>风级</td>
<td>{{ item.winp }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
var app = new Vue({
el: ".weather",
data: {
cityName: "",
showCity: "",
weatherData: null,
},
methods: {
checkWeather() {
let url = `http://api.k780.com:88/?app=weather.future&
appkey=10003&
sign=b59bc3ef6191eb9f747dd4e83c99f2a4&
format=json`
url += `&weaid=` + this.cityName;
axios.get(url).then(
(response) => {
const weatherData = response.data;
if (weatherData.success === "1") {
this.weatherData = weatherData.result;
}
},
(error) => {
console.log("error", error);
}
);
this.showCity = this.cityName;
this.cityName = "";
}
},
});
</script>
</html>
END
|