美文网首页unity3D技术分享
百度SDK Unity导出Android Studio工程与安卓

百度SDK Unity导出Android Studio工程与安卓

作者: MFGame | 来源:发表于2018-06-28 16:17 被阅读220次
    流程图

    一、安卓与Unity的通信与交互
    首先打开Android Studio新建工程名字随便起,然后在工程中新建Module,选择Android Library 后面名字也随便写。


    Module
    Module

    在Unity安装目录中找到classes.jar
    D:\Program Files\Unity 5.5.1p4\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes
    这是我的安装目录按需修改


    寻找classes

    把该文件导入刚刚在Android Studio新建的Module中的libs目录下


    导入classes文件

    下一步修改MainActivity文件让它继承UnityPlayerActivity编写Unity中所需要调用的方法
    例如在MainActivity中编写Test方法
    public String Test()
    {
    return "OK";
    }
    在Unity中写方法进行调用

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

    public class BaiduTest : MonoBehaviour
    {

    private AndroidJavaObject currentActivity;
    // Use this for initialization
    void Start()
    {
        currentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
    
    }
    
    // Update is called once per frame
    
    public void MyTest()
    {
        currentActivity.Call<string>("Test");
    }
    

    }

    这就完成了在Android Studio中创建方法 然后由Unity去调用
    那么怎么在Android Studio中调用Unity写好的方法呢?
    这常常用在接入不同种类SDK时要实现SDK中的回调函数,显然回调函数需要在Unity中实现,然后通过Android Studio进行调用。
    例如:
    Android Studio MainActivity 中的方法

    public void myinitIntersitialAd() {
    
        UnityPlayer.UnitySendMessage("BDSDK", "onAdLoaded","a3" );
    
        mInterstitialAd = new InterstitialAdManager(UnityPlayer.currentActivity, ADMOB_INTERSTITIAL_ID, new AdListener() {
            @Override
            public void onAdClosed() {
                super.onAdClosed();
                // 广告被关闭
                loadInterstitialAd();
            }
    
            @Override
            public void onAdFailedToLoad(int errorCode) {
                super.onAdFailedToLoad(errorCode);
                UnityPlayer.UnitySendMessage("BDSDK", "onAdFailedToLoad",String.valueOf(errorCode) );
                // 广告请求成功
            }
    
            @Override
            public void onAdLeftApplication() {
                super.onAdLeftApplication();
                // 广告被点击
            }
    
            @Override
            public void onAdOpened() {
                super.onAdOpened();
                // 广告打开
            }
    
            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                // 广告请求成功
                UnityPlayer.UnitySendMessage("BDSDK", "onAdLoaded","广告请求成功" );
    
            }
        });
    }
    

    其中UnityPlayer.UnitySendMessage("objName", "函数名","所传递的值");
    在这个方法中"objName"就是在Unity中物体的名称,这个可以随便起一个,通常是在Unity中建一个空物体,挂上拥有所要调用函数名的脚本,就可以了。

    Unity中对应的方法
    public class BDSDK : MonoBehaviour
    {
    public Text myDebug;
    public void onAdFailedToLoad(int errorCode)
    {
    myDebug.text = "广告请求失败" + " " + errorCode;

        // 广告请求失败
    }
    
    public void onAdLoaded(string code)
    {
        myDebug.text = code;
    
    }
    

    }

    编写完方法后,我们需要在Adroid Studio 中导出我们用来和Unity通信的aar文件,选中刚刚创建的Module 点击菜单栏中的Bulid 选择Make Module "Module 的名字"


    导出aar

    Android Studio编译成功后按照图找到aar文件


    找到aar

    现在还不能直接把该aar文件考到Unity当中,需要对其进行一些修改找到文件所在目录,修改后缀名改为rar,双击打开,双击libs,删除该目录下的classes.jar文件,然后再把该文件的后缀改回aar。


    修改aar
    删除classes

    接下来就是要将修改好的aar文件导入Unity中,首先需要在Unity中创建Plugins文件在其目录下创建Android文件然后在Android文件下创建libs文件,将aar复制到libs文件夹下。


    将修改好的aar文件导入Unity
    接下来需要编写AndroidManifest.xml文件,这个文件可以在Android Studio app目录下的src的main中找到
    找到AndroidManifest文件
    把该文件复制到unity的Android目录下 复制文件

    然后打开它对其进行修改,删除时小心不要删后面的>符号


    修改AndroidManifest文件 修改AndroidManifest文件

    到这里,如果你只需要实现Unity和Android进行通信那么就已经完成了,直接用Unity导出apk就行了,注意要在这里设定自己的包名哦AndroidManifest里面的包名也要一致。


    设定包名

    二、用Unity导出Android Studio工程
    前面的操作都做完以后,如图修改Unity的Build Settings,将Build System修改为Gradle,然后勾选Export Project 点击Export


    Build Settings的修改

    选择工程导出目录


    选择工程导出目录
    然后等待一会Android Studio工程就导出完毕了,接下来打开Android Studio 选择 Import Project 找到刚刚导出的目录点击ok
    导入工程
    导入工程

    这时将会弹出gradle版本的一些问题选择ok即可(有问题的话自行百度这里就不细讲了),继续等待一会,导入完成。按自己需求修改build.gradle文件。


    修改build.gradle
    如果打apk包时出现错误,可以尝试如图修改
    修改build.gradle

    三、用Android Studio打包
    点击Build,选择Make Project 等待一会。


    打包工程

    如图打包成功后到该目录找到apk文件


    打出apk文件

    本人对Android Studio不熟,希望以后能够学习一些Android Studio的知识,有问题大家一起探讨,谢谢!

    相关文章

      网友评论

        本文标题:百度SDK Unity导出Android Studio工程与安卓

        本文链接:https://www.haomeiwen.com/subject/rkpgyftx.html