天天看點

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<AndroidJavaObject>("currentActivity");
            jo.Call("onBackPressed");
        }
}      

2.導入vuforia,制作好demo

3.修改包名

unity3d與安卓互動:unity打包aar給安卓工程調用(含有Vuforia)

4.導出as 工程

unity3d與安卓互動:unity打包aar給安卓工程調用(含有Vuforia)

As工程打包出aar

1.增加監聽傳回鍵的處理

unity3d與安卓互動:unity打包aar給安卓工程調用(含有Vuforia)

中加入代碼

@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)

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.Gradle修改

修改sdk版本号一緻,增加依賴aar(有幾個加幾個)

unity3d與安卓互動:unity打包aar給安卓工程調用(含有Vuforia)

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)