当前位置:   article > 正文

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

【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>();

    private static bool IsCheck()
    {
    // 根据平台类型选择是否初始化TalkingData(视项目要求而定)
    // 这里默认安卓或IOS会初始化
#if UNITY_ANDROID || UNITY_IPHONE
        return false;
#else
        return true;
#endif
    }

    public static void Init()
    {
        if (Application.platform != RuntimePlatform.OSXEditor && Application.platform != RuntimePlatform.WindowsEditor)
        {
            if (IsCheck()) return;
            TalkingDataSDK.Init(appId, "Test_Init", "");
            if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
            {
                isInit = true;
            }
        }
    }

    public static void OnEvent(string eventId, Dictionary<string, object> parameters)
    {
        if (Application.platform != RuntimePlatform.OSXEditor && Application.platform != RuntimePlatform.WindowsEditor)
        {
            if (IsCheck()) 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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

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--";
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

对于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. 接入成功!!!

在这里插入图片描述

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/110066
推荐阅读
相关标签
  

闽ICP备14008679号