在尝试解释之前,请注意消息显示的是警告而不是错误。
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,因为没有显示任何内容。
我希望这能为您提供所需的信息。