Open alwaystest opened 7 years ago
由于sdkmanager
是最新提供的 SDK管理工具,所以研究了一下。
感觉上使用sdkmanager
更好用一些。
因为上文写到android
工具后面的--filter
参数我没有找到是怎么确定的,更新的话,--filter
的参数不好找。而sdkmanager
的用法就清晰多了。
使用sdkmanager --help
命令就可以很方便的查看用法。
根据用户指南(SDK 的install
和update
方法都可以参考这里):
The packages argument is an SDK-style path as shown with the --list command, wrapped in quotes (for example, "build-tools;25.0.0" or "platforms;android-25"). You can pass multiple package paths, separated with a space, but they must each be wrapped in their own set of quotes.
这下子就知道命令行如何安装和更新SDK了。
sdkmanager
这个工具是Android SDK Tools 25.2.3
以上才提供的,使用别人提供的Docker镜像的时候注意看一下。
比如我使用的是snowdream(Github)提供的镜像,Dockerfile里面是这么写的:
# Download and untar Android SDK
ENV ANDROID_SDK_URL http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
RUN curl -sSL "${ANDROID_SDK_URL}" | tar --no-same-owner -xz -C ${SDK_HOME}
这个是使用sdk 24.4.1
的基础包来下载SDK的,这个包没有sdkmanager
。
GitLab CI与Docker,License更新问题
标签(空格分隔): CI 持续集成 Android License
之前一直正常使用的CI环境突然报错,提示如下:
很奇怪,之前项目中也引用了Support包,一直没有报错,怎么突然就报错了。
检查之后发现,项目新加的一个第三方依赖依赖了
SupportXXX:25.0.0
,而项目中之前依赖的是SupportXXX:24.X.X
,而构建Docker镜像的时候Support25
包还没有出来,容器中使用的是24的版本,根据这里说Gradle会尝试下载依赖,但是License是Gradle没有解决掉的。所以这里就报错说没有接受SDK的License。Android官方没有对命令行使用SDK管理工具进行详细的说明,查到有一个网页文档是过期了的,自动跳转到了最新的文档中,只说明了使用GUI更新SDK。
StackOverflow上说更新Support库的命令是
很奇怪,没有版本,不像更新SDK的命令
android-24
这样子的。我猜想是默认extra-android-m2repository:latest
这样子的。把之前的Docker image删掉,重新生成一次镜像即可更新。此处注意Docker生成镜像的时候有缓存机制,要确保不要使用缓存来build镜像。
还有一个值得注意的地方是
还没有看
sdkmanager
和android
命令有什么区别。