中文
登录
后可查看全部文档
开发测试/Android集成文档/SDK工程配置及初始化说明
SDK工程配置及初始化说明
最近更新 2024-03-29 15:48:49

注意:此版本SDK不适用于中国以外的安卓商店/渠道。开发者如果有海外流量对接需求,烦请发送邮件至pangle_support@bytedance.com,以便获取到正确的海外专属安卓SDK版本进行对接。

注意 :我们建议您使用Gradle依赖更轻松地管理 Android Studio 项目的库依赖项,而不是直接下载并安装 SDK。

版本

v5.9.1.4

MD5值

78f76f6da905b78c094615562082f21a

SDK集成

方式一

从穿山甲3.5.0.6版本开始,开发者也可以使用Gradle依赖导入穿山甲SDK

步骤一:添加仓库

project级别的build.gradle文件中添加Maven的引用,url 'https://artifact.bytedance.com/repository/pangle'

示例:

复制

步骤二:添加依赖

在主modulebuild.gradle文件添加SDK依赖

复制

Gradle版本要求:

自3400版本开始,穿山甲支持了Android R,引入了Android R的 <queries> 标签,需要对gradle版本进行限制,限制范围为:3.3.3、 3.4.3、 3.5.4、3.6.4、4.0.1 ,开发者根据自身情况酌情升级

方式二

导入aar及SDK依赖的jar包

将本SDK压缩包内的open_ad_sdk.aar复制到Application Module/libs文件夹(没有的话须手动创建), 并将以下代码添加到您app的build.gradle中:

复制

AndroidManifest配置

添加权限

复制

注意: 穿山甲SDK不强制获取以上权限,即使没有获取可选权限SDK也能正常运行;获取以上权限将帮助穿山甲优化投放广告精准度和用户的交互体验,提高eCPM。

建议在广告请求前,合适的时机调用SDK提供的方法,在用户可以授权的情况下获取到声明中的权限,提高广告变现效率

复制

provider配置

注意

(1)为不影响下载类型广告使用 无论APP处于任何阶段provider都需要在清单文件中正常配置

(2)为不影响到广告的转化及收益 请务必在清单文件中配置xxx.TTMultiProvider

(3)${applicationId} 必须与开发者包名保持一致,否则会引发崩溃问题

适配Anroid7.0及以上如果您的应用需要在Anroid7.0及以上环境运行,请在AndroidManifest中添加如下代码:

复制

在res/xml目录下,新建一个xml文件file_paths,在该文件中添加如下代码:

复制

为了适配下载和安装相关功能,在工程中引用的包 com.android.support:support-v4:28.0.0使用28.0.0以及以上版本

注意:单进程或多进程都必须配置

复制

运行环境配置

本SDK可运行于Android5.0 (API Level 21) 及以上版本。<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30" />

如果开发者声明targetSdkVersion到API 23以上,请确保调用本SDK的任何接口前,已经申请到了SDK要求的所有权限,否则SDK部分特性可能受限

代码混淆

如果您需要使用proguard混淆代码,需确保不要混淆SDK的代码。以aar包里的混淆文件为准

注意: SDK代码被混淆后会导致广告无法展现或者其它异常

支持架构

注意: 3900以及以上版本SDK默认支持armeabi-v7a,arm64-v8a两种架构,如果有其他架构(armeabi架构)需求,请联系技术支持同学;

您可以在应用中的build.gradle中使用abiFilters选择支持的架构。如下所示:

复制

白名单配置

注意:平台SDK包中whiteList.txt 白名单上的资源不支持混淆



SDK初始化

穿山甲SDK需要在主线程中初始化

多进程涉及WebView的使用,用户想要使用自己的数据路径,可以在SDK初始化之前调用WebView.setDataDirectorySuffix()

接入过程中,强烈建议双端分别使用各自的应用ID进行测试,不要混用,否则可能会影响收益。

.allowShowNotify(true) //是否允许sdk展示通知栏提示,默认为true,若设置为false则会导致通知栏不显示下载进度,存在违规风险,请勿随意更改。

开发者需要在用户同意APP的隐私政策之后调用以下代码来初始化穿山甲SDK。重点: 目前SDK已支持多进程,如果明确某个进程不会使用到广告SDK,可以只针对特定进程初始化广告SDK。

复制

注意: appId为必填内容,若appid是通过服务端下发的,那么在初始化前需要做不为空的判断。

接口说明

穿山甲在3450版本开始支持了同步初始化异步初始化两种方式,并且TTAdConfig.Builder中支持异步初始化API将不再生效。优化后同步初始化异步初始化两种方式的耗时没有显著差异,后者将部分初始化逻辑放到了子线程。穿山甲48xx版本开始正式废弃了同步初始化,开发者需要在success回调之后再去请求广告。


重点说明:若您接入的是穿山甲Pro版本的SDK,则只能使用异步初始化的方式。同时混淆规则也要同步调整。


穿山甲SDK初始化API:该API必须在主线程中调用,穿山甲会将初始化操作放在子线程执行。

V>=58XX

TTAdSdk.init返回值变成boolean

复制

新增返回是否调用TTAdSDk.start成功的状态接口TTAdSdk.isSdkReady

复制

V>=56XX

TTAdSdk.init仅进行初始化,不会获取个人信息, 如果要展示广告,需要再调用TTAdSdk.start方法

复制

TTAdSdk新增Callback回调,替换掉原来的InitCallback回调

复制

V< 56XX

复制

fail回调状态码

value

说明

4000

本地执行API错误导致初始化错误码

4201

  1. 4000及以上版本SDK需要依赖 appcompat-v7 库;
复制
  1. 检查下项目的cpu架构,架构不匹配时会提示该错误,3900以及以上版本SDK默认支持armeabi-v7a,arm64-v8a两种架构;
  2. 若为androidx项目,请检查androidx及gradle相关配置是否正确;
初始化状态接口
复制
过期&无效API
复制

48xx版本开始SDK同步初始化方法正式废弃

复制

隐私信息控制开关

复制

示例

复制

注意

  • 重写getTTLocation()之前需要设置isCanUseLocation()
  • 重写getDevImei()之前需要先设置isCanUsePhoneState()

构建TTAdManager对象

TTAdManager对象为整个SDK的入口接口,可用于广告获取权限请求版本号获取等

构建方法

复制

TTAdManger接口说明

复制

夜间模式

复制

注意事项

①TTAdManagerHolder保持单例模式

单进程多次初始化SDK以第一次初始设置的信息为主。

③appId是平台上创建应用生成的7位数字。

④任何类型的视频广告加载后播放出现黑屏都可以按以下方式尝试解决:

  • 清单文件中的黑屏权限是否添加
复制
  • 尝试使用TextureView控件播放视频

⑤appName不为空即可,建议和平台创建的应用名称保持一致。

⑥supportMultiProcess说明:

  • 若项目是单进程必须更改为false
  • 若项目是多进程,则需要设置true。多进程中如果每个进程中都需要展示广告 必须每个进程都进行SDK的初始化 如果您的应用需要支持多进程,请务必设置TTAdConfig.supportMultiProcess(true)。确认app多进程支持判断方法:a、穿山甲sdk初始化b、穿山甲广告获取c、穿山甲广告展示这三个关键点的调用在不同进程则为多进程,否则即为单进程如非必要尽量不要使用多进程开关,多进程效率不如单进程高

⑦provider配置

  • 无论单进程还是多进程都必须配置穿山甲所需provider
  • 无论平台应用处于测试状态还是正式状态都需要配置provider
  • 为不影响到广告的转化及收益 请务必在清单文件中配置xxx.TTMultiProvider

⑧如果您的应用对资源也进行混淆(如andResGuard),请不要混淆穿山甲的任何资源,防止资源找不到而发生崩溃的问题。

⑨SDK压缩文件内whiteList.txt 白名单上的资源不支持混淆 ,开发者在SDK更新迭代过程中需要重新检查一遍白名单内容。

⑩回调方法不执行

  • 检查TTAdManager对象是否被覆盖
  • 检查TTAdManager对象是否被提前释放




本篇目录
联系我们