今天下午的時候有人問到,AS 哪里能配置 build.gradle
的模板,從而達到每次新建 module 時默認的 compileSdkVersion
用指定的值而不是取最新 SDK 的 api-string。
解決方案
先看了 Preferences,並沒相關的 template 能修改 build.gradle
,再 Google 了一會,只有 該帖子 提及到 build.gradle
的模板文件的位置。
按照給出的路徑 <android-studio>/plugins/android/lib/templates/gradle-projects/NewAndroidProject/root/build.gradle.ftl
(Mac 上 <android-studio> 即為 /Applications/Android\ Studio.app/Contents)找到模板文件。
直接找到 compileSdkVersion
一行
compileSdkVersion <#if buildApiString?matches("^\\d+$")>${buildApiString}<#else>'${buildApiString}'</#if>
改為
compileSdkVersion 24
這樣就算是完成了。
額外的小問題
我們知道,AS 新建 Phone module 時都會添加 support appcompat 包。由於 appcompat 包的大版本如果跟 compileSdkVersion 不一樣也會出現 error 提示,所以也需要修改 appcompat 的默認版本。
但 appcompat 對應的模板文件並不在 build.gradle.ftl
中,而是在 <android-studio>/plugins/android/lib/templates/gradle-projects/NewAndroidProject/recipe.xml.ftl
中。
對應的代碼為
<#ifbackwardsCompatibility!true>
<dependencymavenUrl="com.android.support:appcompat-v7:${buildApi}.+"/> </#if>
直接修改為
<dependencymavenUrl="com.android.support:appcompat-v7:24.+"/>
大功告成~
吐槽
一般也不會有這種奇葩需求,要是遇到了……好吧,暫時只有這解決方案。需要注意的就是 AS 更新的時候有可能會發生沖突並且用新的模板文件覆蓋修改過后的文件,所以又得重新處理一次,略麻煩。
【轉載】https://www.tuicool.com/articles/aa6VRjy