我正在使用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支持的任何设备上运行应用程序,同时利用支持库中整洁的新视图和实用程序!