Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缺少Android SDK:repositories.cfg_Android_Android Sdk Tools_Android Sdk Manager - Fatal编程技术网

缺少Android SDK:repositories.cfg

缺少Android SDK:repositories.cfg,android,android-sdk-tools,android-sdk-manager,Android,Android Sdk Tools,Android Sdk Manager,我正在尝试为android编程设置环境,但遇到以下错误: ./sdkmanager --update Warning: File /home/user/.android/repositories.cfg could not be loaded. [=======================================] 100% Computing updates... 我见过其他线程,人们说(或者更确切地说是猜测),我应该创建那个文件。但我不是那种只凭猜测改变系统而不

我正在尝试为android编程设置环境,但遇到以下错误:

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

我见过其他线程,人们说(或者更确切地说是猜测),我应该创建那个文件。但我不是那种只凭猜测改变系统而不了解后果的人。我的意思是,在这种情况下,这样做并不觉得太错误,但是为什么sdkmanager在需要时不创建该文件呢?我的意思是sdkmanager已经创建了一个隐藏的文件夹
.android
,里面有这么多文件,开发人员怎么会认为“创建文件仓库.cfg是一件需要小心的事情,我们不要自己创建并警告用户”?

我创建了一个空文本文件“repositories.cfg”,这是真的,错误消失了,但是没有下载任何内容,因为文件中没有存储库。所以“解决方案”并不能解决任何问题。它只是隐藏错误,但不允许下载sdk工具。别费心了。我的建议是,下载完整的Android Studio并安装它。然后把你需要的部件放到它们自己的文件夹中,并指向系统变量中的部件。然后你可以卸载Android Studio(如果你想要的只是像我一样的工具)。

在尝试解释之前,请注意消息显示的是警告而不是错误。
警告:无法加载File repositories.cfg。

这只是一个警告,因为此文件旨在供用户(开发人员)添加sdk存储库源的列表

注意此文件是一个属性文件,每行包含一个属性,格式为:
KEY=VALUE

因此,sdkmanager有自己的sdk存储库源列表,允许您将自己的源添加到此文件中,作为用户级的列表

答案:

在一些线程中,我看到这个问题的答案建议只创建
repositories.cfg
文件:

mkdir-p~/.android&&touch~/.android/repositories.cfg
喜欢

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

### User Sources for Android SDK Manager
count=0
就像,两种解决方案都有效

原因: 为了更好地理解发生了什么,我们需要查看处理此部分的源文件

这里有一个链接,指向在提交时引入此行为的。 文件和行为可能会随着时间的推移而改变,但这将有助于了解发生了什么

// Line 35-39
String KEY_COUNT = "count";
String KEY_SRC = "src";
String SRC_FILENAME = "repositories.cfg";
ArrayList<RepoSource> mSources = new ArrayList<RepoSource>();
在这里(第86-92行),如果文件存在,我们将其作为属性实例加载,然后查找键
count
,如果未找到,则返回0,否则稍后在代码中查找
src
键以将找到的源添加到数组中

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

您可以注意到,当这个
repositories.cfg
文件不退出时,它什么也不做,甚至不显示警告

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


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

如果您有时间,请阅读我的答案。您可以使用
sdkmanager--list
查看已安装的内容以及可供下载的内容。从路径列中选择要下载的内容,然后可以使用
sdkmanager“path”
进行下载。例如:
sdkmanager“平台;android-23”“源代码;android-23”
// Lines 71 - 120
public void loadUserSources()