【问题标题】:Hiding android.R resources in Android Studio 1.3+ autocomplete在 Android Studio 1.3+ 自动完成中隐藏 android.R 资源
【发布时间】:2015-08-12 08:06:21
【问题描述】:

是否可以将 Android Studio 配置为仅显示 project 文件夹中的 @drawable 资源?

我正在从事的项目是一个行业项目,很少需要我使用R 资源。

【问题讨论】:

标签: android android-studio autocomplete


【解决方案1】:

查看 AS 的“代码完成”部分,我没有找到任何允许隐藏 SDK 资源并改为使用 app/lib 资源的设置:

StefMa 提到的最近实现的功能可能对您没有帮助,因为它以另一种方式工作:它允许库开发人员隐藏 aar 包中的一些资源并仅显示选定的资源部分,即 公共资源。 Chris Banes 对此功能做了很好的介绍 here

【讨论】:

    【解决方案2】:

    我认为您实际上无法做到这一点,只有库开发人员可以选择隐藏其aar 分发中的资源。

    因此,您需要依赖库开发人员来为您完成这项工作。幸运的是,最新的 Android 支持库应该已经为您完成了这项工作。

    库开发者可以在他们的库中隐藏资源的方式是:

    1. 在与res 相同的级别上创建一个名为res-public(名称不重要)的新文件夹,其中包含一个名为values 的子文件夹:
    src
        main
             java
             res
             res-public
                 values
    
    1. 在该文件夹中创建一个名为 public.xml 的新文件,您可以在其中定义要公开的所有资源,其 name 后跟 type
    <resources>
        <public type="drawable" name="btn_login"/>
    </resources>
    
    1. 然后确保在您的build.gradle 文件中引用这个新文件夹:
    android {
        compileSdkVersion 21
        buildToolsVersion "21.1.2"
    
        sourceSets {
            main.res.srcDirs 'res', 'res-public'
        }
    
        defaultConfig {
           ...
        }
    }
    
    1. 确保您使用的 Gradle 插件至少为 1.3 版
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.3.0'
        }
    }
    
    1. 将您的库编译成aar 文件并将其包含到您的项目中。现在只有btn_login 资源可见。
      • 检查 here 如何包含本地 aar 文件,这样您就可以在不推送到 Maven 存储库的情况下进行测试。

    【讨论】:

    • 上述解决方案对我不起作用。尽管如此,我仍然可以访问主应用程序模块中的私有资源
    • 确实,这只是将资源排除在自动完成之外。但是,如果您尝试使用“隐藏”资源,Android Studio 应该会给您一个警告。请注意,命名空间很快就会进入资源,这应该会启用真正的私有资源:youtu.be/GlwvVJNWlWg?t=1448
    • 但我要在自动完成中获取私有资源。看一下这个。 stackoverflow.com/questions/53430517/…
    • 你是如何让它发挥作用的?它对我不起作用(Gradle 插件:3.3.1)
    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2012-03-21
    相关资源
    最近更新 更多