初始化 SDK

优质
小牛编辑
135浏览
2023-12-01

1. SDK 目录结构

  • demo.apk 示例工程, 用来演示AdHub提供的多种广告展现形式.
  • adhub_sdk.aar 主SDK, 包含请求, 展现Adhub自有广告逻辑.
  • adpoymer.aar 相应的适配类, 用来展现广告内容.
  • Baidu_MobAds_SDK.aar 相应的适配类, 用来展现广告内容.
  • GDTSDK.union.4.80.950.aar 相应的适配类, 用来展现广告内容.

注:以上aar需全部集成到项目中.

2. AAR文件简介

Google在发布Android studio的时候就发布了一种独有的格式AAR,专门用于打包UI组件库。与jar相比其多了一些UI组件用到的属性、图片等一系列文件,它的好处在于你不需要再多创建一个Library Module,只需引用这个AAR文件即可,Android Sudio会自动把AAR包里的文件跟你的项目融合。 AdHubSDK也采用了aar作为标准打包形式, 将SDK依赖的文件和资源一并打入AAR包中, 这样开发者只需要依赖单一的AAR文件, 而不需要手工将SDK依赖的文件放入工程中, 大大减轻了SDK使用者的负担.

3. 导入SDK文件

1. 将arr文件夹下内的4个文件全部粘贴到主项目libs目录下即可.

2. 在工程的build的文件中做如下配置:

allprojects {
       repositories {
        flatDir {
            dirs 'libs'
            }
           }
       }

3. 在app的build文件中添加:

repositories {
    flatDir {
        dirs 'libs'
        }
       }
//以下依赖必须全部接入
implementation(name: 'adhub_sdk_3.2.3', ext: 'aar')
implementation(name: 'adpoymer-4.1.28', ext: 'aar')
implementation(name: 'GDTSDK.union.4.80.950', ext: 'aar')
implementation(name: 'Baidu_MobAds_SDK5.83', ext: 'aar')

4. eclipse需要将aar转换为library工程文件,以项目工程的形式导入。(关于AAR转成eclispe工程文件请参考搜索百度相关文档)

5. 为了适配下载和安装相关功能:

  在工程中引用V4包使用24.2.0以及以上版本:com.android.support:support‐v4:24.2.0

6. 将压缩包内xml文件夹内的两个文件拷贝到主工程res目录下

7. 因SDK内部采用http协议。如果App的targetSdkVersion>=28,需要在 AndroidManifest.xml 添加依赖声明:

<application
    android:usesCleartextTraffic="true">

<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />
    ... ...

  </application>

4. 初始化SDK

注意:初始化SDK必须在调用AdHub广告接口之前,

// Init the Mobile Ads SDK.
//此方法只需要初始化的时候调用一次,建议在application里面调用,不要多次调用。
//注意:demo中是为了提供测试不同的appid,在每一个不同的广告界面都进行了调用。sdk嵌入者只需要调用一次。
AdHub.init(applicationContext, appId);

5. 修改AndroidManifest.xml文件, 添加必要权限和Activity

添加访问权限

在AndroidManifest.xml文件中添加

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!-- targetSdkVersion >= 26 时需要配置此权限,否则无法进行安装app的动作 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

注意:以上部分权限为敏感权限,如果您打包App时的 targetSdkVersion >= 23请做动态权限验证。其中READ_PHONE_STATE、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE必须在APP主页面做动态权限申请,否则不出广告。

添加SDK Activiy定义

在AndroidManifest.xml文件的application节点下添加

<!-- AdHub Ad -->

<activity
            android:name="com.hubcloud.adhubsdk.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:theme="@style/AdhubDialogStyle" />
<service
            android:name="com.hubcloud.adhubsdk.DownloadService"
            android:exported="false" />

<!-- Fmobi Ad -->

<activity     android:name="com.ly.adpoymer.activity.LyVideoActivity" />

<!-- gdt Ad -->

<activity
            android:name="com.qq.e.ads.ADActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />
<activity
            android:name="com.qq.e.ads.PortraitADActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
            android:screenOrientation="portrait" />
<activity
            android:name="com.qq.e.ads.LandscapeADActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
            android:screenOrientation="landscape" />
<service
            android:name="com.qq.e.comm.DownloadService"
            android:exported="false" />
<!--如果targetSdkVersion设置值>=24,则必须添加以下provider,否则会影响app变现效率-->
<!--请开发者根据自己PackageName来替换${applicationId}这个字段-->
<!--特别注意这个authorities中的fileprovider为全部小写-->
<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/gdt_file_path" />
        </provider>

<!-- baidu Ad -->

<activity
            android:name="com.baidu.mobads.AppActivity"
            android:configChanges="screenSize|keyboard|keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--如果targetSdkVersion设置值>=24,则必须添加以下provider,否则会影响app变现效率-->
<!--请开发者根据自己PackageName来替换${applicationId}这个字段-->
<provider
            android:name="com.baidu.mobads.openad.FileProvider"
            android:authorities="${applicationId}.bd.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/bd_file_paths" />
        </provider>

<!-- *****************************以上所有渠道必须接入****************************************** -->

注意:请开发者务必按照上面信息进行注册声明,详情见Demo。