簡單製作最簡單的如何引用原生函式庫
也就是打包一個jar到Unity專案中引用,包含可傳遞參數的方式接口
- 新增一個No Activity的空白專案,舉體來說大概會長得跟下圖相似,請在1.Project > 你的專案資料夾 > app > src 中找到 build.gradle
- 接下來做Android Jar匯出的相關設定修改
第一行 com.android.application 改成 com.android.library
android{ ... }
sourceSets { main { java { srcDir 'src/main/java' } } }
2.defaultConfig{} 中只保留最小版本號跟目標版本號
3.追加lintOptions
檔案後方追加,追加完之後請先不要關閉檔案
// 移除舊的 jar 檔 task deleteOldJar(type: Delete) { delete 'release/AndroidPlugin.jar' } // 匯出 jar 檔 task exportJar(type: Copy) { from('build/intermediates/bundles/release/') into('release/') include('classes.jar') // 將匯出的 jar 檔重新命名 , ex:AndroidVibrate rename('classes.jar', 'AndroidVibrate.jar') } exportJar.dependsOn(deleteOldJar, build)
- 打開Unity安裝路徑,根據你Unity版本找到下方的資料夾
5.x 版 : ../PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes
4.x 版 : ..\Editor\DataEditor\PlaybackEngines\androidplayer\release\bin - 其中根據 Unity專案 的Build Setting 中 的Player Setting > Configuration > Scripting Backend 有分為 mono 跟 IL2CPP
將找到的檔案複製到剛剛新增的Android專案,並放置到 app > libs 底下
- 對著複製進來的classes.jar點選右鍵,找到 Add As Library 的選項,點選後按確認
- 在你的專案路徑找到 app > src > main > java > 你的application domain name 後,點選右鍵新增一個 Class
- 在新增的檔案中 import com.unity3d.player.UnityPlayerActivity ,並讓該檔案之類別繼承UnityPlayerActivity
- 將你想調用的程式寫在此檔案,如果有調用到硬體的感測器,包含網路連線及藍芽,我們等等要回到Unity內追加權限設定
- Refresh Gradle projects (右方Gradle -> 選單左數第一個選項)
- 在專案路徑中找到 :app > Tasks > other , 找到 exportJar ,雙擊滑鼠左鍵執行
- 等這個跑完
- 結束後,下方視窗會出現Build Successful
- 你就可以在專案路徑底下的app > release 中找到編譯出來的 jar檔
- 完成。
- 在 Unity 新增 Asset > Plugins > Android 的路徑資料匣,並將剛剛產出的jar檔丟進去
-
找到 Unity 安裝目錄下的 AndroidManifest.xml,並一樣複製到Plugins,然後在檔案中添加我們前面android專案的package資訊
4.x 版 : ../Editor/Data/PlaybackEngines/androidplayer/AndroidManifest.xml
5.x 版 : ../Editor/Data/PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml<activity android:name="你的packagename" />
- 基本上就能直接在腳本中調用了,調用的方法基本上可以參考官方
簡單來說就是實體化一個AndroidJavaClass物件,再使用CallStatic呼叫我們寫的方法AndroidJavaClass jc = new AndroidJavaClass("你的packagename")
突然在2018內的資料夾裡找到這篇文章
雖然回頭看來整理得不是很好,但簡單紀錄一下
感謝觀看,若你能夠留下一些建議與感想
都會成為我寫文章的動力,感謝!!