• 微信:WANCOME
  • 扫码加微信,提供专业咨询
  • 服务热线
  • 0769-23063100
    13027920428

  • 微信扫码访问本页

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

旺道.商弈 -> 正文

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



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



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


下一步修改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("currentActivity");

}

// Update is called once per frame

public void MyTest()
{
    currentActivity.Call("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 的名字"


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


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




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



接下来需要编写AndroidManifest.xml文件,这个文件可以在Android Studio app目录下的src的main中找到

把该文件复制到unity的Android目录下

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


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


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



选择工程导出目录



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


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



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

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



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


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

短视频矩阵推广 企业运营方案

一、企业为什么要做短视频矩阵?单账号风险大企业要做短视频矩阵,主要是为了避免单一账号存在的风险。一旦账号出现限流、降权或封号等情况,企业将失去该

适合美术机构、书法培训机构管理软件有哪些功能特点

美术、书法培训机构,是除了音乐、舞蹈、机器人编程等教育培训机构以外,提升孩子美学和文化艺术素养的素质教育机构。一家中小型的美术、书法机构,可能已

深圳大卖重金招ChatGPT人才,开出35k!

在众多行业中,跨境电商已成为ChatGPT的最强应用领域之一,从注册、使用到发现弊端,跨境人迅速完成初体验并将其用于工作。

程序员三大基础思维简谈:协议、接口和分层

不管是硬件设备、软件概念或者是网络通讯中,协议、接口无处不在,软件系统离不开分层模型。协议和分层,各种课程都有涉及,但可惜的是,很多计算机类专业

与人交往“最精明”的方式,不是请客吃饭,而是给他们3样东西

现实里,结交一个人的最好方法,是什么?其实现实里,成年人都需要了解一点这种知识。否则,光靠自己的技能,恐怕路不好走。

轻松掌握 RAID 配置:各大品牌服务器攻略(保姆级教程)

RAID 0 级别:比如服务器设备上有 4 块 4T 硬盘,配置 RAID 0 后,这4块硬盘就变成了一个整体,也就是4块硬盘 * 4T = 1... ...

系统思维——拥有看穿本质的能力

系统思考帮助我们打破原有的思维定式,纵观全局,看清事物背后的结构和逻辑,才能解决现实世界中的复杂问题——《系统思考》丹尼斯·舍伍德你一定遇到过这... ...

2024流量共生,公域做规模,私域要复利

公域和私域是共生关系,在单独探讨一方时候总不自觉地思考与另一方的关系和联动。有很多企业两者之间会有所侧重,比如重公域销售,跑通投产比就持续放大,... ...

打造个人商业IP,理清赚钱逻辑

做个人商业IP是一门稳赚不赔的生意,它是把你现有资源、业务、知识、流量、能力、经验等,加了一个超级杠杆,做了一次乘法。... ...

生意有术(NO.12):生意千万条,务实第一条

个人经验是这样的,在合作之前,我会做大量的背调,从公司、老板、产品等搜集到足够多的信息。我不会用百度去搜新闻,看官网,这些信息没多大参考价值,有... ...

分布式架构和微服务架构的区别

1、含义不同微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中。分布式系统是若干独立计算机的集合,这些计算机... ...

系统运维日常巡检都做什么-8大步骤

系统运维日常巡检是确保服务器和网络正常运行的重要任务。正常情况下系统运维日常巡检的步骤和程序:步骤一:检查硬件服务器状态:确认服务器是否在线,运... ...

SaaS ERP和传统ERP的区别在哪里?

SAAS是什么SaaS,Software-as-a-Service,软件即服务。说白了就是指用户不用再购买软件,而改用向软件提供商租用基于Web... ...

36w字!腾讯高工甩出MySQL速成手册,基础架构调优三飞

想要精通MySQL你就必须知道如何设计一个高可用可扩展的企业级MySQL数据库集群以及高性能高可用MySQL调优方法。但大多数人对于MySQL的... ...

华为发布了跨平台开发的ArkUI-X,我不允许你学不会!

就在8月7日开源鸿蒙 OpenHarmony 4.0 Beta2 发布,多平台开发框架 ArkUI-X 首发。首先介绍下啥是 ArkUI:Ark... ...

桌面应用开发常用技术栈

开发电脑桌面应用可以使用多种技术栈,具体选择取决于开发者的需求和偏好。以下是一些常见的技术栈:前端开发技术栈:通常使用桌面应用开发框架,如Ele... ...

Ideogram:一款秒杀Midjourney,免费无限生成的AI绘画神器

导读:Ideogram AI是一个文本生成图片的平台,它最大的优点就是好用、免费又没有生成限制,因此可以秒杀MJ和SD。AI绘画是人工智能领域的... ...