简介Android 8.0.0API 26SDK platforms 离线安装包适合需要编译、调试或测试 API 26 应用的移动开发者。该版本对应 Oreo 的重大更新包含通知频道、后台执行限制、自适应图标等特性下载后可快速补齐 Android 8.0 开发环境便于验证应用在新版本上的兼容表现。压缩包共8788个文件以png图标资源、xml配置与布局、ttf字体、html文档等为主并含jar构建工具、properties配置等整体约56.13MB。文件结构完整可直接供 Android SDK Manager 或离线 SDK 环境使用。已有1496人学习下载适用于从 API 26 入门到存量项目适配升级的各类场景。借助该 SDK 平台还可以使用模拟器镜像、构建工具和测试库在多种设备配置上运行应用并结合描述中的新特性做针对性验证减少因系统行为变化带来的兼容性问题。 接手一个几年前的Android项目最常遇见的第一个坑就是SDK Platform缺包。编译时Gradle直接甩一句“Failed to find target with hash string android-26”整个工程红成一片。所谓Android 8.0.0 (API 26) SDK Platform说白了就是编译Android 8.0应用时必不可少的平台库里面装着android.jar和系统资源文件。这篇就把SDK platforms下载这件事从原理到实操完整捋一遍适合正在拉老项目、维护旧代码或者刚进公司接手历史工程的开发者参考。1. 为什么一个老版本平台包还值得专门下载1.1 先搞清楚SDK Platform到底是什么很多新手容易把SDK Platform和模拟器镜像、Build Tools混在一起其实它们是三样完全不同的东西。SDK Platform是编译阶段用的“SDK本体”装到本地之后出现在SDK目录的platforms/android-26文件夹里核心内容就是android.jar、resource目录、source.properties这些。没有这个包你的工程在编译期就找不到Android系统类和API连R文件都生成不了。API 26对应的正是Android 8.0.0代号Oreo。你要是问“Android 8.0都多老的系统了还装它干嘛”可以去看一看自己公司代码仓库里那些活了五六年的老项目build.gradle里写的compileSdkVersion 26一抓一大把。这类工程不是不想升是根本不敢升第三方SDK版本锁死、业务逻辑依赖旧行为、AGP版本又不支持新API几重原因叠在一起老平台包就成了维护老工程的刚需。1.2 什么时候你会被“android-26”卡住结合我自己踩过的坑常见触发场景有这么几类第一从Git上拉下一个老仓库本机是全新的Android StudioSDK目录里只有最新几个平台包Gradle同步时立刻报错。第二团队里有人升级了SDK把旧的platforms目录清理了导致别的同事本地环境缺少android-26。第三某些老版本的Android Gradle Plugin会对compileSdkVersion做严格校验你改成31、32反而编译不过去必须老老实实装回26。还有一个容易忽略的场景是CI/CD环境。打包机的SDK镜像通常只预装一两个平台包如果你在Jenkins、GitLab Runner上跑老项目构建一样会卡在缺platforms;android-26这个环节。这时候命令行安装方案就特别重要后面我会专门讲。提示API Level和系统版本是一一对应的API 26 Android 8.0API 27 Android 8.1。下载时一定要看清是Platform包而不是system-images或build-tools三者用途完全不同。2. 下载前先做三件事定位、盘点、清坑2.1 找到你的SDK目录记下路径动手装包之前先把SDK目录位置搞清楚不然装了也白装。Android Studio里最直接的路径是Settings → Languages Frameworks → Android SDK第一行Android SDK location就是目录。默认路径在macOS上是~/Library/Android/sdk在Windows上是C:\Users\你的用户名\AppData\Local\Android\SdkLinux上一般是~/Android/Sdk。如果项目里有local.properties文件里面sdk.dir这一行也会直接告诉你SDK被指定到了哪里。这个细节非常关键因为很多人电脑上不止一套SDK环境变量ANDROID_HOME指一套Android Studio默认路径又是一套命令行sdkmanager用的又是另一套。到时候明明装好了Gradle却报找不到多半就是路径指向了不同的SDK根目录。2.2 确认Android Studio版本与SDK Manager入口不同版本的Android StudioSDK Manager的入口和界面表现略有差异。老版本在Welcome界面右下角有一个Configure → SDK Manager进入主界面后是File → Settings → Appearance Behavior → System Settings → Android SDK。比较新的版本比如Hedgehog之后的版本路径变成了Settings → Languages Frameworks → Android SDK。界面虽然不一样里面SDK Platforms这个标签页的功能是相通的。还要注意新版Android Studio安装时默认带了cmdline-tools也就是命令行工具包里面才有sdkmanager。老版本则可能有一个单独的tools目录sdkmanager放在tools/bin下面。这个差异会影响你后续用命令行安装时去哪个路径执行命令建议现在就去确认一下SDK根目录下到底是cmdline-tools还是tools。2.3 清理licenses和下载源配置避免装完不能用如果你以前从没在这台机器上接受过Android SDK许可协议那安装完平台包之后还会遇到License Check失败的问题。可以通过命令行一次性接受所有协议后面我在命令行安装章节会给出完整命令。另外SDK Manager左下角还有一个SDK Update Sites选项里面配置了下载源地址默认是Google官方的dl.google.com。如果你放在内网环境或者下载速度特别慢可以考虑配国内可访问的镜像源但前提是镜像源必须完整支持你要下载的platforms;android-26这个路径。这一步属于“清扫战场”别小看它。我见过有人GUI装包界面等了半小时结果卡在License确认弹窗上关掉窗口之后Gradle依然报错。先把源和协议问题理清楚后面下载才不会返工。3. 三种下载方式实测按推荐顺序排列3.1 方式一Android Studio图形化界面安装最稳图形化安装是最适合新手的方案过程直观不容易出错。打开Settings → Languages Frameworks → Android SDK切到SDK Platforms标签页在下拉列表里找到Android 8.0 (Oreo)这一行对应API Level就是26。勾选之后右下角有个Show Package Details选项建议勾上这样能看到这个平台包下的具体组件。勾选完成后点ApplyAndroid Studio会弹出组件下载窗口左下角有实时进度条。下载完成后它会自动执行解压和安装不需要你手动干预。完成后点OK回到工程里重新Sync一下报错就会消失。如果你用的Android Studio版本较新SDK Platforms列表里默认只显示已安装的包需要点一下列表右侧的过滤按钮或者直接搜索“26”才能找到Android 8.0。注意GUI安装过程中不要关闭Android Studio特别是进度条显示正在下载时。中途取消会导致platforms/android-26目录不完整轻则重下重则SDK目录损坏后面还得手动清理。3.2 方式二sdkmanager命令行安装适合批量/CI命令行方式是我个人最推荐的尤其在服务器、CI环境或者想精确控制版本时比GUI高效得多。首先定位sdkmanager脚本新版Android Studio安装后一般在SDK根目录下的cmdline-tools/latest/bin里。Windows上运行sdkmanager.batmacOS和Linux上运行sdkmanager。先执行一下已安装列表确认命令本身可用sdkmanager --list_installed如果输出一堆包名说明sdkmanager没问题。接下来直接安装API 26平台包sdkmanager platforms;android-26如果命令提示找不到SDK根目录可能是因为没有设置ANDROID_HOME环境变量这时候用--sdk_root参数显式指定sdkmanager --sdk_root/path/to/your/sdk platforms;android-26初次使用sdkmanager经常会被License协议卡住可以一次性接受所有未接受的协议yes | sdkmanager --licenses这个命令会自动把所有许可协议都同意掉非常省事。装完之后可以用同一命令的list_installed验证platforms;android-26是否出现在列表里。3.3 方式三离线包手动安装适合无网/内网环境离线安装适合那些网络受限的办公环境。原理很简单从Android官方仓库获取对应API Level的platform包解压后手动放到SDK的platforms目录下。具体来说找到platform-26对应的压缩文件下载后解压。解压后你会得到一个文件夹里面的内容应该包含android.jar、data目录、source.properties。把这个文件夹重命名为android-26整个放到SDK根目录下的platforms文件夹里。最终目录结构应该是SDK/ platforms/ android-26/ android.jar data/ source.properties放好之后打开source.properties文件看一眼里面Platform.Version和AndroidVersion.ApiLevel应该都是26。如果这两个值不对说明下载的包版本不匹配。离线包方式有个明显的好处一次下载多台机器复制分发适合团队内统一环境。但要注意Android SDK的文件结构版本差异很大如果你原本的platforms目录里全是新版结构直接塞一个老包进去Android Studio也能识别但偶尔会提示SDK组件不完整这时候用sdkmanager重新安装一遍通常能修好。4. 装完别急着跑验证和联动才是关键4.1 检查安装目录确认android.jar真的到位安装完成后第一件事是去platforms/android-26目录下看一眼有没有android.jar。android.jar是编译时引用系统API的核心文件如果它不存在或者体积不对编译期一定出问题。在终端里执行ls -l $ANDROID_HOME/platforms/android-26/一个正常的平台包目录里应该至少有android.jar、data、source.properties。android.jar体积通常在15MB到20MB左右如果只有几百KB八成是下载不完整建议删掉整个android-26目录重新装。这个检查步骤我在CI环境里踩过不少次坑有时候Gradle报错信息不够直观排查到最后才发现是SDK文件损坏。4.2 让Gradle认账工程配置与local.properties平台包装好了还要确认工程确实在用它。老项目的build.gradle里通常这样配置android { compileSdkVersion 26 buildToolsVersion 26.0.2 defaultConfig { targetSdkVersion 26 } }这里compileSdkVersion指定了编译用的API Level必须和已安装的platforms;android-26匹配。如果你用的是新版AGPAndroid Gradle PluginbuildToolsVersion可以省略让Gradle自动选择。但老项目里这个配置一般还留着如果SDK目录里没有对应的Build Tools版本又会多一个报错。另外要检查项目根目录下local.properties是否存在以及sdk.dir是否指向了你刚装好API 26的那套SDK。很多“装好了还是报错”的案例最后都指向local.properties里的路径是旧的、不存在的SDK目录。改完配置后回到Android Studio执行一次Sync Project with Gradle Files或者直接命令行运行./gradlew help看能不能正常解析。4.3 配套环境Build Tools和模拟器镜像一起处理如果你不只是命令行编译还打算在模拟器上跑这个老项目那API 26的system-images也得安排上。注意system-images是模拟器运行用的系统镜像不带它你没法创建Android 8.0的模拟器。命令行安装的命令是sdkmanager system-images;android-26;google_apis;x86_64模拟器镜像和SDK Platform是两个独立组件很多人把下载失败的原因归结为“SDK没装好”其实只是缺了镜像。另外真机调试还需要platform-tools一般Android Studio都会自动装但CI环境里不一定有所以安装命令里可以一并加上sdkmanager platform-tools platforms;android-26这一套组合拳打下来编译、模拟器、真机调试三个场景基本就都覆盖了。5. 常见问题与排查实录5.1 高频报错速查表报错/现象根因处理方法Gradle报错Failed to find target with hash string android-26SDK Platforms未安装或路径不对按上文方式安装platforms;android-26并检查local.propertiesSDK Manager列表里找不到Android 8.0界面过滤导致只显示已安装勾选Show Package Details或搜索26sdkmanager命令提示command not foundcmdline-tools未安装或路径没配到SDK/cmdline-tools/latest/bin目录下执行或加入PATHLicense Check失败未接受Android SDK许可协议执行yes下载到一半失败/速度极慢网络不稳定或下载源不通切换网络或配置SDK Update Sites的可用镜像源装完之后android.jar体积不正常下载不完整删除platforms/android-26目录重新安装Gralde同步报Build Tools 26.0.2找不到只装了platform没装build-tools安装build-tools;26.0.2CI构建报相同错误但本地正常CI机器的SDK是独立环境在CI脚本里执行sdkmanager安装platforms;android-265.2 三个真实踩坑现场还原第一个是“SDK Manager里找不到API 26”。有次我用新版Android Studio装老项目依赖SDK Platforms列表滚半天没看到Android 8.0一度以为是这个版本不显示老平台了。实际上只是列表默认把未安装的包折叠起来了点一下Show Package Details所有API Level就全出来了。新版界面还加了搜索框直接输26秒定位。第二个坑是命令行安装报“Failed to find: platforms;android-26”但GUI安装却完全正常。这个问题的根源在于命令行版本和GUI用的SDK目录不是同一个。当时我的ANDROID_HOME指向的是一套旧SDKAndroid Studio用的是另一套sdkmanager默认读环境变量就走错了路径。解决办法就是明确用--sdk_root参数指向Android Studio实际使用的SDK目录之后再执行安装就一路顺畅了。第三个坑最有意思平台包装好了Gradle还报target hash找不到。排查到最后才发现是项目里的local.properties被提交到Git仓库了里面写的是另一个开发者的Mac路径。这种问题在团队协作里特别常见local.properties本来就不该提交进版本库但老项目往往没做好.gitignore。处理办法很简单删掉local.properties让Android Studio重新生成或者手动改成自己机器上的sdk.dir路径。根据我个人的经验下载SDK Platform这种看起来特别基础的操作反而容易在细节上翻车。路径错位、组件概念混淆、License协议未接受这三个问题占掉了至少七成排查时间。你把上面这些点提前检查一遍再遇到API 26相关的构建问题基本能十分钟内解决。后面如果碰到老项目还要同时处理NDK版本、Build Tools匹配这类问题方法论是一样的先定位SDK目录再核对组件清单最后用命令行精确安装这套流程放到任何时候都不过时。本文还有配套的精品资源点击获取