我正在尝试为Android编程设置环境,并且遇到此错误:
./sdkmanager --update
Warning: File /home/user/.android/repositories.cfg could not be loaded.
[=======================================] 100% Computing updates...
我已经看到其他人在说(或者说是猜测)的线程,我应该创建该文件。但是我不是那种只凭猜测就更改系统而又不了解后果的人。我的意思是,在这种情况下,这样做并没有太大的错误,但是如果需要,sdkmanager为什么不创建该文件呢?我的意思是sdkmanager已经创建了包含许多文件的隐藏文件夹.android
,这会让开发人员认为“创建文件存储库.cfg是要小心的事情,我们不要自己创建它并警告它”。用户”?
答案 0 :(得分:0)
我创建了一个空文本文件“ repositories.cfg”,的确如此,错误消失了,但是没有下载任何文件,因为文件中没有存储库。因此,“解决方案”实际上并不能解决任何问题。它只是隐藏了错误,但未能允许sdk工具下载。不要理会它。我的建议是,下载完整的Android Studio并安装。然后将所需的零件拉到它们自己的文件夹中,并指向系统变量中的零件。然后,您可以卸载Android Studio(如果您只需要像我这样的工具)。
答案 1 :(得分:0)
在尝试解释之前,请注意消息显示的是警告而非错误。
Warning: File repositories.cfg could not be loaded.
这仅仅是一个警告,是因为该文件旨在供用户(开发人员)添加sdk存储库源列表。
请注意,该文件是一个属性文件,每行包含一个属性,格式为:KEY=VALUE
因此 sdkmanager 拥有自己的sdk存储库源列表,并允许您将其作为用户级别列表添加到此文件中。
答案:
在某些线程中,我看到该问题的答案建议仅创建repositories.cfg
文件:
mkdir -p ~/.android && touch ~/.android/repositories.cfg
像here。
其他答案建议在创建文件后添加以下行:
### User Sources for Android SDK Manager
count=0
就像here,这两种解决方案都可以工作。
原因: 为了更好地了解正在发生的事情,我们需要查看处理此部分的源文件。
这是在引入此行为的提交时指向RepoSources.java的链接。 文件和行为可能会随着时间而改变,但这将有助于了解发生了什么。
// Line 35-39
String KEY_COUNT = "count";
String KEY_SRC = "src";
String SRC_FILENAME = "repositories.cfg";
ArrayList<RepoSource> mSources = new ArrayList<RepoSource>();
我们将处理文件repositories.cfg
,以查找键count
和src
,并将找到的源添加到mSources
数组中。
// Lines 71 - 120
public void loadUserSources()
此处(第86-92行)如果文件存在,则将其加载为Properties实例,然后寻找键count
,如果未找到,则返回0,否则稍后返回在代码中,我们寻找src
键将找到的源添加到数组中。
因此,当文件为空时是否具有count
键并不重要,因为它默认为count=0
。
您会注意到,当该repositories.cfg
文件没有退出时,它什么也不做,甚至不显示警告。
这意味着在那时,开发人员在使用此解决方案时甚至没有注意到他们可以使用repositories.cfg
,因为没有显示任何内容。
我希望这能为您提供所需的信息。