Android关于buildToolVersion与CompileSdkVersion的区别

本文详细介绍了Android SDK中的CompileSdkVersion与BuildToolsVersion的概念及其作用,解释了如何使用不同版本的构建工具来编译不同版本的SDK,并对SDK各组成部分的功能进行了说明。

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

1、CompileSdkVersion是你SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。

2、buildeToolVersion是你构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX

这个版本号一般是API-LEVEL.0.0。 例如I/O2014大会上发布了API20对应的build-tool的版本就是20.0.0

在这之间可能有小版本,例如20.0.1等等。

3、在ecplise的project.properties中可以设置sdk.buildtools=17.0.0。也可以不设置,不设置的话就是指定最新版本。而在android studio中是必须在build.gradle中设置。例如

compileSdkVersion   22

 buildToolsVersion "22.0.1"

4、你可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的

例如:compileSdkVersion 18  

buildToolsVersion "22.0.1"这样也是OK的。

下面来解释一下sdk中各个文件的作用:

1、add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。

2、docs这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。

3、market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。

4、platforms是每个平台的SDK真正的文件,里面会根据APILevel划分的SDK版本,这里就以Android2.2来说,进入后有一个android-8的文件夹,android-8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data保存着一些系统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。

5、platform-tools保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。

6、samples是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主题开发Home则是androidm5时代的主题设计原理。

7、tools作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库,而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。

8、usb_driver顾名思义,保存着android平台google官方机型的驱动如nexusone、nexuss,同时也有一些老机型驱动的支持,比如说htcdream、htcmagic和motorola的droid。


<think>嗯,用户问的是如何在Android Studio Meerkat中编译compileSdkVersion为28的工程。首先,我需要确认几个关键点。首先,用户提到的Meerkat应该是指某个特定版本的Android Studio,但通常Android Studio的版本代号不是动物名字,可能是用户记错了?比如,我记得海豚(Dolphin)是2021.3.1,而最近的版本可能使用不同的代号。不过,可能用户指的是某个特定版本,或者可能是指某个内部代号? 不管怎样,核心问题是如何在较新版本的Android Studio中编译一个使用旧版compileSdkVersion(28)的项目。接下来,我需要考虑用户可能遇到的问题。首先,SDK版本28对应的Android 9(Pie),而新版的Android Studio可能默认使用更高的SDK版本。用户可能遇到的问题是Gradle插件版本不兼容,或者SDK 28没有安装,或者依赖库需要调整。 首先,步骤应该是检查并安装所需的SDK版本。用户需要确保SDK 28已经下载。在Android Studio中,可以通过SDK Manager来安装。然后,检查项目的build.gradle文件中的compileSdkVersion是否设置为28,以及targetSdkVersion是否正确。另外,Gradle插件版本可能需要调整,因为新版的Android Studio可能默认使用较新的Gradle插件,而旧项目可能需要旧版插件。例如,SDK 28通常对应Gradle插件版本在3.x到4.x之间。需要确认插件版本是否兼容,否则可能需要降级Gradle插件。 另外,依赖库可能有兼容性问题。一些新的库可能不再支持旧版SDK,或者旧库可能在新Gradle版本中无法正确解析。可能需要调整仓库设置,比如使用jcenter(),因为有些旧库可能还在jcenter而不是mavenCentral。 还有可能遇到的是Java版本的问题。旧项目可能使用Java 8,而新版的Android Studio默认可能使用更高版本,需要确保项目的Java兼容性设置正确,比如在build.gradle中设置sourceCompatibility和targetCompatibility为1.8。 此外,Gradle版本也是一个需要注意的点。旧版Gradle插件需要对应的Gradle版本。例如,Gradle插件3.x通常需要Gradle 4.x版本。用户可能需要修改gradle-wrapper.properties中的distributionUrl,指定正确的Gradle版本。 可能还需要处理其他配置,比如AndroidX的迁移。如果项目没有迁移到AndroidX,而新版Android Studio默认使用AndroidX,可能会导致冲突。用户需要检查gradle.properties中是否有android.useAndroidX=true,并根据项目情况调整。 总结一下,解决步骤大致是: 1. 安装SDK 28。 2. 调整build.gradle中的compileSdkVersion和相关配置。 3. 确保Gradle插件和Gradle版本兼容。 4. 处理依赖库和仓库源。 5. 检查Java版本和AndroidX配置。 6. 清理和重新构建项目。 同时,用户可能需要处理一些常见的错误,比如找不到SDK版本、Gradle同步失败、依赖解析错误等。需要提醒用户查看错误日志,逐步排查问题,可能还需要更新或替换过时的依赖库。另外,如果项目非常老旧,可能需要逐步升级到更新的SDK版本,但用户目前的需求是保持28,所以主要围绕兼容性调整。</think>以下是在Android Studio中编译`compileSdkVersion 28`工程的步骤指南: --- ### 一、环境准备 1. **安装SDK 28** - 打开Android Studio → **Tools → SDK Manager** - 在**SDK Platforms**标签页中,勾选**Android 9.0 (Pie)**(API 28) - 在**SDK Tools**标签页中,确保已安装对应版本的**Android SDK Build-Tools**(如28.0.3) - 点击**Apply**完成安装 2. **检查Gradle配置** - 旧版工程通常需要兼容旧Gradle插件版本(如`com.android.tools.build:gradle:3.x`) - 确认项目根目录的`build.gradle`中`dependencies`配置类似: ```groovy dependencies { classpath "com.android.tools.build:gradle:3.6.4" // 兼容SDK 28的推荐版本 } ``` --- ### 二、工程配置调整 1. **修改模块级`build.gradle`** 确保以下参数正确设置: ```groovy android { compileSdkVersion 28 defaultConfig { targetSdkVersion 28 // 其他配置... } } ``` 2. **调整Gradle版本**(可选) - 在`gradle-wrapper.properties`中指定兼容的Gradle版本(如5.6.4): ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip ``` --- ### 三、依赖库兼容性处理 1. **检查第三方依赖** - 若依赖库已弃用旧API(如`android.support`库),需替换为AndroidX版本 - 在`gradle.properties`中添加强制迁移标志(若未完成迁移): ```properties android.enableJetifier=true android.useAndroidX=true ``` 2. **仓库源配置** 旧版依赖可能需使用`jcenter()`仓库(但需注意JCenter已停止维护): ```groovy repositories { google() jcenter() // 或 mavenCentral() } ``` --- ### 四、编译调试 1. **同步Gradle** - 点击**Sync Project with Gradle Files**按钮 - 若报错,根据提示修复依赖冲突或语法问题 2. **清理工程** - 选择**Build → Clean Project** - 重新构建:**Build → Rebuild Project** 3. **Java版本适配** - 在模块级`build.gradle`中设置Java 8兼容: ```groovy android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } ``` --- ### 五、常见问题处理 - **错误:`Failed to find target with hash string 'android-28'`** → 重新安装SDK 28或检查`local.properties`中`sdk.dir`路径 - **错误:`Could not find com.android.tools.build:gradle:x.x.x`** → 在根`build.gradle`的`buildscript/repositories`中添加`google()` - **过时API警告** → 按Android Studio提示替换弃用方法(或暂时忽略) --- ### 六、替代方案 若仍无法编译,可尝试通过**命令行编译**: ```bash ./gradlew clean assembleDebug -x lint ``` --- 通过以上步骤,您应能成功编译`compileSdkVersion 28`的工程。若需长期维护旧项目,建议逐步升级SDK版本以提高兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值