「Unity」與iOS、Android平台的整合:2、匯出的Android-Eclipse工程

來源:互聯網
上載者:User

標籤:

本文屬於「Unity與iOS、Android平台的整合」系列文章之一,轉載請註明出處。

Unity預設匯出的是Android-Eclipse工程,畢竟Eclipse for Android開發在近一兩年才開始沒落,使用者量還是非常巨大的。

個人認為AndroidStudio非常好用,能輕易解決很多Eclipse解決不了或者很難解決的問題。

所以我將Unity匯出的Andoid工程分為Eclipse和AndroidStudio兩部分。

不過我之後的相關內容都會使用AndroidStudio,希望依然使用Eclipse的同學儘快跟上~

 

本文主要講解Unity匯出的Android-Eclipse工程的目錄結構。

話先說在前面,這篇文章和「Unity」與iOS、Android平台的整合:1、匯出的Xcode工程 非常相似,我建議手遊開發人員將兩篇結合起來看~

 

我所用軟體的版本:

  Unity 5.3.5f1

  Eclipse 抱歉。。我現在只用AndroidStudio

 

前置步驟

第一步,建立一個新的工程 Build_to_iOS_Android

 

第二步,建立Plugins/Android/libs/Jar.jar

      Plugins/Android/libs/x86/CPP_Native.so

      Plugins/Android/libs/armeabi-v7a/CPP_Native.so

      StreamingAssets/ALL_EmptyTxt.txt

//創一個空檔案,直接改名就好了,現在是簡單樣本而已~

 

第三步,儲存一下情境,如

 

第四步,開啟PlayerSettings,修改Bundle Identifier(包名),Unity裡面不修改不讓匯出Android的~

 

第五步,選擇Android平台,Export匯出Android工程

 

第六步,開啟所匯出Android工程的檔案夾

 

 

 

進入正題

1、程式入口

任何程式都有一個入口,Unity匯出的Android工程中也不例外,通過我們可以看到,在AndroidManifest.xml檔案中,將UnityPlayerActivity設定為應用的入口。(AndroidManifest.xml是Android的設定檔之一,具體請自行搜尋~)

 

通過我們可以看到,UnityPlayerActivity是繼承了Activity,至於它是什麼我就不贅述了,大家可以看一下這一篇文章:Activity詳解(生命週期、以各種方式啟動Activity、狀態儲存,完全退出等)

 

為一個Activity的生命週期,我們可以看到系統事件存在著非常有用的監聽,在UnityPlayerActivity.java裡面我們也可以看到對應的函數,這意味著在Unity中一樣可以收到這些事件,以後我們將繼承UnityPlayerActivity,並重寫這些監聽。

 

 

 

2、C# -> C++

這就是個很尷尬的問題了,現在5.3.5的版本還不支援在Android平台下使用IL2CPP的模式,但是5.4的版本已經可以支援了,這一點我打算等5.4的版本出了再補上~

 

 

3、資源 StreamingAssets -> assets

Unity匯出Android工程後,原工程中的各種資源都被壓縮、打包、加密後存放在assets/bin/Data檔案夾中,見,這一點和iOS是一致的,網上也有很多資源解密的方法,大家有需要可以自行搜尋。

 

我們重點說一下Unity中的StreamingAssets檔案夾,關於這個檔案的作用,大家可以看一下這篇文章:Unity3D研究院之手遊開發中所有特殊的檔案夾

通過我們可以看到,StreamingAssets檔案夾中的ALL_EmptyTxt.txt檔案被完整地拷貝到assets檔案夾中,實際上不光是檔案,檔案夾也會原封不動地拷入該檔案夾。

至於這有什麼用,比如說,設定檔放在這裡,上手機調試的話可以在Android工程中直接修改配置,而不需要到Unity裡重新匯出Android工程。

 

 

4、 Plugins/Android -> libs

Plugins/Android檔案夾中通常會放一些*.jar、*.so檔案,這些檔案是什麼、有什麼用,大家可以看一下官方的文檔:Building Plugins for Android

這些檔案將拷貝至在Android-Eclipse工程的libs檔案夾中,在Android編譯時間也將被編譯。

 

 

5、unity-classes.jar、libmain.so、libmono.so、libunity.so

unity-classes.jar是unity的封裝好的一些類,如果有興趣的同學可以去反編譯看看。

libmain.so、libmono.so、libunity.so檔案是Unity寫的底層CPP,由於我們的重點不在這,就不展開講了。(這個超綱,我沒研究過~)

 

 

6、 Icon

在Unity的Player Settings是中,我們可以添加相應的Icon

 

這些Icon圖片將被重新壓縮、命名最後放入中的位置。

關於在哪邊設定icon的問題,看項目需要吧,如果覺得解析度不夠可以到匯出工程這邊添加修改~

比如:多渠道打包時,可能要多次替換Icon,寫指令碼在Android工程中自動化替換打包是一種不錯的選擇~

 

 

7、閃屏

Unity在Android是可以設定單圖片閃屏的,如。

不過Android天生是不帶閃屏這種東西的,所以APP會在第一個Activity中先顯示預先設定的圖片。想深入瞭解可以看一看這篇文章:Android進階篇之引導頁系列之Splash閃屏Logo

Unity的在Android的閃屏實現應該也是這樣處理的,注意注意!!這個思路很重要,以後我們Unity的閃屏也是這個思路做的。

 

 

8、Player Settings -> 設定

在Unity的Player Settings中存在著大量的配置,這些配置將反應到Android工程中,在中圈出了部分,這些東西並不複雜,我也就不贅述了。

 

「Unity」與iOS、Android平台的整合:2、匯出的Android-Eclipse工程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.