我正在使用android studio 1.0.2,其中有低于build.gradle的版本。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

如果我不在AndroidManifest.xml中编写,android studio会给我一个错误。
<uses-sdk tools:overrideLibrary="com.google.android.gms" />

在最新版本的android studio之前。我得写这个
<uses-sdk tools:node="replace" />

这到底是什么。

最佳答案

根据http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger
工具:重写标记
一个只能与使用sdk声明一起使用的特殊标记将重写导入最低sdk版本比该应用程序的最低sdk版本更新的库。
没有这样一个标记,明显的合并将失败。标记将允许用户选择哪些库可以导入,而忽略最低的sdk版本。
根据http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_ve
android gradle插件的0.11版本默认情况下启用了一个新的清单合并,它允许我们做一些漂亮的事情(在这里阅读更多内容)。在上面的清单中,我包含了一个usesdk节点,它只指定了一个tools:node属性。此特定配置告诉清单处理器将低优先级清单(如库清单)中的uses sdk节点的任何属性替换为uses sdk节点中的属性和tools:node=“replace”属性。由于gradle还将build.gradle中的minsdkversion和targetsdkversion插入到这个uses sdk节点中,所以我们真正需要添加的就是这些。
现在,您应该能够在minsdkversion支持的任何设备上运行应用程序,同时利用支持库中整洁的新视图和实用程序!

09-26 11:00