untiy_Android接入sdk

参考文档:

https://blog.csdn.net/yang8456211/article/details/51356193

主要原理

1)unity里面调用android项目:
test.cs脚本
AndroidJavaClass jc;
AndroidJavaObject jo;

public void Awake() {
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
}

public void login() {
t1.text = "login call";
jo.Call("login");
t1.text = " login end ";
}


2)android项目配置:
1.新建一个安卓项目,或者做一个untiy的demo,导出安卓项目

demo的bundle名字和sdk渠道提供的、真正游戏的一致,

2.根据 sdk文档,设置好sdk安卓项目的关联,这个接入的sdk文档一般都有

设置library,有时候会出现X号,

是1)因为设置的sdk安卓项目路径有中文,无法识别,丢在demo的同级目录下面。2)然后demo有问题,不是一个正规的安卓项目


仔细看文档,把xml什么的都配置好

3.创建一个WTFSDKActivity.java脚本,必须集成UnityPlayerActivity。在里面根据sdk文档,把对应的东西都写好。



4.导出jar,只勾选新创建的这个java文件就可以了

5.将新创建的jar文件丢入untiy项目的plugins的bin文件夹下面。然后把sdk安卓项目里面的libs、assets、src全部拷贝过来,res根据Androidmainfest.xml里面的配置来拷贝,没有调用就不需要了。
Androidmainfest.xml根据计入sdk文档要求,配置好,游戏基本就ok了


3)android项目调用untiy里面的代码
UnityPlayer.UnitySendMessage("AndroidGo", "LoginCallback", result);

AndroidGo是一个GameObject物体,丢在项目的第一个场景里面,全部不销毁。
LoginCallback是物体上面的函数名字,result是参数。

5)测试bug
1.打包后,横竖屏幕切换卡死?
AndroidManifest.xml文件添加
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>

修改主Activity的configChanges,screenOrientation和游戏设置一样。
<activity android:name="com.yiyou.ysfb.WTFSDKActivity"
android:configChanges ="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
android:screenOrientation="landscape"
androi
d:launchMode="singleTask">

2.测试后发现传送数据到sdk一直卡死?


原因:


String[] msgArray = msg.split("\\|");

3)private const char SPLITCHAR = "|";
StringBuilder sb = new StringBuilder ();
sb.Append(id +SPLITCHAR);
发现拼接字符串时候 “|”为25,于是改为
private const string SPLITCHAR = "|";

4)注意做入安卓sdk的外部代码,全部用try catch包好,多加日志,以免重复打包浪费时间

5)询问渠道,sdk的相关代码是否都需要放在主线程里面?刚开始照着文档接,最后要加这个,半夜又加班! ╮(╯﹏╰)╭

this.runOnUiThread(new Runnable() {
@Override
public void run() {
}});

6).有的界面,例如退出界面,游戏自己做了,询问渠道使用他们的还是自己的,尽量都用渠道的,除非boss要求用自己的。 因为渠道总是希望用他们的东西。


猜你喜欢

转载自blog.csdn.net/xj1009420846/article/details/80053116
今日推荐