Unity 是一套可以支援多平台的開發引擎,那我們將 App 設計好之後,要怎樣匯出成 Android APK 呢?
流程如下:
步驟一、
先確定你有安裝好 Android 開發環境。
首先打開 Edit > Preferences...
步驟二、
開啟 External Tools,檢查你的 Android SDK Location 與 JDK Location 是否都安裝完畢,並且正確的指定位置。
若沒有的話,可以到下面網站下載。
Android SDK:http://developer.android.com/intl/zh-tw/sdk/installing/adding-packages.html
Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
步驟三、
打開 File > Build Settings。
步驟四、
選擇 Platform 裡面的 Android。
步驟五、
點擊 Switch Platform。點下後程式會自動將平台做個轉換,等待時間會依照專案大小而有所不同。
步驟六、
點擊 Player Settings...,打開 PlayerSettings 視窗後,再點開 Other Settings。
步驟七、
這邊要將 Bundle Identifier 做修改,如果用預設的話,Unity 是不會讓你匯出 APK 的。
通常大家的命名方式都是以網站的顛倒去命名的,例如:www.google.com 就會被改成 com.google.www。
步驟八、
可以匯出 APK 了,若你只是想單純的匯出 APK 的話,可以點擊 Build。
但你如果想要匯出 APK 之後,順邊將 APK 安裝置你的 Android 裝置上的話,可以點擊 Build And Run。
步驟九、
若你是要點擊 Build And Run 的時候,你必須要開啟手機中的開發人員選項(找不到該選項則直接跳步驟十),並且打開 USB 偵錯模式。
步驟十、
通常舊版的 Android 裝置上都會有這選項,但是新版的 Android 沒有。
這時候你必須開啟手機的
"設定 > 關於"
"軟體資訊"
這邊通常都是狂點 Android 版本,就可以啟動 "開發者模式" 了。
但有些廠商可能不一樣,像我是用 HTC 的,所以我必須再點擊 "更多"。
之後狂點 "建置號碼"
若以上你都還無法啟動 "開發者模式" 的話,那你就每個版本選項都點點看吧!
步驟十一、
做完以上步驟了,你還必須安裝你的 Android 裝置驅動程式。
例如,我是用 HTC 的裝置,所以我必須安裝 HTC 裝置驅動程式 "HTC Sync Manager"。
通常這類驅動程式都會預設在手機裡面,當你手機連接電腦之後,都會自動跳出詢問安裝的畫面。
步驟十二、
最後,幫你的 APK 命個名,就可以開始匯出囉~
APK 匯出之後,也可以拉到手機裡面,直接用手機的檔案總管,也是可以安裝的。
PS:記得 Android 裝置要用 USB 線連結到電腦上啊!這樣才有辦法直接安裝。

我的unity版本是目前最新版本2017.2,昨天要發佈APK卻無法,一直失敗,也安裝好環境了
你好: 請問有確認 Java JDK 是否安裝並且版本正確嗎? Android SDK 有更新至最新嗎?至少你準備打包的 SDK 版本要有。 以上路徑也必須設定完成。 Bundle Identifier 名稱有更換嗎?預設是不行的。 或許是安裝位置錯誤?可參考下面網址 http://gn02214231.pixnet.net/blog/post/205983649-%E5%AE%89%E8%A3%9D-android-apk-%E5%88%B0-100-%25-%E6%99%82%E5%A4%B1%E6%95%97 或者你可以選擇 Build 試試,不要使用 BuildAndRun,試看看能否匯出 APK 檔案。 如果都不行,可能要請你 PO 一下錯誤訊息? 或者改用 Unity 2017 以下的版本,例如 Unity 5.x 版。 謝謝。
SDK JDK 降版本試試 我也是用好久才成功匯出APK 但是完全無內容匯出測試 不過不知為什麼把安裝 安卓版本的設定調高版本就會失敗 感謝
你好: Android 版本調高會失敗,有可能是你的 Android SDK 沒有下載到這麼高版本。 又或者沒有下載到該 Android 版本,所以才會打包失敗。 或許你可以試著把所有 Android 版本都下載齊全試試。
我有兩張背景圖片一個數值 兩張圖循環 在unity 裡面跑的速度 跟 輸出 APK安裝APP之後的run的速度不同 想請問 SDK會影響嗎 ...
你好: SDK 不影響喔~ 你這邊指的速度,是指遊戲效能的速度?還是遊戲執行的速度呢? 假如說是效能的速度,例如 Unity 很順,但是匯出 APK 安裝在手機上後很頓,這是因為 Unity 是跑電腦硬體,而電腦硬體會比手機硬體還要好,所以自然會是順又快。 假如說是遊戲執行的速度,人物在 Unity 上測試時,跑步速度是很快的。但偏偏在手機上人物卻跑得異常的慢。 原因也是同上,是硬體的關係。 因為電腦硬體好,一秒鐘可以跑 60 禎,但手機比較弱一點,一秒鐘只能跑到 30 禎。 這就變成 Unity 測試時人物一秒鐘可以跑 60 步,手機上人物一秒鐘只能跑 30 步~ 自然你就會覺得速度不一樣了。 這邊你需要自己在程式碼裡面補上 "Time.deltaTime",這會讓你人物跑步速度一致。 "Time.deltaTime" 可以當作每秒鐘每一禎的間距。 硬體越好的裝置 "Time.deltaTime" 就會越少。反之硬體差的裝置 "Time.deltaTime" 就會較高。 例如 Unity 速度快,所以 Unity 上的 "Time.deltaTime" 有可能會是 0.015。 而手機比較慢,所以它的 "Time.deltaTime" 可能會是 0.03。 你原本的程式碼可能是 float speed = 100.0f; 所以 Unity 一秒鐘會跑 100.0f x 60 = 6000.0f 的距離。 而手機則是一秒鐘跑 100.0f x 30 = 3000.0f 的距離。 現在我們加上 "Time.deltaTime",float speed = 100.0f * Time.deltaTime; 所以 Unity 一秒鐘會跑 1.5f x 60 = 90.0f 的距離。 而手機則是一秒鐘跑 3.0f x 30 = 90.0f 的距離。 上面只是舉例,事實上乘上 Time.deltaTime 意思等同與每秒鐘的速度,float speed = 100.0f * Time.deltaTime 等同於每秒鐘的速度是 100.0f。 你會發現不一樣的裝置,但是人物跑步速度一樣了!! PS:加入 "Time.deltaTime" 的計算後,你的數值可能都需要調高喔~看上面範例就可以知道為什麼需要調高了。
謝謝教學! 成功了~
不客氣,能幫到忙就好!
你好我想問問 我在建立apk的時候出現以下錯誤 UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x0020e] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:181 at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00065] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:88 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) 我使用的unity版本2017.3.0 jdk1.8.0_181 sdk最新版及4.4都有下載 爬了很多文很少有人有這樣的錯誤訊息
這邊應該是你有引用到 Unity 內建的資源例如字型等等,或者引用到不存在的場景。 這邊會建議你可以到 Build Settings... 裡面的 Scenes In Build 檢查看看,是否有不存在的場景在裡面。 你可以試著把 Scenes In Build 裡面的場景全部都清掉,然後開一個空的場景,拖曳到 Scenes In Build 裡面,再嘗試打包看看。 或者開一個新的 Unity 空專案,試著打包看看,檢測環境是否設定正確。 打包匯出的地方不能在 Assets 資料夾底下。 Android SDK 資料夾位置再次檢查看看是否指定錯誤。 我只能從可能錯誤的地方給一些建議,希望有幫到你。加油!
我建立了一個新的unity專案可以成功打包 但是試著把Scenes in Build裡的場景清掉後,開一新的場景並拖曳進去,打包後仍然有同樣的錯誤訊息,一直不成功的專案是做AR的,跟AR本身有關係嗎
恭喜你成功囉!
我之後找到解決方法了,因為我疏忽前面的error,其中一項是vufloria不支援android TV,所以我只要取消player setting 裡的android TV compatibility就成功了 很謝謝你~
不會~我也沒幫到什麼忙,恭喜你成功囉!
你好,我下載了SDK但我找不到與你第2張圖一樣的SDK名稱 請問會在哪裡嘞
你可以看一下步驟四 > 步驟五,有沒有辦法切換到 Android 呢? 有可能是你的 Unity 還沒安裝 Android 套件。 如果沒辦法切換的話,Android 頁面裡面會有下載連結可以下載套件。
您好, 我前面都照著步驟去做, 不過還有ndk不知道要怎麼處理 能告訴我怎麼做嗎?? 謝謝
你好喔,NDK 可以跳過,留空白就可以了。 一樣是可以打包 Android APK 的喔!
嗨~親愛的部落客與同好夥伴們,看到大家在部落格中互動留言,真是太開心啦~ 痞客邦有個追新留言小祕技tip要偷偷告訴你喲! 只要運用簡單的小撇步,在喜愛的部落格文章中,按下【+關注】按鈕,就能在自己的興趣牆上快速追蹤各種最新動態,即時和部落客與同好夥伴們留言互動,還能探索發掘更多你可能喜歡的興趣社群新鮮事喔! >>去看看怎麼運用【+關注】https://goo.gl/xfxB4o 也歡迎大家多多關注痞客邦官方帳號,獲得更多新消息! >>去關注【痞客邦】https://goo.gl/2sEzuL >>去關注【PIXstyleMe】https://goo.gl/PBGd69
非常感謝您,非常有用!!!
不客氣,能幫到忙就好!
請問這個可以改APK的名稱嗎?謝謝!
可以的,輸出時可以決定名稱,輸出後再修改也可以,並不影響安裝。