最近在写一本童话故事,欢迎点赞收藏,非常重要。给自己打个广告。以后会根据这本书开发一款游戏,文章有帮到你的话,请给书点个收藏。感谢。

  1. 接入准备 下载JDK 下载地址

接入文档 https://www.quicksdk.com/doc-516.html 基本根据这个文档走就行

隐私链接 免费地址 https://app-privacy-policy-generator.firebaseapp.com 可以根据应用名称免费生成和部署隐私链接

点击箭头操作就行

踩坑:

1.SDK相关

2.优先使用已经设置好的游戏包名 如com.gerson.game 发一个小的.aab(bundle)文件 对应Unity的设置为

3.同时需要设置好签名:

签名生成工具:

keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem

生成完成后提交到

4.特殊符号问题 及其它注意事项

android.bundle.enableUncompressedNativeLibs=true

5.Gradle 版本问题

对照子版本 将版本改成具体版本

解决方法一:安卓工程

解决方法二:更改Unity模板文件

6.Unity3D.Player.UnityPlayerActivity 冲突

使用不带2019的版本

7.Layout 文件夹下xml 文件冲突

解决方法 gradle 下添加 implementation 'androidx.cardview:cardview:1.0.0'

  1. DownLoad ServerConfig Error Unable to complete SSL connection url xxxxxxxx
    可能是VPN问题 目前解决方案是将服务器放在了海外
  2. 包名注意事项 出包路径不要包含中文 包名不要含有空格或者特殊字符
  1. aab 文件转 apks 及apks安装



在当前目录下进行CMD
java -jar bundletool-all-1.7.1.jar build-apks --bundle=MagicFantasyAndroidBUSINESS_2022_07_08_14_32_7.7.7.aab --output=MagicFantasyAndroidBUSINESS_2022_07_08_14_32_7.7.7.apks --ks=foo.keystore --ks-pass=pass:9r65uy --ks-key-alias=aiq61j --key-pass=pass:pj9s44


在当前目录下进行CMD
java -jar bundletool-all-1.7.1.jar install-apks --apks=MagicFantasyAndroidBUSINESS_2022_07_08_14_32_7.7.7.apks

  1. google aab文件大于150M

配置好路径

以上这种方式只能buildAPk 针对上架Google商店不适用

11.1对.aab文件分包解决方案

中文构建指导:

大致思路:将资源打包成AssetBundle 然后对AssetBundle 进行分类:(资源的分类思路可以在自己做资源管理的时候提供参考 Assetbundle必须以字母开头,并且只能包含字母、数字和下划线)

Install-time:嵌入在程序包里面的

Fast-follow:在应用程序安装时快速自动下载的

On-demand:一开始不会下载,直到有对应的下载请求是才下载的

11.2操作:UI配置

点击AddFloder 选择AssetBundle存在的文件夹 (不要删除.manifest文件和加密 否则无法识别),对具体的AssetBundle文件进行设置类型(Install-time、Fast-follow、On-demand)

只需要将打好的Asset Bundle文件拷贝的StreamingAssets目录即可。这也是正常打APK包需要的步骤,因此接入项目非常的简单,而且可以正常上架,无需考虑150M包大小的限制。

11.3操作:代码配置

public void ConfigureAssetPacks {

// Creates an AssetPackConfig with a single asset pack, named

// examplePackName, containing all the files in path/to/exampleFolder.

var assetPackConfig = new AssetPackConfig();

assetPackConfig.AddAssetsFolder("examplePackName","path/to/exampleFolder",AssetPackDeliveryMode.OnDemand);

// Configures the build system to use the newly created assetPackConfig when

// calling Google > Build and Run or Google > Build Android App Bundle.

AssetPackConfigSerializer.SaveConfig(assetPackConfig);

// Alternatively, use BundleTool.BuildBundle to build an App Bundle from script.

BuildBundle(new buildPlayerOptions(), assetPackConfig);

}

11.4 资源加载

12 GooglePlay游戏服务相关配置

13 Google Cloud Platform 角色权限配置

14 Google 测试用户登录问题 403 access_denied

添加的测试用户 不能够被删除 注意不要添加不可被识别或者不可靠的

15 支付

16 Facebook 登录注意事项

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

keytool -exportcert -alias aiq61j -keystore "D:\GoogleJarReference\foo.keystore" | openssl sha1 -binary | openssl base64

使用测试用户登录

17.firebase 接入踩坑

https://maven.google.com 大部分库都可以在这里下载到 aar文件


firebase解决无法打包问题:

导入firebase插件后:

1.删除firebase相关的编辑器文件夹

2.移除掉所有Firebase Resolve的配置信息

3.修改 mainTemplate.gradle

4.新建空项目导入firebase插件 选择自动分析插件 自动下载

Plugins下面会自动下载需要的aar包,然后选择com.google.firebase.firebase-analytics-unity-9.2.0 com.google.firebase.firebase-app-unity-9.2.0 复制到自己的工程中对应一样的目录





方法数量超过64K问题解决

trouble writing output:

Too many field references: 131000; max is 65536.

You may try using --multi-dex option.

解决方法一 (舍弃部分Android5.0一下的用户约2%) 将发布安卓的MinimumAPILevel 设成21

  1. aar和工程class aar冲突

解决方法:

19.息屏问题

1.

2主Activity 添加Them配置 valuse下添加syles.xml文件

上面的布局有个缺陷 就是无法去除刘海屏 解决方法:套用Unity 官方的布局

20启动有短暂横屏问题

主要思路是改变主activity的横竖屏

21.Google商店配置信息设置

22.gradle inited fail

检查C盘是否满了

24 GooglePlay 登录需要Play游戏服务处于发布状态

25 facebook 开发者无法确认 app-ads.txt问题

facebook要是上线状态 谷歌链接如果没有开放注册或者开放测试,是无法访问的

  1. 内存无限上涨问题

因为英雄残影不断开辟内存创建mesh,导致重复产生1.7M的mesh网格数据,同时也因为在面板中将mesh的GameObject隐藏了,导致无法肉眼可见的定位到问题。

解决方法:使用残影对象池对残影进行重复利用


26. Firebase message接入

新建空工程,导入firebasemessage UnityPackage,拷贝Firebase文件夹到现有工程,删除Editor目录


复制如下图所示目录的文件到工程目录

修改文件 AndroidManifest mainTemplate


AndroidManifest 文件添加

mainTemplate 文件修改

27. 谷歌审核被拒问题


修改为:



29.google 移除Http允许明文传输配置

sdk默认支持http明文传输,如果需要移除http明文传输支持
在主module的res/xml目录下创建network_security_config.xml文件,内容如下
注意:文件名必须为network_security_config.xml

Unity 中的处理为:
在unity对应android res xml目录下创建这个文件
Assets\Plugins\Android\res\xml


30接入安卓系统分享

30.1 Plugins/Android 目录下加入 ShareMgr.java 文件


30.2修改mainTemplate.gradle 为解决"androidx.core.content.FileProvider" packeage引入问题 (因为使用了androidx 导致 implementation 'com.android.support:support-compat:28.0.0 不生效)

修改 (为解决 主版本53比52新,52是此编译器支持的最高主版本 报错)

android {

compileSdkVersion **APIVERSION**

buildToolsVersion "30.0.2"


30.3 mainTemplate.gradle增加

//分享需要接入的

implementation 'androidx.core:core:1.6.0'

30.4 AndroidManifest 增加provider 在Application节点下

因为本项目使用了第三方的arr包中 包含了这部分 本项目的这部分直接删除掉

30.5 Unity工程下加入以下代码

30.6 Unity工程Plugins下加入file_paths xml文件


31 Installed Build Tools revision 33.0.1 is corrupted. Remove and install again using the SDK Manager

打开 Android SDK 安装目录下的 build tools 文件夹, 将 d8.bat 文件名修改为 dx.bat。同样道理找到 build tools 目录中的 lib/d8.jar,将文件名修改为dx.jar。 回到Android Studio重新打包,这个错误就不会再出现了。

build-tools/d8.bat -> build-tools/dx.bat

build-tools/lib/d8.jar -> build-tools/lib/dx.jar

总结

使用Unity接入SDK应该新建一个或者多个工程去做接入demo,这样修改和发布和测试都十分简便 大大减少时间和试错成本