Android SDK:缺少repositories.cfg

时间:2018-10-07 20:11:52

标签: android android-sdk-tools android-sdk-manager

我正在尝试为Android编程设置环境,并且遇到此错误:

./sdkmanager --update
Warning: File /home/user/.android/repositories.cfg could not be loaded.        
[=======================================] 100% Computing updates...

我已经看到其他人在说(或者说是猜测)的线程,我应该创建该文件。但是我不是那种只凭猜测就更改系统而又不了解后果的人。我的意思是,在这种情况下,这样做并没有太大的错误,但是如果需要,sdkmanager为什么不创建该文件呢?我的意思是sdkmanager已经创建了包含许多文件的隐藏文件夹.android,这会让开发人员认为“创建文件存储库.cfg是要小心的事情,我们不要自己创建它并警告它”。用户”?

2 个答案:

答案 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.cfghere

其他答案建议在创建文件后添加以下行:

### 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,以查找键countsrc,并将找到的源添加到mSources数组中。

// Lines 71 - 120
public void loadUserSources()

此处(第86-92行)如果文件存在,则将其加载为Properties实例,然后寻找键count,如果未找到,则返回0,否则稍后返回在代码中,我们寻找src键将找到的源添加到数组中。

因此,当文件为空时是否具有count键并不重要,因为它默认为count=0

您会注意到,当该repositories.cfg文件没有退出时,它什么也不做,甚至不显示警告。

这意味着在那时,开发人员在使用此解决方案时甚至没有注意到他们可以使用repositories.cfg,因为没有显示任何内容。

我希望这能为您提供所需的信息。