開發手札:Unity與Android交互

     先祝賀我國疫情基本結束,感謝爲疫情奉獻熱血甚至生命的醫護人員!

     接下來進入正題。

     用unity做一個手機app遊戲基本上都需要與android和ios交互,比如調用系統函數,調用sdk等。這是unity開發基本操作不用多說,而且unity與android/ios交互的過程網上已經很多了。

     最近業餘時間一個半設計工業app差不多做完了,準備接入一些android/ios交互功能,所以記錄一下。

     ps:我其實不怎麼寫日常開發方面的博客,因爲網上很多,之所以花時間寫這篇unity與android交互,一方面是因爲我不是公司專門接sdk的開發人員,所以自己一年也就搞那麼一兩次吧,記憶力不可靠,而且android studio和xcode一段時間不用變化還是挺大的,所以記錄一下,免得忘記了;另一方面,今天一早上我被網上文章坑了兩三個小時,大部分文章都有很多細節遺漏或錯誤,所以我還是自己寫一篇博客吧,免得以後浪費時間。

     我會將操作寫的很詳細,標識也會很細緻。

     準備工具:

     1.unity2018.3.13f1

    

     2.android studio3.4.1

    

 

     需求目的:

     完成android studio(後面簡稱as)導出aar文件到unity進行功能交互

 

     具體過程:

     1.as新建項目

     

新建as項目完畢,名稱:sdktest,包名:com.tomatopotato(我獨立工作室名,無需填寫額外的產品名稱)

 

 2.引入unity的classes.jar文件

 

  找到unity安裝目錄下的classes.jar

  默認使用il2cpp版本,我想應該沒人使用mono版本打包了吧?

 

 

 拷貝classes.jar到as工程libs下

 

 

as點擊同步工程

 

 

 如果各位as工程中看不到libs等文件夾的情況下,直接右鍵右鍵右鍵jump to source就能展開所有文件列表了。

 

 3.修改as配置

 

  修改爲:

 

  這樣我們就能打包aar包。

 

  修改androidminafest.xml文件:

 

 爲了怕遮擋文本,所以我不標紅(我同時隨便添加了一個permission權限演示)。

 

 4.刪除res下不需要的文件

 刪除標藍色的文件

 

 繼續同步一下

 

5.開始寫代碼

我們隨便寫兩個功能,一個彈消息,一個打開相冊

 代碼如上

 

 6.修改activity_main.xml文件

  修改爲:

  爲了不遮擋文本,我不標紅。

 

 

  繼續同步工程。

 

  7.開始打包aar

 

  打包aar文件。

 

 

  得到aar文件包。

 

 

  隨便用個壓縮程序打開aar包,刪除掉libs/classes.jar文件

 

  8.unity工程調用演示

    創建一個unity test工程,修改android配置信息

   

   

    配製好包名,產品名。

 

   

    

   

    將as工程的aar和androidmanifest文件拷貝到unity工程plugins/android下

   

  

   打開androidmanifest.xml文件,註銷launcher語句。

  

    接下來開始寫c#代碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PhonePlugin : MonoBehaviour
{
    void Start()
    {
        
    }

    void OnGUI()
    {
        if (GUI.Button(new Rect(0, 0, 200, 200), "Toast"))
        {
            AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ajo = ajc.GetStatic<AndroidJavaObject>("currentActivity");
            ajo.Call("ShowToast", "unity msg");
        }
        if (GUI.Button(new Rect(300, 0, 200, 200), "Album"))
        {
            AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ajo = ajc.GetStatic<AndroidJavaObject>("currentActivity");
            ajo.Call("OpenAlbum");
        }
    }
}

    ok,一切就緒,打包android apk文件。

 

   

  

   得到apk文件,發送到我的一臺老舊不用的android手機上安裝。

    

     下面是真機測試:

   

     

       好了,這就是細緻的unity和android交互流程,當然只是爲了記錄演示交互做法,所以並不做複雜的功能的demo,大家需要什麼功能百度寫代碼即可。

       後話,我最近業餘時間做了一個app,對學習很有幫助,估計還要一段時間上線。

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章