
常见问题:
Q:接入融合SDK优点是什么?
A:可以快速实现从CSJ切换到聚合SDK。可以缩短开发者接入成本
Q:融合SDK 和穿山甲SDK,建议接入哪个SDK?
A:后续我们会高优维护融合SDK,建议接入融合SDK即可,融合SDK包含穿山甲SDK和GroMore SDK完整功能。
Q:融合SDK 和穿山甲SDK可以同时使用吗?是否会冲突?
A:融合SDK包含穿山甲SDK功能,仅引入一个融合SDK即可。
SDK包体可通过CSJ媒体平台->接入中心->广告变现->->SDK->GroMore聚合变现下载即可。
融合SDK支持多家ADN,Android端可在demo包内libs路径下获取对应ADN的aar文件;开发者可按需接入对应的ADN 的SDK 和 adapter包
Manifest merger failed : uses-sdk:minSdkVersion xx cannot be smaller than version 24 declared in library csj相关库 /Users/xxx/AndroidManifest.xml问题,可参考以下2种解决方案,选择其一即可,也可参考官方解决。ADN | SDK版本范围 | adapter版本 |
穿山甲 | open_ad_sdk_v7.4.1.4 | / |
gdt | >=4.611.1481,最新版本4.662.1532 | gdt:4.662.1532.0 |
baidu | 9.17~9.423,最新版本9.423 | baidu:9.423.3 |
ks | 3.3.17~4.11.20.1,最新版本4.11.20.1 | ks:4.11.20.1.0 |
Sigmob | == windAd-4.25.2 | sigmob:4.25.2.0;sigmob_common:1.8.6 |
步骤一:添加仓库
在project级别的build.gradle文件中添加Maven的引用
步骤二:添加依赖
在主module的build.gradle文件添加SDK依赖(需自行引入adn sdk)以及对应的adapter
融合SDK支持接入多家ADN,开发者可以按需接入对应的ADN的SDK和adapter
下载SDK的压缩包,解压后穿山甲Android_sdk_x.x.x.x_双架构的文件夹里面会有以下内容:
目录/文件 | 说明 |
open_ad_sdk_xxxx.aar | 融合SDK aar(包含穿山甲以及聚合请求广告功能,如果只接入穿山甲广告,那么只需要此包即可),放置开发工程的libs目录下 融合SDK的基础包,必须引入; |
adapter | ADN对应的adapter文件夹,在平台勾选的adn对应的adapter会在该文件夹中。将aar放置开发工程的libs目录下; //sigmob的adapter mediation_sigmob_adapter_.xx.x.x.aar //ks的adapter mediation_ks_adapter_.x.xx.x.aar //gdt的adapter mediation_gdt_adapter_.xxx.xxxx.x.aar //baidu的adapter mediation_baidu_adapter_.xx.x.aar |
adn | //baidu的aar Baidu_MobAds_SDK_vxxx.aar //gdt的aar GDTSDK.unionNormal.xxxx.aar //ks的aar kssdk-ad-xxxx.aar |
demo | demo项目源码 mediation目录下为融合demo示例源码 |
demo_xxxxx.apk | 可直接安装的demo |
mediation_sdk_test_tools.aar | 融合SDK测试工具,可单独测试各家ADN的广告,放置开发工程的libs目录下 接入过程中可辅助开发者提前发现问题,不可带到线上 V>=5.3.6.1,测试工具合并,仅提供tools-release.aar包含聚合和CSJ测试功能,mediation_sdk_test_tools.aar不再单独提供且不能与tools-release.aar共用; |
tools-release.aar | 穿山甲测试工具,可单独测试代码位广告,放置开发工程的libs目录下 接入过程中可辅助开发者提前发现问题,不可带到线上 |
whiteList.txt | 资源白名单,不可混淆 |
build.gradle 配置
SDK隐私协议及获取用途 >>
注意: 穿山甲SDK不强制获取以下权限,即使没有获取可选权限SDK也能正常运行;获取以上权限将帮助穿山甲优化投放广告精准度和用户的交互体验,提高eCPM。
${applicationId} 必须与开发者包名保持一致,否则会引发崩溃问题com.android.support:support-v4:28.0.0,建议使用28.0.0以及以上版本无需单独配置 AndroidManifest,以 ADN 官方文档为准。
如果您需要使用proguard混淆代码,需确保不要混淆SDK的代码。 请在proguard-rules.pro文件(或其他混淆文件)尾部添加如下配置:
项目中如果使用AndResGuard资源混淆工具,需要使用SDK包中whiteList.txt 添加到白名单规则中
SDK 默认仅支持 arm64-v8a 架构,在 build.gradle 中配置:
注意事项
supportMultiProcess必须更改为false;supportMultiProcess则需要设置true。supportMultiProcess=true,穿山甲SDK会自动拉起downloader子进程。此时,必须在downloader子进程中初始化穿山甲SDK,否则会影响下载类型广告无法正常下载。判断多进程方法:a、穿山甲sdk初始化,b、穿山甲广告获取,c、穿山甲广告展示 这三个关键点的调用在不同进程则为多进程,多进程效率不如单进程高,如非必要尽量不要使用多进程开关,
TTAdSdk说明:初始化SDK、获取创建广告请求的manager对象、更新广告SDK配置
方法名 | 返回值 | 说明 |
isSdkReady() | boolean | 判断当前 SDK 是否已初始化完成并处于可用状态,用于在发起广告请求前做就绪性检查 |
init(Context var0, TTAdConfig var1) | boolean | 使用应用 |
start(Callback var0) | void | 在 |
getAdManager() | TTAdManager | 获取 TTAdManager 实例,是创建各类广告请求对象(如 |
getMediationManager() | IMediationManager | 获取聚合管理器,获取广告加载信息、ecpm等信息 |
updateAdConfig(TTAdConfig var0) | void | 运行期更新广告配置:同步 |
TTAdConfig.Builder说明:初始化SDK配置类。
方法名 | 返回值 | 说明 |
appId(String appId) | Builder | 设置应用的 App Id,用于初始化 SDK 时标识应用,必选参数 |
appName(String appName) | Builder | 设置应用名称,用于展示或统计等场景,非必选参数 |
paid(boolean paid) | Builder | 设置应用是否为付费用户,建议回传,利于模型持续优化效果; |
keywords(String keywords) | Builder | 用户画像的关键词列表 |
data(String data) | Builder | 设置额外数据信息,一般用于扩展配置或自定义参数 |
titleBarTheme(int titleBarTheme) | Builder | 设置标题栏主题样式(例如深色/浅色等) |
allowShowNotify(boolean allowShowNotify) | Builder | 是否允许展示通知栏提醒 |
debug(boolean debug) | Builder | 是否开启调试模式(一般用于开发、联调阶段) |
directDownloadNetworkType(int networkTypes) | Builder | 设置允许直接下载的网络类型(如 Wi-Fi、4G 等) |
supportMultiProcess(boolean supportMultiProcess) | Builder | 1.若应用为单进程 ,需将 2.若应用为多进程 ,需将 3.开启多进程开关(
|
customController(TTCustomController controller) | Builder | 设置自定义控制器,用于控制权限、权限弹窗等行为 |
themeStatus(int themeStatus) | Builder | 主体模式设置,0正常模式;1夜间模式;需初始化成功后调用 |
setPluginUpdateConfig(int config) | Builder | 设置插件更新相关配置(如更新策略) |
setAgeGroup(int ageGroup) | Builder | 设置用户年龄分组,用于合规和投放策略,设置年龄段,默认成年 |
addExtra(String key, Object value) | Builder | 添加额外的自定义扩展参数(键值对) |
useMediation(boolean useMediation) | Builder | 使用聚合功能一定要打开此开关,默认false |
setMediationConfig(IMediationConfig config) | Builder | 设置聚合特有配置 |
MediationConfig.Builder说明:聚合三方ADN自定义参数配置类
方法名 | 返回值 | 说明 |
setPublisherDid(String publisherDid) | Builder | 设置 Publisher DID(发布者侧设备标识),用于向 SDK 透传自定义设备 ID |
setOpenAdnTest(boolean openAdnTest) | Builder | 可选参数,开启第三方ADN测试时需要设置为true,会每次重新拉取最新配置,release 包情况下必须关闭.默认false |
setMediationConfigUserInfoForSegment(MediationConfigUserInfoForSegment userInfo) | Builder | 设置聚合用户分群信息,用于分群投放或策略控制。流量分组信息的字段有校验规则,字符串类型的值只能是大小写字母,数字,下划线,连字符,字符个数100以内 ( [A-Za-z0-9-_]{1,100} ) ,不符合规则的信息将被过滤掉,不起作用。 |
setHttps(boolean https) | Builder | 设置是否启用 HTTPS 请求 |
setCustomLocalConfig(JSONObject customLocalConfig) | Builder | 设置自定义本地配置(JSON 结构),自定义兜底配置 |
setWxInstalled(boolean wxInstalled) | Builder | 标记当前设备是否已安装微信,用于微信相关能力判断 |
setOpensdkVer(String opensdkVer) | Builder | 设置 OpenSDK 版本号(例如微信/第三方 SDK 版本) |
setSupportH265(boolean supportH265) | Builder | 设置是否支持 H.265 视频编码格式播放 |
setSupportSplashZoomout(boolean supportSplashZoomout) | Builder | 设置是否支持开屏广告缩小到小窗(zoomout)能力 |
setWxAppId(String wxAppId) | Builder | 设置微信 AppId,用于授权、分享等微信相关功能 |
TTCustomController说明:隐私设置类,通过TTAdConfig的customController(TTCustomController var1)来设置。
方法名 | 返回值 | 说明 |
isCanUseLocation() | boolean | 是否允许 SDK 使用系统定位能力(如 GPS、网络定位等),用于获取位置信息 |
getTTLocation() | LocationProvider | null | 返回自定义的定位提供者,当你希望自行提供位置信息而不是由 SDK 直接调用系统定位时可重写该方法 |
alist() | boolean | 是否允许SDK获取手机应用安装列表 |
isCanUsePhoneState() | boolean | 是否允许 SDK 访问手机状态相关信息(如设备信息、网络状态等) |
getDevImei() | String | null | 返回自定义 IMEI,当isCanUsePhoneState为false时使用 |
isCanUseWifiState() | boolean | 是否允许 SDK 访问 Wi‑Fi 状态信息(如当前 Wi‑Fi 连接情况) |
getMacAddress() | String | null | 返回自定义 MAC 地址,当isCanUseWifiState为alse时使用 |
isCanUseWriteExternal() | boolean | 是否允许 SDK 写入外部存储(如保存下载广告APK、广告素材) |
getDevOaid() | String | null | 返回自定义 OAID,当且仅当SDK无法正常获取到oaid时使用该方法返回值 |
isCanUseAndroidId() | boolean | 是否允许SDK降低ANDROID_ID的采集频率 |
getMediationPrivacyConfig() | IMediationPrivacyConfig | null | 返回聚合/中介相关的隐私配置,用于更细粒度地控制第三方平台权限与数据使用 |
getAndroidId() | String | null | 返回自定义的 Android ID,当isCanUseAndroidId为false时使用 |
isCanUsePermissionRecordAudio() | boolean | 是否允许 SDK 使用录音权限(如语音类广告或音频采集场景) |
userPrivacyConfig() | Map<String, Object> | 返回一组用户隐私相关的配置项(键值对),用于统一控制 SDK 行为与合规策略 |
isCanUseMessage() | boolean | 是否允许 SDK 使用消息相关能力(如展示消息类组件等),具体行为视 SDK 实现而定 |
MediationPrivacyConfig说明:聚合设置隐私类。
方法名 | 返回值 | 说明 |
getCustomAppList() | List<String> / null | 返回自定义的应用列表,默认返回一个新的空列表,将自己获取到的应用安装列表通过该接口提供给SDK |
getCustomDevImeis() | List<String> / null | 返回自定义的设备 IMEI 列表,默认返回一个新的空列表,将自己获取到的IMEI通过该接口提供给SDK |
isCanUseOaid() | boolean | 是否允许使用 OAID,默认 |
isLimitPersonalAds() | boolean | 是否限制个性化广告,默认 |
isProgrammaticRecommend() | boolean | 是否开启程序化推荐,默认 |
TTAdSdk.Callback 说明
方法名 | 说明 |
void success() | SDK初始化成功回调 |
void fail(int errorcode, String errorMsg) | SDK初始化失败回调 |
value | 说明 |
4201 | 1. 需要依赖 appcompat-v7 库;implementation 'com.android.support:appcompat-v7:28.0.0' 2. 检查下项目的CPU架构,架构不匹配时会提示该错误,SDK默认支持armeabi-v7a,arm64-v8a两种架构; 3. 若为androidx项目,请检查androidx及gradle相关配置是否正确; 4. 如以上排查没有问题,可通过平台穿小甲智能客服反馈 |
在线客服智能客服 7*24小时在线人工客服 工作日 10~12点/14~19点