SDK引入 - sunitsdk/SUnitUnityDemo GitHub Wiki

1. SdkVersion说明

• minSdkVersion 16 or later
• compileSdkVersion 26 or later

2. 引入SDK

  1. 添加SDK文件 将Assets/SHAREitSDK拷贝到目标工程中,该目录下demo文件是SDK的例子,可以参考

  2. 添加第三方依赖 将Assets/Plugins/Android/LitJson.dll拷贝到目标工程中,如果目标工程中此文件已存在,不用拷贝。

  3. 添加默认广告配置文件(有利于提高收入)

接入准备中获取的default_layer文件拷贝到目标工程Assets/StreamingAssets目录下,路径如下图

图片1

3. 配置gradle (Unity 版本在2019.3以前版本用此配置,2019.3及以后版本配置请直接跳到第4步)

  1. Custom Gradle Template配置
    打开Custom Gradle Template配置具体步骤如下

    1) File -> Build Settings ->切换Android 平台->Player Settings

    图片2

    2) Player Settings -> Player -> android Tab -> Publishing Settings -> Build下方 勾选“Custom Gradle Template”

    图片3

  2. mainTemplate.gradle文件配置
    对Assets/Plugins/Android/mainTemplate.gradle文件进行配置,具体如下:
    如果该文件不存在,直接拷贝到此目录下;
    如果该文件已经存在,只要将mainTemplate文件中SHAREit start 和SHAREit end包裹的代码拷贝过去即可。

4. 配置gradle (Unity 版本在2019.3及以后版本配置)

  1. Custom Gradle Template配置
    打开Custom Gradle Template配置具体步骤如下

    1) File -> Build Settings ->切换Android 平台->Player Settings

    图片2

    2) Player Settings -> Player -> android Tab -> Publishing Settings -> Build下方勾选“Custom Main Manifest,Custom Launcher Manifest, Custom Gradle Properties Template”三个选项。

    图片3

  2. launcherTemplate.gradle文件配置
    对Assets/Plugins/Android/launcherTemplate.gradle文件进行配置,具体如下:
    如果该文件不存在,直接拷贝到此目录下;
    如果该文件已经存在,只要将launcherTemplate文件中SHAREit start 和SHAREit end包裹的代码拷贝到launcherTemplate.gradle文件里即可。

  3. 如果出现UnityAd 和 com.unity3d.ads:unity-ads 引用库冲突,请移除Unity里的广告组件,在 Window -> Package Manager里移除下图中相关的库即可 图片3

  4. 适配androidX 需要在 gradleTemplate.properties 里配置

     android.useAndroidX=true
     android.enableJetifier=true
    

5. 配置AndroidManifest.xml

接入准备中获取的“广告AppId”替换如下示例中 "YOUR_APP_ID"

<manifest>
 <application>
 <meta-data android:name="com.ushareit.ads.KEY_APP_ID"
   android:value="YOUR_APP_ID"/>
 </application>
</manifest> 

YOUR_APP_ID 是必要参数,如未配置,测试模式下,将抛出 Crash 提示;非测试模式下,将初始化失败,无法获取广告。

6. SDK初始化

以下为初始化配置

<!-- ⼴告渠道,默认SAHREit就可以 -->
<meta-data
android:name="com.sunit.channel"
android:value="SHAREit" />

<!-- 如果应用只有一个Activity无需声明此项,如果有多个activity,则value为游戏场景所在的主Activity路径 -->
<meta-data
android:name="com.sunit.mainActivity"
android:value="com.unityplayer.UnityActivity" />

<!-- 如果只有一个进程的应用无需声明此项, 默认包名进程. 如果多个进程的应用,需要声明支持广告的进程的名称-->
<meta-data
android:name="com.sunit.adProcess"
android:value="processName" />

<!-- 声明为 'debug' 则会使用测试模式,可以看到SDK内部调用Log,用于自测使用(正式包记得删除) -->
<meta-data
android:name="com.sunit.mode"
android:value="debug" />

7. 广告源的SDK Network依赖

广告Admob集成
在Manifest文件中配置如下内容:

<meta-data
 android:name="com.google.android.gms.ads.APPLICATION_ID"
 android:value="ADMOB_APP_ID" />

ADMOBAPPID 由 SHAREit 服务对接人提供

8. Flurry数据采集依赖

Flurry数据上报集成
在Manifest文件中配置如下内容:

<meta-data
    android:name="flurry.sdk.API_KEY"
    android:value="FLURRY_API_KEY" />

9. SD卡STORAGE权限(1.5.1.0及以后版本改为必加)

  1. 我们强烈建议对接App需要WRITE_EXTERNAL_STORAGE权限,并且须按如下样例复写,此权限有利于提升广告收入
<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        tools:remove="android:maxSdkVersion" />
  1. 权限申请我们提供了如下方法,在应用开启后的第一个Awake中调用即可:(方法内含有Id初始化相关策略,即使接入方自己申请了权限也需要调用此方法)
SHAREitSDK.SHAREitSDK.requestStoragePermissions();

10. 适配 Android 10(API级别29)

如果您的应用以 Android 10 或更高版本为目标平台,即 android:targetSdkVersion="29",请在应用的清单文件(AndroidManifest.xml)中将 requestLegacyExternalStorage 的值设为 true:

  <manifest ... >
      <!-- This attribute is "false" by default on apps targeting
           Android 10 or higher. -->
      <application android:requestLegacyExternalStorage="true" ... >
        ...
      </application>
    </manifest>

需要如此配置以使 sdk 在用户授权读写存储权限后能正常访问手机上的文件,否则会导致接入升级 sdk 功能时不能正常下载升级安装包。

10. 版本1.5.1.0及以后版本新增(极为重要,删除会导致游戏包安装冲突问题)

mainTemplate.gradle(Unity 2019.3版本开始是在launchTemplate.gradle里)中applicationId下方增加了account_type、content_authority

defaultConfig { 
    applicationId “com.xx.xx” 
    //SHAREit begin
       multiDexEnabled true
       resValue "string", "account_type", "${applicationId}.type"
       resValue "string", "content_authority", "${applicationId}.provider"
    //SHAREit end
}
⚠️ **GitHub.com Fallback** ⚠️