Android Studio 3.x.x降低compileSdkVersion的SDK版本

本文详细介绍如何在AndroidStudio3.0以上版本中,将项目的compileSdkVersion从高版本降至23或19,包括修改配置文件、删除不兼容项及调整依赖库等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        自从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就可以了。

     

     

### 配置和使用 `androidx.fragment` 库的方法 要在 Android Studio 中正确配置并使用 `androidx.fragment` 库,以下是详细的说明: #### 1. 修改项目的 Gradle 文件 为了支持 `androidx.fragment` 的功能,需要在项目的模块级 `build.gradle` 文件中添加依赖项。具体操作如下: - 打开模块级别的 `build.gradle` 文件(通常是 `app/build.gradle`),并在其中添加以下依赖项: ```gradle dependencies { implementation 'androidx.fragment:fragment-ktx:1.6.0' // 如果使用 Kotlin 推荐此版本[^2] implementation 'androidx.fragment:fragment:1.6.0' // 如果仅需 Java 支持则推荐此版本[^3] } ``` - 同时,在同一文件中的顶部确认已启用 Jetpack (AndroidX),通过设置以下属性来实现: ```gradle android { ... compileSdkVersion 33 // 或更高版本[^4] defaultConfig { ... minSdkVersion 21 // 根据需求调整最低 SDK 版本[^5] targetSdkVersion 33 // 建议与编译 SDK 对齐[^6] } // 确保启用了 AndroidX 和 ViewBinding/数据绑定等功能 buildFeatures { viewBinding true // 可选,如果需要视图绑定[^7] } } // 在根目录下的 gradle.properties 文件中确保有以下内容 android.useAndroidX=true android.enableJetifier=true ``` 以上配置会自动迁移旧版的支持库到 AndroidX。 --- #### 2. 使用 Fragment 类型替换原有类 当迁移到 `androidx.fragment.app.Fragment` 时,原有的 `android.app.Fragment` 将不再适用。因此需要修改代码以适配新的 API。例如: 原代码可能如下所示: ```java import android.app.Fragment; Fragment myFragment = new MyOldStyleFragment(); getFragmentManager().beginTransaction() .replace(R.id.container, myFragment) .commit(); ``` 更新后的代码应改为: ```java import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; Fragment myFragment = new MyNewStyleFragment(); // 继承自 androidx.fragment.app.Fragment SupportFragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.demo_fg, myFragment, "tag"); transaction.commit(); ``` 注意:这里的关键变化在于使用了 `Support Library` 提供的 `SupportFragmentManager` 而不是原来的 `FragmentManager`[^8]。 --- #### 3. 迁移工具的应用 对于已有项目希望快速完成从传统 Support Library 到 AndroidX 的转换,可以利用 Android Studio 自带的功能——Refactor to AndroidX 工具: - **菜单路径**: Refactor -> Migrate to AndroidX... - 此过程将扫描整个工程并将所有相关组件替换成对应的 AndroidX 实现[^9]。 --- #### 4. 测试新配置的有效性 完成上述更改之后,请务必运行测试用例验证应用行为是否正常。特别关注以下几个方面: - 动态加载 Fragments 是否成功; - 生命周期回调函数执行顺序是否有异常; - UI 渲染效果保持一致。 --- ### 示例代码片段 下面是一个完整的示例展示如何创建一个简单的 Fragment 并将其嵌入 Activity 中: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null){ Fragment myFragment = new ExampleFragment(); getSupportFragmentManager() // 获取 FragmentManager 实例 .beginTransaction() // 开始事务处理 .add(R.id.fragment_container_view_tag, myFragment) // 添加目标容器 ID 和对应 Fragment .commit(); // 完成提交 } } } ``` 同时定义好布局 XML 文件结构以便放置该控件实例化位置。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值