unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)

Unity 打包 as工程

1.监听安卓返回键,关闭unity自身activity

    void Update () {
        if (Input.GetKeyUp(KeyCode.Escape))
        {
            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject jo = jc.GetStatic("currentActivity");
            jo.Call("onBackPressed");
        }
}

2.导入vuforia,制作好demo
3.修改包名
这里写图片描述
4.导出as 工程
unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第1张图片

As工程打包出aar

1.增加监听返回键的处理
unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第2张图片
中加入代码

@Override
public void onBackPressed() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            mUnityPlayer.quit();
        }
    });
    super.onBackPressed();
}

2.AndroidManifest中去掉intent-filter 标签
防止apk出现两个icon
3.Gradle中修改

apply plugin: 'com.android.application'

改为

apply plugin: 'com.android.library'

删除
applicationId
Build > Make Project ,Android Studio 会将项目打包成 AAR 文件,并放入 build/outputs/aar 文件夹中

As工程引用aar

1.把VuforiaWrapper.aar 与打包出来的aar放在这
unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第3张图片
2.点击File->new ->New Module->import .JAR/.AAR Package
把刚放入的两个aar引入
3.AndroidManifest修改
告诉 merge 合并程序使用哪一个 Icon 和 Theme ,分别在 manifest 标签和 application 标签下添加代码:

xmlns:tools="http://schemas.android.com/tools"
tools:replace="android:icon,android:theme"

unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第4张图片
4.Gradle修改
修改sdk版本号一致,增加依赖aar(有几个加几个)
unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第5张图片
5.java代码修改
增加按钮响应,调起unity的activity

package com.example711.xx.test711_1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.test710.luoyikun.UnityPlayerActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Intent intent = new Intent(MainActivity.this, UnityPlayerActivity.class);
                startActivity(intent);
            }
        });
    }
}

6.结果
unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第6张图片
unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)_第7张图片

源工程下载地址
https://pan.baidu.com/s/19JGvGD-beQPwsgX6rOx9XA

你可能感兴趣的:(Unity3D实用技术笔记,Vuforia)