# Unity打包工具 **Repository Path**: chenxuejian/TJPackTool ## Basic Information - **Project Name**: Unity打包工具 - **Description**: 这是Unity打包工具,里面集成了各个渠道的SDK,以及各种常用SDK,调用方法接口等等。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 16 - **Created**: 2018-07-11 - **Last Updated**: 2024-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TJSDK 打包工具 ------ ## 目录 * [版本](#版本) * [文件目录](#文件目录) * [界面](#界面) * [脚本](#脚本) * [使用方法](#使用方法) * [注意](#注意) ##

版本

- 版本:Version 1.0.2 © - 持续更新 Git 地址:[点这里](https://git.oschina.net/zhuhao843/TJPackTool.git "https://git.oschina.net/zhuhao843/TJPackTool.git") - 遇到任何问题 [Q我](tencent://message/?uin=843663885&Site=&menu=yes "843663885") - 包含功能: 1. 渠道统计、友盟、TalkingData 2. 友盟分享 3. 渠道支付 4. 地区屏蔽 5. 唤醒广告 6. 广告 (1) 渠道广告与秘制广告配比 (2) 闪屏,开屏,Banner,插屏,激励插屏,激励视频,原生,唤醒 - 已接入渠道: 1. 通用 2. 4399 3. oppo 4. vivo 5. 联想 6. 百度 7. 魅族 8. TapTap 9. 好游快爆 ##

文件目录

### 说明 - 该工具包含两个主要文件夹:**[PluginsLibs](./PluginsLibs)** 和 **[TJSDK](./Assets/TJSDK)** 文件夹, - *PluginsLibs* 包含各个渠道SDK - *TJSDK* 包含打包工具、SDK数据和各种调用脚本 #### 目录 1. **[PluginsLibs](./PluginsLibs)**: 工程文件夹\PluginsLibs Android各个渠道SDK库,包含如 4399,oppo,vivo,baidu 等渠道SDK,其中 base 为通用包,用于某些没有自家SDK的渠道 2. **[TJSDK](./Assets/TJSDK)**:工程文件夹\Assets\TJSDK TJSDK 的主体部分,文件夹最外层的脚本 TJSDK.cs 包含几乎所有的调用接口,如统计,分享,广告,支付,排行等 3. **[PackTool](./Assets/TJSDK/PackTool)**: 工程文件夹\Assets\TJSDK\PackTool 打包工具主体部分,[IconLib](./Assets/TJSDK/PackTool/IconLib) 为图标库,放置各个渠道Icon,同理 [SplashLib](./Assets/TJSDK/PackTool/SplashLib) 为闪屏库( -_-#,尴尬的是第一次打包要将闪屏 [splash.png](./Assets/TJSDK/PackTool/splash.png) 手动拖到 PlayerSettings 的 Splash Image 中,[查看](./Doc/Image/splashImg.png)) 4. TJSDK文件夹下的其它文件夹可以不用看,主要是SDK调用的内部逻辑 5. **[PluginsOld](./PluginsOld)**: 工程文件夹\PluginsOld 这个文件夹没什么用,是自动生成的,可以随时自行删除 ##

界面

### 主界面 1. 选择菜单: **Tool --> 打包工具**,打开打包工具界面 2. 分享 Android 和 IOS 两大类,暂时只有 Android 渠道可用 3. 渠道信息在 PackTool 下的 **[ChannelConfig.xml](./Assets/TJSDK/PackTool/ChannelConfig.xml)** 中设置,**可自行添加参数** 4. PlayerSetting中大部分设置及要导入的SDK在 PackTool 下的 **[ChannelConfig.xml](./Assets/TJSDK/PackTool/ChannelConfig.xml)** 中设置,不清楚含义的可以看一下文件最上方的注释 4. **编辑** 功能暂时不可用 5. **仅设置** 为只设置信息,包括导入SDK,修改Build信息等,但不打包,**设置并打包** 为既设置并打出APK包 ![图1](./Doc/Image/main.png "打包工具界面") ##

脚本

#### 1. [TJSDK.cs](./Assets/TJSDK/TJSDK.cs) - **画重点!!!** 在最先执行的脚本中初始化 TJSDK(调用 TJSDK.Instance.Setup() 方法即可) 2. 初始化(脚本自行初始化统计、分享、广告、支付) 3. 广告调用: (1) 横幅:展示---ShowBanner,隐藏---CloseBanner (2) 插屏:状态---IsInsertReady,展示:ShowInsert (3) 激励视频:状态---IsIncentReady,展示:ShowIncentVideo (4) 原生:展示---ShowNative,隐藏---CloseNative (5) 开屏:展示---ShowSplash (6) 唤醒广告:设置时间---SetAwakeTime 4. 支付: (1) Android:支付---PayAndroid (2) IOS:支付---PayApple,恢复购买---RestoreApple 5. 分享: Share(三种重载方式,调用合适的方法即可) 6. 排行榜 (1) 提交分数---CommitScore (2) 展示排行榜---ShowLeardBoard 7. 退出游戏:OnExitGame #### 2. [ChannelConfig.xml](./Assets/TJSDK/PackTool/ChannelConfig.xml) 1. ChannelConfig.xml中每个Channel为一个渠道。 2. Channel下的ChannelId: 渠道标记,用于区分不同渠道及友盟统计标记等。 3. Channel下的ChannelInfo: 存储打包的关键性数据,主要为 PlayerSetting 中的设置,如产品名,包名,版本信息,Icon,闪屏等信息,其中较为重要的是宏定义 DefineSymbol 元素,这关系到SDK的逻辑,如魅族渠道同时使用广点通及玉米广告,则添加宏定义为:meizu;gdt;yumi。另一个重要的是 AndroidLib 元素,这个关系到工具将从 [PluginsLibs库](./PluginsLibs) 中导入哪一家SDK 4. Channel下的ChannelData: 存储 SDK 关键性数据,包含渠道标记、统计、分享、广告等 key 值,千万不要填错了。 也可以为某个渠道添加自定义的 key 值,如为 Oppo 渠道在 ChannelData.xml 中添加OppoKey, 在点击工具 “仅设置” 后,在 [SDKData.cs](./Assets/TJSDK/PackTool/SDKData.cs) 中自动生成 OppoKey 的变量 5. Channel下的ChannelMeta: (1)各个渠道的配置信息,如联想、百度等渠道重要的Key值需要在这里填写。 (2)闪屏广告配置、开屏广告配置. (3)友盟分享Key,友盟 QQ 分享Key,友盟微信分享回调Activity。 #### 5. [SDKData.cs](./Assets/TJSDK/PackTool/SDKData.cs) 这个脚本是打包工具根据 ChannelData.xml 中的信息自动生成的,可供 TJSDK.cs 脚本直接调用,所以如果根据需求在 ChannelData.xml 中添加的自定义的key也会在 SDKData.cs 中生成供脚本调用。 #### 6. [DataType.cs](./Assets/TJSDK/PackTool/DataType.cs) 这个脚本是我根据常用的一些key值归类的,分别为:Android,IOS和Base类,并添加中文类名,以便面板显示更加直观。也可以根据需求将自定义的key添加其中,脚本会自动识别,在面板上显示为中文名 ##

使用方法

#### 1. 重点要修改的一个数据文件: - [ChannelConfig.xml](./Assets/TJSDK/PackTool/ChannelConfig.xml) #### 2. 重点要修改的一个数据脚本文件: - [TJSDK.cs](./Assets/TJSDK/TJSDK.cs): 包含各个SDK的初始化及名类方法的调用,如:调用 InitAdLocation 方法则启用地区屏蔽,调用 InitAwake 则启用唤醒广告 。 #### 3. 重点要修改的一个Jar包文件: - [TJWX_XXX.jar](./PluginsLibs/Android_base/libs/TJWX_PPX.jar),这个是友盟微信分享的Jar,Jar包的包名需要与游戏包名相同,否则微信分享无法回调,所以不同渠道包名需要不同的Jar包。 #### 4. 打包: 点击Unity菜单栏 Tools => 打包工具,可打开打包工具界面,选择对应渠道,点击 “仅设置”,则工具只设置渠道信息,替换SDK等工作,并不打包APK文件。点击“设置并打包”,则工具在完成渠道设置后打包APK。选择“多选”选项可同时对多个渠道同时打包。 ##

注意

#### 1. 关于分享: 友盟微信分享回调注意:友盟微信分享所使用的jar包与包名是一一对应的,所以不同的项目需要根据包名重新生成其对应的jar包,否则会导致回调失败 #### 2. 关于AndroidManifest: 又是友盟的问题,AndroidManifest 文件如果包含 UMENG_APPKEY,则 UMENG_APPKEY 的 value 值需要手动修改。如果包含类似 tencent1105967531 的,那串数字要修改为友盟分享的qq的key #### 3. 关于.so文件: 如果某些渠道SDK中包含.so文件,游戏在运行时报错:'can not find xxx.so' 文件时,需要将.so文件的'Select platforms for plugin' 选项中只选中Android平台 #### 4. Unity 4.X 相关问题: (1) Unity4.x系列工程,在Plugins/libs下自定义文件夹里(**除armeabi、armeabi-v7a、x86等默认文件夹外**)放的jar包将不会打进APK,类似的IOS打包也会出现这样的问题。 (2) 在Unity5.x系列工程打出的APK正常运行,用Unity4.x系列工程打出的APK运行时却出现类似: UnityEngine.AndroidJNISafe.CheckException () 这样的错误时,说明调用的方法不可在主线程调用,只能在UI线程调用,没办法,只能修改Jar包了, 以上两点可以看出Unity5.X系列确实做了不少优化,相比起来4.X确实不太好用