Unity - Android Plugin 極簡製作

簡單製作最簡單的如何引用原生函式庫

也就是打包一個jar到Unity專案中引用,包含可傳遞參數的方式接口

  1. 新增一個No Activity的空白專案,舉體來說大概會長得跟下圖相似,請在1.Project > 你的專案資料夾 > app > src 中找到 build.gradle
  2. 接下來做Android Jar匯出的相關設定修改
    第一行 com.android.application 改成 com.android.library
     

    android{ ... }

        sourceSets {
          main {
                java {
                    srcDir 'src/main/java'
                }
            }
        }
    1.追加sourceSets

    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)
  3. 打開Unity安裝路徑,根據你Unity版本找到下方的資料夾
    5.x 版 : ../PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes
    4.x 版 : ..\Editor\DataEditor\PlaybackEngines\androidplayer\release\bin
  4. 其中根據 Unity專案 的Build Setting 中 的Player Setting > Configuration > Scripting Backend 有分為 mono 跟 IL2CPP

    將找到的檔案複製到剛剛新增的Android專案,並放置到 app > libs 底下

  5. 對著複製進來的classes.jar點選右鍵,找到 Add As Library 的選項,點選後按確認
  6. 在你的專案路徑找到 app > src > main > java > 你的application domain name 後,點選右鍵新增一個 Class
  7. 在新增的檔案中 import  com.unity3d.player.UnityPlayerActivity ,並讓該檔案之類別繼承UnityPlayerActivity
  8. 將你想調用的程式寫在此檔案,如果有調用到硬體的感測器,包含網路連線及藍芽,我們等等要回到Unity內追加權限設定
  9. Refresh Gradle projects (右方Gradle -> 選單左數第一個選項)
  10. 在專案路徑中找到 :app > Tasks > other , 找到 exportJar ,雙擊滑鼠左鍵執行

  11. 等這個跑完
  12. 結束後,下方視窗會出現Build Successful
  13. 你就可以在專案路徑底下的app > release 中找到編譯出來的 jar檔
  14. 完成。
  15. 在 Unity 新增 Asset > Plugins > Android 的路徑資料匣,並將剛剛產出的jar檔丟進去
  16. 找到 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" />
  17. 基本上就能直接在腳本中調用了,調用的方法基本上可以參考官方
    簡單來說就是實體化一個AndroidJavaClass物件,再使用CallStatic呼叫我們寫的方法
    AndroidJavaClass jc = new AndroidJavaClass("你的packagename")

     

突然在2018內的資料夾裡找到這篇文章
雖然回頭看來整理得不是很好,但簡單紀錄一下

 

 


感謝觀看,若你能夠留下一些建議與感想
都會成為我寫文章的動力,感謝!!