软件下载
下载 Android Studio 和应用工具 - Android 开发者 | Android Developers (google.cn),最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。
本次使用Android Studio 4.0这里提供了一下版本的下载地址,可直接点击下:https://redirector.gvt1.com/edgedl/android/studio/install/4.0.0.16/android-studio-ide-193.6514223-windows.exe
软件安装
在非系统盘(C盘之外)的盘符下面新建一个文件夹命名为Android,作为软件安装目录(注意:目录不要出现中文,否则会出错),并在文件夹下新建空文件夹命名为SDK,用于下载SDK。
我们双击下载好的Android studio
安装路径选择我们刚才新建的文件下,安装完成后,会进入Android Studio的启动页面,我们点击cancel(取消)。
接下来我们选择next,进入SDK下载界面,修改安装路径选择上面新建文件夹下的SDK路径,然后我们选择SDK安装位置并点击next。
等待Finish, 到这里Android studio安装就完成了!
创建项目
安装完成后桌面生成新的图标,双击图标打开。
第一次进入,并没有工程,所以我们选择新建项目“Start a new Android Studio project”。
选择空白活动“Empty Activity”并点击“next”。
创建项目,SDA建议选择API21,自定义项目名称、项目存放路径(不能使用带中文的),其他默认,语言选择Java。
项目配置
按照如下路径,右键新建Java类,命名为AliyunIoTSignUtil,添加AliyunIoTSignUtil工具类。
复制代码到新建的类中,并保存。
//第一行保留 自己的pack.com.example.
import java.util.Arrays;
import java.util.Map;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class AliyunIoTSignUtil {
public static String sign(Map<String, String> params, String deviceSecret, String signMethod) {
//将参数Key按字典顺序排序
String[] sortedKeys = params.keySet().toArray(new String[]{});
Arrays.sort(sortedKeys);
//生成规范化请求字符串
StringBuilder canonicalizedQueryString = new StringBuilder();
for (String key : sortedKeys) {
if ("sign".equalsIgnoreCase(key)) {
continue;
}
canonicalizedQueryString.append(key).append(params.get(key));
}
try {
String key = deviceSecret;
return encryptHMAC(signMethod, canonicalizedQueryString.toString(), key);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* HMACSHA1加密
*/
public static String encryptHMAC(String signMethod, String content, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(key.getBytes("utf-8"), signMethod);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
byte[] data = mac.doFinal(content.getBytes("utf-8"));
return bytesToHexString(data);
}
public static final String bytesToHexString(byte[] bArray) {