【问题标题】:Android SDK: repositories.cfg is missingAndroid SDK:repositories.cfg 丢失
【发布时间】:2019-03-12 13:06:09
【问题描述】:

我正在尝试设置我的 android 编程环境,但遇到了这个错误:

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

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

【问题讨论】:

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


    【解决方案1】:

    我创建了空文本文件“repositories.cfg”,确实,错误消失了,但是没有下载任何内容,因为文件中没有存储库。所以这个“解决方案”实际上并没有解决任何问题。它只是隐藏了错误,但无法允许 sdk 工具下载。不要打扰它。我的建议是,下载完整的 Android Studio 并安装它。然后将您需要的部分拉出到他们自己的文件夹中,并指向系统变量中的那些部分。然后你可以卸载 Android Studio(如果你想要的只是工具,就像我一样)。

    【讨论】:

    • 如果您有时间,请阅读我的回答。您可以使用sdkmanager --list 查看已安装的内容以及可供下载的内容。在路径栏中选择您要下载的内容,然后您可以使用sdkmanager "path" 进行下载。例如:sdkmanager "platforms;android-23" "sources;android-23"
    【解决方案2】:

    在尝试解释之前,请注意消息显示的是警告而不是错误。 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 寻找键countsrc 并将找到的源添加到mSources 数组中。

    // Lines 71 - 120
    public void loadUserSources()
    

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-27
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2020-03-17
      • 1970-01-01
      相关资源
      最近更新 更多