【TalkingData SDK为例】记录Unity接入SDK,导出工程,打安卓包

进入TalkingData官网 记得注册账号哦~

1. 创建应用(准备工作)

  1. 如图依次点击
    在这里插入图片描述
  2. 平台选Android
    在这里插入图片描述
  3. 点未计算
    在这里插入图片描述
  4. 点击确定
    在这里插入图片描述
  5. 如图依次点击
    在这里插入图片描述
  6. 点击 百里登风 在这里插入图片描述
  7. 点应用管理-基本信息
    在这里插入图片描述

这个App ID圈起来,一会有用

2. SDK

在这里插入图片描述

3. 下载SDK

在这里插入图片描述

4. 点击获取

在这里插入图片描述

这里可以选择需要的功能
在这里插入图片描述
然后选择我同意(霸王条款),填写邮箱

5. 提交之后,查询邮箱邮件

在这里插入图片描述

6. 点击链接会下载一个压缩包

在这里插入图片描述

7. 双击URL

在这里插入图片描述
会跳转到github仓库
在这里插入图片描述
点击第一个zip就自动下载了

这里可能有朋友打不开这个界面,所以百度云链接如下(步骤5、6的两个压缩包都在里面)
链接:https://pan.baidu.com/s/11L_oUfcbDkoSelCFUJ2A1Q?pwd=a3uc
提取码:a3uc

8. 将Plugins和TalkingDataScripts复制到工程

在这里插入图片描述

9. 粘贴jar包到Plugins/Android目录下

在这里插入图片描述

10. 在TalkingDataScripts目录下创建脚本TalkingDataTools

在这里插入图片描述
TalkingDataTools代码如下( 其中appId在网页的应用管理 - 基本信息 - AppID 中找 ):

using System.Collections.Generic;
using UnityEngine;

public class TalkingDataTools
{
    static bool isInit = false;

    // 这里为了信息安全,所以没写
    static string appId = ""; // TD - 应用管理 - 基本信息 - AppID

    static Dictionary<string, object> _params = new Dictionary<string, object>();
	
	// 不同的平台应该使用不同的AppID,以确保数据不会乱炖
	// 并且可能有的平台打包不需要TD埋点
	// 这里默认Android、IOS埋,别的不埋
    private static bool CheckIsNormalPackageType()
    {
#if UNITY_ANDROID
		// 配置表字段TalkingData_AppID_Android
		// appId = GetTDAppId("TalkingData_AppID_Android");
#elif  UNITY_IPHONE
		// 配置表字段TalkingData_AppID_Android_IOS
        // appId = GetTDAppId("TalkingData_AppID_IOS");
#else
        return true;
#endif
        return false;
    }

    private static string GetTDAppId(string configAppId)
    {
    	// 统计全平台(IOS + Android)的AppId
    	appId = ConfigMgr.Instance.GetDefaultInfo("TalkingData_AppID_Total").string_val;
    	// 如果配置表没配这个, 说明是分开统计
        if (appId == null)
        {
            appId = ConfigMgr.Instance.GetDefaultInfo(configAppId).string_val;
            if (appId == null)
            {
#if UNITY_ANDROID
                appId = "your default Android AppId";
#elif UNITY_IPHONE
                appId = "your default IOS AppId";
#endif
                Debug.LogError($"---DefaultConfig [{configAppId}] lacks AppID data, Default TalkingData'AppID is {appId} ---");
            }
        }
        Debug.Log($"--- Your TalkingData'AppID is {appId} ---");
        return appId;
    }

    public static void Init()
    {
        if (Application.platform != RuntimePlatform.OSXEditor && Application.platform != RuntimePlatform.WindowsEditor)
        {
            if (CheckIsNormalPackageType()) return;
            // IsCheck() GetTDAppId()这两个方法注释打开,appId不能等于"",否则这里Init可能会有问题
            TalkingDataSDK.Init(appId, "Test_Init", "");
            if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
            {
                isInit = true;
            }
        }
    }

    /// <param name="system">系统ID</param>
    /// <param name="trackingEvent">事件ID</param>
    /// <param name="parameters">k属性参数, v属性值</param>
    public static void OnEvent(Protocol.System system, TrackingEvent trackingEvent, Dictionary<string, object> parameters = null)
    {
        if (parameters == null)
        {
            _params.Clear();
            parameters = _params;
        }
        parameters.Add(trackingEvent.ToString(), trackingEvent.ToString());
        OnEvent(system.ToString(), parameters);
    }

    public static void OnEvent(string eventId, Dictionary<string, object> parameters)
    {
        if (Application.platform != RuntimePlatform.OSXEditor && Application.platform != RuntimePlatform.WindowsEditor)
        {
            if (CheckIsNormalPackageType()) return;
            if (!isInit)
            {
                Debug.LogError("TD was inited, please call Init Function first...");
                return;
            }
            if (parameters != null)
            {
                foreach (var item in parameters)
                {
                    Debug.Log($"---OnEvent {eventId} : {item.Key} : {item.Value.ToString()} ---");
                }
            }
            TalkingDataSDK.OnEvent(eventId, parameters);
        }
    }
}

11. 新建场景和脚本

在这里插入图片描述
TestTalkingData代码:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TestTalkingData : MonoBehaviour
{
    [SerializeField] Text text1;
    [SerializeField] Text text2;
    [SerializeField] Text text3;
    private void Start()
    {
        text1.text = "-- Start Func --";
        TalkingDataTools.Init();
        text2.text = "-- Init End--";
        TalkingDataTools.OnEvent("Simulate_Login", new Dictionary<string, object>() 
        {
            {"Simulate_Login1830", "Simulate_Login1830"}
        });
        text3.text = "-- Simulate_Login End--";
    }
}

12. 设置(Player/Publishing Settings/Build)

在这里插入图片描述
其中LauncherManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest 
	xmlns:android="http://schemas.android.com/apk/res/android" 
	package="com.DefaultCompany.NewUnityProject2" 
	xmlns:tools="http://schemas.android.com/tools" 
	android:installLocation="preferExternal">
  <supports-screens 
		android:smallScreens="true" 
		android:normalScreens="true" 
		android:largeScreens="true" 
		android:xlargeScreens="true" 
		android:anyDensity="true" />
  <application 
		android:label="@string/app_name" 
		android:icon="@mipmap/app_icon" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="android.permission.GET_TASKS" />
      <uses-permission android:name="android.permission.RESTART_PACKAGES" />
      <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
      <uses-permission android:name="android.permission.RESTART_PACKAGES" />
      <uses-permission android:name="android.permission.GET_TASKS" />
<!--      <uses-permission android:name="android.permission.READ_SMS" />-->
<!--      <uses-permission android:name="android.permission.SEND_SMS" />-->
<!--      <uses-permission android:name="android.permission.WRITE_SETTINGS" />-->
<!--      <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />-->
  <!-- 网络状态使用,不会访问用户-->
  <!-- 网络访问权限-->
  <uses-permission android:name="android.permission.INTERNET" />
  <!-- 允许程序访问有关 GSM 网络信息-->
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <!-- 允许程序访问 Wi-Fi 网络状态信息-->
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <!-- 查看 log 日志使用,不会访问用户-->
  <!-- 允许程序读取底层系统日志文件-->
  <uses-permission android:name="android.permission.READ_LOGS" tools:ignore="ProtectedPermissions" />
  <!-- 允许一个程序打开窗口使用-->
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  <!-- 读写存储空间使用,不会访问用户-->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
  <!-- 允许应用程序读取设备外部存储空间的文件 -->
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <!-- 创建与删除文件的权限 -->
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTENS" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>

对于Build下的这几个选项,可以勾也可以不勾选

  1. 勾选的话,会在Plugins/Android目录下生成文件,配置好模板,导出AS工程,直接打开,直接打包即可
  2. 不勾选的话,打包的工程默认使用初始化的一些文件,需要手动在AS工程设置好,然后打包

如图依次选择
在这里插入图片描述
新建导出目录,并选择
在这里插入图片描述

13. 导出后,打开Android Studio

在这里插入图片描述
在这里插入图片描述
打开工程是这样的
在这里插入图片描述
使用Gradle文件同步工程
在这里插入图片描述
这里可能会有一个弹窗,选择Use Android Studio’s SDK 即可
在这里插入图片描述

除此之外,这里还可能会有很多问题,大概是Gradle版本问题,因为新机器第一次装Android Studio,有一些环境没配好,或者由于网络代理原因,需要的Gradle版本下不下来

14. 注意事项

在这里插入图片描述
在这里插入图片描述
以上两个图是理想情况下

15. 可能遇到的问题

  1. 如果不理想,看build.gradle文件
    在这里插入图片描述
    由步骤13可知7.1.2和7.5.1配合工作,下载Gradle可以去这里https://services.gradle.org/distributions/

百度云链接:https://pan.baidu.com/s/1naer-QGhT5utFl1eMmDk4w?pwd=5bsw
提取码:5bsw
这里只包含7.1-7.6和8.0

然后放到as的依赖路径下,注意下的是bin不是all

我们以7.5.1举例,查看gradle文件路径
默认安装到C盘
在这里插入图片描述
在点击使用Gradle文件同步工程后,AS可能自动下载Gradle文件,但是由于国内代理原因十有八九会连接超时,下载失败,这时找到这个文件夹(不一定叫这个名),双击打开
在这里插入图片描述
将下好的gradle手动解压到目录下
在这里插入图片描述

  1. 如果还是有错,检查你的AS安装路径
    在这里插入图片描述
  2. JDK版本1.8
  3. 还遇到一个设置代理模式的,把国外的改成国内阿里云的就行

如果还有坑就百度,笔者所遇到的问题基本都是Gradle没下好
在这里插入图片描述
如果一切安装妥当,导出工程后,用AS打开,顺理成章,特别理想

其它问题就百度吧,报错信息一搜,基本都可以解决~

16. AS打安卓包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里需要有一个keystore文件,放到导出目录下
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

17. apk装机

在这里插入图片描述

18. 接入成功!!!

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值