自从Android Studio升级到3.0以上版本,新建项目的默认compileSdkVersion已经不低于26,如Android Studio 3.1.3新建项目后项目默认的compileSdkVersion为26,而Android Studio 3.2.1新建项目后项目默认的compileSdkVersion为27,但是有时候并不需要设置到这么高的版本,这里介绍一下如何在Android Studio 3.0以上降低SDK编译版本。
一、设置compileSdkVersion为23:
首先在Android Studio中新建一个项目,这里我使用的是Android Studio 3.2.1,新建完后在可以看到app gradle的配置如下:
首先,修改compileSdkVersion为23,修改targetSdkVersion低于23,修改appcompat-v7为对应的23版本,如appcompat-v7:23.4.0,如下图红圈所示:
然后在AndroidManifest.xml中删除android:roundIcon="@mipmap/ic_launcher_round"选项,android:roundIcon是API 26引入的,在API 23上是不存在的,需要删掉该选项。
接着将Android Studio切换到project视图,删除drawable-v24和mipmap-anydpi-v26,由名称也可以知道它们不适用于API 23版本。
最后再Sync一下就可以了。
二、设置compileSdkVersion为19:
首先通过Android Studio新建项目后,在app gradle中修改compileSdkVersion为19,修改targetSdkVersion低于19,同时在dependencies中删除掉appcompat-v7的引用,appcompat-v7是API 21后才引入,在API 19上是不存在的。
然后在MainActivity.java中修改MainActivity继承至Activity而不是默认的AppCompatActivity,与此同时,在style.xml中修改AppTheme为对应的API 19版本具有的样式,如android:Theme.NoTitleBar。之所以要修改这两块地方是因为AppCompatActivity和默认的Theme.AppCompat.Light.DarkActionBar样式都是appcompat-v7引入的。
接着在AndroidManifest.xml中删除android:roundIcon="@mipmap/ic_launcher_round"选项;将Android Studio切换到project视图,删除drawable-v24和mipmap-anydpi-v26,这些操作与设置compileSdkVersion为23的操作是一样的,不过不同的是,还需要删除drawable目录下的ic_launcher_background.xml:
此时Sync一下,到了这一步会发现会报两个错误:
这是因为android:attr/elevation和android:attr/translationZ这两个属性是Android 5.0,也就是API 21后才引入的,而这两个属性在constraint-layout中有使用到。
为了解决这个问题,可以在app gradle中删除掉constraint-layout的引用。
然后打开activity_main.xml,可以发现布局文件的根布局是android.support.constraint.ConstraintLayout。
使用LinearLayout取代ConstraintLayout,删除默认的TextView中app:属性,修改后activity_main.xml如下:
最后Sync就可以了。