SDK 集成

SDK 集成

此章节将演示如何集成ZJSDK到您的原生项目中。

提示

接入完成后,在正式上线前需要提供测试包,测试广告正常展现

SDK 不支持模拟器运行,需要使用真机调试

版本配置

SDK 可运行于 Android5.0 (API Level 21) 及以上版本,请确保build.gradle中的minSdkVersion参数不小于21

资源引入

提示

导入后无法编译等问题详见常见问题-编译

OAID SDK 说明

Android10 起无法通过常规方式获取 IMEI 等设备 ID,影响部分广告网络正常广告加载、展示等业务。

2.4.6版本起 SDK 不再主动集成OAID SDK,开发者需要自行接入才可以正常加载这些广告网络的广告。

集成方式见OAID SDK 集成说明

配置仓库

首先需要在项目的build.gradle文件中引入如下配置

allprojects {
    repositories {
        //...
        google()
        jcenter()
        mavenCentral()
        // 添加以下仓库地址
        maven { url 'https://maven.aliyun.com/repository/public' }  
    }
}

配置 APPCOMPAT

SDK 功能依赖于AppCompat包,开发者需要根据当前应用的开发环境引入对应的AppCompat依赖,其中:

  • AndroidX环境下的依赖版本号可以根据项目调整,不做要求
  • Support环境下要求support-library版本不低于26.0.0
depedencies {
    //...

    // AndroidX 工程需要添加
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

    //...
}
depedencies {
    //...

    // Support 工程需要添加
    implementation 'com.android.support:appcompat-v7:26.0.0'
    implementation "com.android.support:support-v4:26.0.0"
    implementation 'com.android.support.constraint:constraint-layout:2.0.4'

    //...
}

AndroidX 配置

如果当前的项目环境为AndroidX,需要在工程根目录的gradle.properties中配置enableJetifier

android.enableJetifier=true

引入 SDK

将 SDK 压缩包内的zj_sdk_x.y.z.aarkssdk_x.y.z.aar复制到application module/libs文件夹(没有的话须手动创建), 并增加依赖

注意

引入文件时,请将上文提到的x、y、z替换为压缩包内的最新版本

depedencies {
    //...

    // 建议开发者优先集成OAID。Android 10 无法通过常规方式获取IMEI,影响广告测试及正式广告的填充
    implementation files('./libs/oaid_sdk_1.0.25.aar')
    // x5内核,需要引入,如已引入,可忽略
    implementation 'com.tencent.tbs:tbssdk:44286'
    // 微信 OpenSdk ,需要引入,如已引入,可忽略
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.28'

    // SDK包
    implementation files('./libs/zj_sdk_x.y.z.aar')
    implementation files('./libs/kssdk_x.y.z.aar')
    implementation ("com.tanx:TanxUISDK:3.5.6")
    implementation files('./libs/open_ad_sdk_x.y.z.aar')
    implementation files('./libs/pangle_mediation_adapter_x.y.z.aar')
    implementation files('./libs/beizi_ad_sdk-x.y.z.aar')
    implementation files('./libs/beizi_fusion_sdk-x.y.z.aar')
    implementation files('./libs/octopus_ad_sdk_x.y.z.aar')
    implementation files('./libs/zj_adsdk_windmill-sdk-x.y.z.aar')

    //...
}

兼容版额外引入

使用兼容版 SDK时,需要在引入上方内容后,将以下aar中不冲突的内容全部引入到工程中:

depedencies {
    //...

    // 兼容版需要额外引用不冲突的联盟SDK
    implementation files('./libs/Baidu_MobAds_SDK-release_x.y.z.aar')
    implementation files('./libs/kssdk_x.y.z.aar')
    implementation files('./libs/GDTSDK.unionNormal.x.y.z.aar')
    implementation files('./libs/wind-common-x.y.z.aar')
    implementation files('./libs/wind-sdk-x.y.z.aar')

    //...
}

小说书城额外引入

当应用需要接入小说书城广告时,需要额外引入小说书城SDK:

depedencies {
    //...

    // 小说包
    implementation files('./libs/novelsdk-x.y.z.aar')

    //...
}

并修改应用的tartgetSDKVerion不大于28,否则小说页面无法正常运行。

修改 AndroidManifest

SUPPORT 工程额外配置

如工程为Android Support环境, 请将以下代码添加到AndroidManifest.xml中的application节点下

<application> 
    <provider
        android:name="com.sigmob.sdk.SigmobFileV4Provider"
        android:authorities="${applicationId}.sigprovider"
        android:exported="false"
        android:initOrder="200"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/sigmob_provider_paths"/>
    </provider>
</application>

权限声明

若您的 targetSDKVersion>=23 ,您还需要在运行时进行动态权限申请(可参考示例工程)

<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 安装APK权限-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.GET_TASKS" /> 
<!-- 如果有视频相关的广告且使用textureView播放,请务必添加,否则黑屏 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />

提示

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

如果开发者声明 targetSdkVersion 到 API23 以上,请确保调用初始化前已经申请到了 SDK 要求的所有权限,否则 SDK 部分特性可能受限