百度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的知识,有问题大家一起探讨,谢谢!

电商优惠券产品设计:整体框架分析

编辑导读:优惠券的作用对于电商网站来说是不可或缺的,它是保持电商活跃度和转化率的手段,了解电商优惠券的整体框架设计有助于产品工作的顺利展开。

IT设计:拿什么拯救你的信息化?

信息化的典型问题如今,信息化在企业中作用无需多言。即使是规模不大的企业,至少也会有财务系统、进销存和小型MES系统等等。大企业更是如此,信息系统的发展也是纷繁复杂,不仅覆盖营销、生产、研发、供应链、服务等业务领域,还包括人力资源、资产管理、财务、质量、办公等管理支持的辅助功能。

商弈网校开发:用户决策的不同模式及营销策略

编辑导语:影响用户决策的因素有很多,在面对不同价值、不同用途的商品时,用户会有不同的决策模式;比如你买一样很贵的商品时,你会经过多种对比,思前想后,最后决定下单;

墨子学院:外链没用吗,那是你不懂如何看出外链的价值!

所谓“内容为王,外链为皇”,尽管这样的时代早已过去,但是我们还是不能忽略外链在网站SEO优化中的地位。

旺道:微信“群邀确认”功能启用,微信营销将何去何从?

微信已成为我们生活的一部分了,可谓是:微信一小步,生活一大步…通电话后听到“张先生,你好…”就会立刻挂断电话。而且现在智能手机也能对该号码进行屏蔽。?三、微信跨圈营销时代已到来微信日活用户超过亿,在如此庞大的用户基础上,如果你只依靠自己的朋友圈、社群这条渠道销售,那么你永远成功不了。自己的圈子里再多人…。而且新功能的启用将使微信群更好的成为圈子、社群运营平台,将