主题
下载 SDK
提供 Android 与 iOS 两个平台的原生 SDK,以及封装它们的 uni-app 版。
| 平台 | 当前版本 | 获取方式 | 环境要求 | 发布说明 |
|---|---|---|---|---|
| Android | 1.2.0 | Maven 仓库 / 离线包 | minSdk 25(Android 7.1.1)、compileSdk 34、JDK 17、AGP 8.x | 查看 |
| iOS | 1.0.0 | CocoaPods 私有源 | 最低 iOS 12.0 | 查看 |
| uni-app 插件 | 1.0.0 | 离线包(uni_modules) | App-Android / App-iOS,uni-app(vue3) | 查看 |
表里每一行各有自己的版本线
几行之间会出现同一个版本号,但那是互不相干的产物,号一样不代表功能对齐,升级时各看各的发布说明。 uni-app 版的版本号也与它内部锁定的原生 SDK 版本无关 —— 锁的是哪一版见 uni-app 版的「Android 依赖」。
Android
交付物是三个 aar,版本号三者一致:
| 坐标 | 什么时候引 |
|---|---|
com.admix:core | 必需,聚合核心,不依赖任何广告 SDK |
com.admix:adapter-csj | 接穿山甲时引,自动带上穿山甲 SDK com.pangle.cn:mediation-sdk:7.7.1.6 |
com.admix:adapter-gdt | 接优量汇时引,自动带上优量汇 SDK com.qq.e.union:union:4.680.1550 |
只接一家就只引那一个 adapter,另一家连同它的广告 SDK 都不会进包。
另外提供聚合坐标(只有 pom、没有代码),一行引入一组模块:
| 一行引入 | 等价于 | 什么时候用 |
|---|---|---|
com.admix:sdk:1.2.0 | core + adapter-csj + adapter-gdt | 两家广告平台都接(最常用) |
com.admix:sdk-csj:1.2.0 | core + adapter-csj | 只接穿山甲 |
com.admix:sdk-gdt:1.2.0 | core + adapter-gdt | 只接优量汇 |
推荐用聚合坐标:三个坐标就是三个版本号,升级时漏改一个不会报错, 而「core 新版 + adapter 旧版」这种组合能编过、能跑,行为却没人验证过; 聚合坐标把版本收成一个数字。需要精细控制依赖(比如自己排除某个传递依赖)的工程照旧可以逐个引,两条路等价。
方式一:Maven 仓库(推荐)
仓库地址 https://admin.maemi.cn/maven/,公开只读,不需要账号。
1. 配置仓库
groovy
// settings.gradle
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url 'https://admin.maemi.cn/maven/' } // AdMix
maven { url 'https://artifact.bytedance.com/repository/pangle' } // 穿山甲官方仓库
}
}Kotlin DSL:
kotlin
// settings.gradle.kts
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven("https://admin.maemi.cn/maven/") // AdMix
maven("https://artifact.bytedance.com/repository/pangle") // 穿山甲官方仓库
}
}穿山甲仓库不能省
穿山甲 SDK 只发在字节自己的仓库里,Maven Central 上没有。少配这一条的表现是 Could not find com.pangle.cn:mediation-sdk,而不是「广告少一家」。 优量汇 SDK 在 Maven Central 上,不需要额外仓库。
2. 声明依赖
groovy
// app/build.gradle —— 一行版(推荐)
dependencies {
implementation "com.admix:sdk:1.2.0" // core + 穿山甲 + 优量汇
}只接一家,或者想逐个控制:
groovy
// app/build.gradle —— 逐个引
dependencies {
implementation "com.admix:core:1.2.0" // 必需
implementation "com.admix:adapter-csj:1.2.0" // 穿山甲,自动带上穿山甲 SDK
implementation "com.admix:adapter-gdt:1.2.0" // 优量汇,自动带上优量汇 SDK
}混淆规则随 aar 自动生效(consumer-rules.pro),不需要写任何 -keep。 接下来的初始化与广告位写法见 快速开始。
方式二:离线包
构建机访问不了外网 Maven 仓库时用这个。
离线包里没有穿山甲、优量汇的 SDK —— 这不是漏打
两家的开发者协议禁止把它们的 SDK 提供或转让给第三方 (优量汇《开发者协议》3.4.6 / 9.2、穿山甲《平台服务协议》3.4.2),因此不能随包转发。
接哪家就自己取哪家,版本必须一致,适配器是按这两个版本编译并真机验证过的:
| 广告平台 | 必须使用的版本 | 从哪儿取 |
|---|---|---|
| 穿山甲(GroMore 通道) | 7.7.1.6 | 穿山甲后台「SDK 下载」里的融合 SDK(GroMore);或从 https://artifact.bytedance.com/repository/pangle 取 com/pangle/cn/mediation-sdk/7.7.1.6/mediation-sdk-7.7.1.6.aar |
| 优量汇 | 4.680.1550 | 优量汇开发者平台(developers.adnet.qq.com);或从 Maven Central 取 com/qq/e/union/union/4.680.1550/union-4.680.1550.aar |
换版本可能出现找不到方法的崩溃。包内 README.md 里有逐步说明。
iOS
通过平台的私有 CocoaPods 源分发,源地址 https://admin.maemi.cn/cocoapods/,公开只读,不需要账号。
配置源
Podfile 顶部加入两个源:
ruby
source 'https://cdn.cocoapods.org/' # CocoaPods 官方源(两家广告平台的 SDK 在这里)
source 'https://admin.maemi.cn/cocoapods/' # AdMix写了任何一个 source 就必须把官方源也写上
Podfile 里一个 source 都不写时 CocoaPods 默认用官方源;只要写了 AdMix 的源,默认值就失效。 漏掉官方源的表现是 Unable to find a specification for 'Ads-CN',而不是「广告少一家」。
声明依赖
ruby
platform :ios, '12.0'
target 'YourApp' do
pod 'AdMix', '1.0.0' # 聚合核心 + 穿山甲 + 优量汇
end只接一家就只写对应的子模块,不写的那家连同它的广告 SDK 完全不进包:
ruby
pod 'AdMix', '1.0.0', :subspecs => ['Core', 'CSJ'] # 聚合核心 + 穿山甲
pod 'AdMix', '1.0.0', :subspecs => ['Core', 'GDT'] # 聚合核心 + 优量汇两家广告平台的 SDK 由 CocoaPods 从其官方源自动拉取,不需要再单独引入, 带入的版本见 引入依赖。 接下来的初始化与广告位写法见 快速开始。
两件会让「一条广告都没有」的事
-ObjC 不能少:适配器只在运行时按类名查找,宿主代码里没有任何地方直接引用它, 缺少 -ObjC 时链接器会把它当无用代码丢掉 —— 构建完全正常,日志打「适配器自检: 一个都没有发现」。 CocoaPods 集成会自动带上,手工集成或改写过 OTHER_LDFLAGS 的工程要核对。
ATS 需要全局放开:两家广告平台的部分素材通过明文 http 下发, 表现是广告位有填充、画面缺图或空白,而平台侧数据一切正常。详见 引入依赖。
不提供 Swift Package Manager 分发
两家广告平台的 iOS SDK 目前都未找到公开可解析的 SPM 分发,SPM 包里只能放聚合核心、 放不进任何适配器,装上也出不了广告。以 SPM 为主的工程可以单独为广告引入 CocoaPods,两者能共存。
无法使用 CocoaPods 的工程可以手工集成 xcframework,获取方式与步骤见 引入依赖。
uni-app 插件
UTS 插件,内部封装原生 SDK。支持 App-Android 与 App-iOS,适用于 uni-app(vue3)项目的 vue / nvue 页面。
↓
admix-uniapp-1.0.0.zip
解压得到 admix-ad/ 目录,整个放进宿主工程的 uni_modules/ 下。两家广告平台的 SDK 由云打包时从 Maven 仓库拉取,不在包内。
使用本插件的 App 不能勾选 uni-AD 的广告模块
与 uni-AD 互斥:勾了它的优量汇 / 穿山甲 / GroMore 模块会在构建期失败 (Duplicate class com.qq.e.* 或 so 文件重复),不是「装上了但没广告」。 接入前先确认该 App 没在用 uni-AD。
完整的接入步骤、三种广告位的写法、线程与生命周期的注意事项、以及排查清单见 uni-app 插件——那一页与插件包内的 readme.md 是同一份内容。
历史版本
Android
| 版本 | 发布日期 | 获取方式 | 说明 |
|---|---|---|---|
| 1.2.0 | 2026-10-25 | com.admix:*:1.2.0 · zip | 穿山甲 Banner 填满槽位宽度 |
| 1.1.0 | 2026-10-17 | com.admix:*:1.1.0 · zip | Banner 规格读取 |
| 1.0.0 | 2026-09-20 | com.admix:*:1.0.0 · zip | 首个正式发布版 |
旧版本的 aar 会一直留在 Maven 仓库里,不会被删除;同一个版本号的构件不会被改内容。
iOS
| 版本 | 发布日期 | 获取方式 | 说明 |
|---|---|---|---|
| 1.0.0 | 2026-10-17 | pod 'AdMix', '1.0.0' | 首个正式发布版 |
旧版本在私有 CocoaPods 源里保留,写上精确版本号即可取到。
uni-app 插件
当前 1.0.0,离线包 admix-uniapp-1.0.0.zip, 逐版本的变更见 uni-app 插件 · 更新日志。
插件版本与它内部所用的原生 SDK 版本互相不要求相等:插件修 bug 会升插件版本而不动原生 SDK。
还需要什么
| 东西 | 从哪来 |
|---|---|
| AppID、App 密钥 | 平台运营在后台为该应用生成,登录后台后在「接入指引」页可直接复制 |
广告位标识(如 splash_main) | 同上,「我的应用」里能看到 |
| 各广告平台的应用 ID 与广告位 ID | 不需要接入方填,由平台配置服务下发;SDK 侧没有本地写入口 |
| AppSecret(服务端发奖验签用) | 只在生成时显示一次,由平台运营单独交付,只能放在接入方的服务器上 |