命令行配置Android开发环境

概述

本文总共包含四部分,环境搭建,App编译打包,所遇问题及解决,和部分原理介绍

环境搭建

1 cmdtools官网下载

按需下载https://developer.android.com/studio页面最下方下载项command line tools only,我下载的Windows平台的压缩包。
为方便使用将解压后的bin目录放到环境变量path中
注意1:我下载的commandlinetools-win-6858069_latest.zip,不支持jdk11,需下载jdk8
注意2:解压后需要将文件夹cmdline-tools下的所有内容放到一个新建文件夹latest下,再将latest放到cmdline-tools下。

2 cmdtools下载其余组件

2.1 sdkmanager --list列出已经安装的包,和可安装的包,Installed packages下面是已经安装的包列表,而Available Packages是未安装的包列表。

2.2 sdkmanager --install 包1 [包2] [包3] …//包之间用空格分隔,这里分号不是分隔符
计划使用Android sdk 28,所以我们需要包
platform-tools:app调试需要用到的工具
build-tools;28.0.3:编译工具
platforms;android-28:系统jar包
emulator:虚拟机,类似常用的VMware
system-images;android-28;google_apis_playstore;x86_64:系统镜像

3 avdmanager创建虚拟机

建议先看4,再做3。当然也可以体验一下我的痛苦
1 使用命令
命令:avdmanager create avd -n 虚拟机名称 -k 系统镜像 -c sd卡大小或者要用的sd卡路径。
例如:avdmanager create avd -n avd1 -k system-images;android-28;google_apis_playstore;x86_64 -c 1000M

2 安装位置
虚拟机默认会创建在c:/users/你的系统用户名/.android/avd中,linux ~/.android/avd。
官网上说可使用-p参数指定虚拟机安装位置,我不知道为什么创建失败并输出 nulling file。
设置相关环境变量更改安装位置
ANDROID_SDK_HOME/.android/avd
更多环境变量查看网址https://developer.android.com/studio/command-line/variables

4 adb shell测试

1 adb shell 报错
error: device unauthorized.
This adb server’s $ADB_VENDOR_KEYS is not set
Try ‘adb kill-server’ if that seems wrong.
Otherwise check for a confirmation dialog on your device.
尝试了网上各种方法,后来才发现虚拟机不会弹出确认对话框这个异常
最后找到了这个解决方案https://stackoverflow.com/questions/54948726/how-to-accept-debugging-dialog-for-android-emulator-via-command-line中的最后一个回答

2解决方法
a avdmanager delete avd -n avd1删除刚装的虚拟机,如果启动过记得将ANDROID_SDK_HOME/.android下的文件除了文件夹avd其余删光
b 拷贝系统用户目录/.android/下的adbkey和adbkey.pub到ANDROID_SDK_HOME/.android下
c 再次创建虚拟机
d adb shell 测试成功

app编译打包

参考https://blog.csdn.net/AlpinistWang/article/details/105844012
其中使用aapt进行资源编译
新版使用aapt2编译资源,可参考https://blog.csdn.net/qq_43278826/article/details/86543932

原理简介

adb(Android debug bridge)

1组件:client 、server、 adb daemon

client:接受用户输入的命令并发送给server
server:接受来自client的命令,发给adb daemon。接受运行结果,发给client。将client 和 adb daemon (各个设备)解耦
adb daemon:实际执行命令,运行在虚拟机中

2虚拟机的识别

使用端口号识别虚拟机(5555~5585中的奇数代表adb,偶数代表console。console可以通过emulator -shell启动)同时最多运行16个虚拟机

3adb安全验证原理

和ssh免密登录的原理雷同。
简略版如下(虚拟机已有pc上生成的公钥)
1pc 发送连接请求
2adbd通过/dev/random 生成随机数使用pc的公钥加密发给pc
3pc通过私钥解密,将解密结果回传
4adbd比对是否相同,是则连接成功,否则失败

dex文件格式

参考https://blog.csdn.net/taylorpotter/article/details/89855346

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值