- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 new command line tools for Android因为 Android 的旧 sdk-tools 存储库不再可用。所以我改变了我的 gitlab-ci 来加载 commandlintools
.但是当我尝试运行它时,我收到以下错误:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
我已经尝试过手动执行这些命令,但我得到了同样的错误。另外,如果我运行
sdkmanager --version
,同样的错误发生。
image: openjdk:9-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "6200805"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
#- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail
stages:
- build
- test
lintDebug:
stage: build
script:
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint
assembleDebug:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
debugTests:
stage: test
script:
- ./gradlew -Pci --console=plain :app:testDebug
最佳答案
而不是传递参数 --sdk_root
对于每个单独的命令执行,让我们深入了解真正的原因。
从 开始Android SDK 命令行工具 1.0.0 (6200805) ,与 相比Android SDK 26.1.1 (4333796) , tools
目录层次结构已更改。
以前它被放置在 ANDROID_HOME
内。 (已弃用,我们将在本段的其余部分使用术语 ANDROID_SDK_ROOT
),现在仍将其命名为 tools
(解压下载的 commandlinetools zip 文件后你会得到唯一的东西),但不同的是,你必须将它放在一个名为 cmdline-tools
的目录中靠自己。姓名cmdline-tools
来自它的包名,可以从列出包的命令sdkmanager --list
中得到,其输出包括 cmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools
.
包装 tools
cmdline-tools
内的目录目录将使它工作,并帮助您摆脱烦人的--sdk_root
争论。但是其他部分呢?
好吧,这就是你必须改变的一切。让我再解释一下。
sdkmanager
住在里面cmdline-tools/tools/bin
, 你最好设置在PATH
环境变量 cmdline-tools
不应设置为 ANDROID_SDK_ROOT
.因为以后更新Android SDK,或者安装更多包的时候,其他的包都会放在ANDROID_SDK_ROOT
下,但不在 cmdline-tools
下. ANDROID_SDK_ROOT
目录结构应如下所示,由多个子目录组成:build-tools
, cmdline-tools
, emulator
, licenses
, patcher
, platform-tools
, platforms
, system-images
.您可以轻松指出 build-tools
和 cmdline-tools
是 sibling ,都坐在父级内ANDROID_SDK_ROOT
. ANDROID_SDK_ROOT
(和以前一样)cmdline-tools
的目录中。 ,位于 ANDROID_SDK_ROOT
内$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
到环境变量 PATH
,以便系统知道在哪里可以找到 sdkmanager
6858069
以来,行为再次发生了变化(Android SDK 命令行工具 3.0):
cmdline-tools
. cmdline-tools
至tools
, 并将其放在 $ANDROID_SDK_ROOT/cmdline-tools
下,所以现在应该是这样的:$ANDROID_SDK_ROOT/cmdline-tools/tools
.在里面,你应该有:NOTICE.txt bin lib source.properties
.实际上根据official Command-Line Tools doc ,树形结构应该是android_sdk/cmdline-tools/version/bin/
,但我已经检查过,使用 version
或 tools
在这里没有区别。 PATH
,我建议你这样设置:PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
,因为稍后更新后,您将获得最新的sdkmanager
置于 $ANDROID_SDK_ROOT/cmdline-tools/latest/bin
下, 放在前面会使其优先级更高。 关于Android 命令行工具 sdkmanager 总是显示 : Warning: Could not create settings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440509/
我不明白 int 63823 为何比 double 1.0 占用更少的空间。在这个特定实例中,int 中是否没有存储更多信息? 最佳答案 I don't understand how an int 6
这可能不是一个直接的代码问题,但它是一个经常出现在 SO 上的问题,我发现阅读它非常有用。 App Store - Help answering “Missing Compliance” (using
我在我们的应用程序中使用 syncfusion 寻呼机和下拉列表请打开以下链接。 https://stackblitz.com/edit/angular-nv6myv?file=src%2Fapp%2
以便解释指针和引用in this question我写了这段代码。 MyClass& MyClass::MyInstance() { static MyClass & myLoca
在 C 和 C++ 中,assert 是一个非常 重量级例程,将错误写入 stdout 并终止程序。在我们的应用程序中,我们实现了一个更强大的 assert 替代品,并为其提供了自己的宏。已尽一切努力
我已经创建了一个 MVC webApi 项目,现在我想使用身份验证和授权。我想我已经实现了这种安全措施,但由于某种原因,有些事情变糟了,当我编写我的凭据并尝试调用一些 webApi 方法时,显示消息“
我发现自己使用一种奇怪的方式向我的函数添加回调函数,我想知道是否有更通用的方式向函数添加回调函数,最好的情况是我的所有函数都检查最后给定的作为函数的参数,如果是,则将其用作回调。 我以前是这样的: v
几乎从来没有我只想获取某个 Remote 的情况;我总是想要所有的 Remote 。我认为这将是一个足够常见的用例,git 会考虑它(与他们有 pull.rebase true 的方式相同)。 那么,
我正在尝试使用 inarray 但它总是返回 true?有任何想法吗? (所有 li 均已显示) $("#select-by-color-list li").hide(); // get the se
我正在尝试为我公司的开发环境设置过期网址。我们使用 lighttpd在此环境中提供上传的文件,我发现 these docs这似乎相当有希望。 问题是我似乎根本无法让它工作,而且我有点不知所措,试图找出
我无法让“文件夹”外部变量工作。我总是得到[:]。 我正在 Windows 下的 Grails 上进行开发(这就是为什么外部配置文件看起来像 file:C:\path\to/file)。 我在另一个项
这个问题是出于对 PL 如何工作的好奇,而不是其他任何事情。 (它实际上是在查看与 Haskell 不同的 SML 时想到的,因为前者使用按值调用 - 但我的问题是关于 Haskell。) Haske
我有一个高速缓存内存模块,我希望它是可字寻址的,但有字节的写使能信号。 always @ (posedge clk) begin //stuff... if(write) begin
我正在处理一些代码,其中一个对象“foo”正在创建另一个对象对象“bar”,并向其传递一个Callable。之后 foo 将返回bar,然后我希望 foo 变得无法访问(即:可用于垃圾收集)。 我最初
我已将我的程序与此方法相关联: public static void CreateFileAssociation(string extension, string key, string descri
所以我正在进行目录遍历,但我无法让 opendir 按照我想要的方式工作。它总是无法打开我发送的目录,它给出了一些未知的错误。我通常传入 argv[1],但我放弃了,只是开始硬编码路径。 char *
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 关闭 9 年前。 出于某种原因,我的(基本)程序总是打印我为 else 语句保留的
我不想冒为此提出破解的风险,因为它涉及 datetime 对象。基本上,我想按如下方式进行转换: 2010-04-21 06:37:53 -> 2010-04-21 06:40:00 2010-08-
我正在用 C 语言玩文件 I/O。我正在尝试使用 fgets 从一个文件中读取数据并将其输出到另一个文件。问题是它总是返回 NULL,因此没有任何内容被复制到输出文件中。这是我的代码: #includ
class MyClass { // empty class with no base class }; int main() { MyClass* myClass = new MyC
我是一名优秀的程序员,十分优秀!