Godot 使用Android module 踩坑步驟,一踩就上手



作業系統:Mac OSX

由於我需要修改godot對輸出Android平台的設置,需要修改Android manifest 並且使用Android Class(Content provider) 去達到 多個應用程式共用資料,需要使用godot GitHub 上的Godot IDE source

Step 1. 打開Terminal,git clone https://github.com/godotengine/godot.git

Step 2. cd godot/

Step 3. 這時候你可以先在godot/ 資料夾內,這邊使用scons自動構建工具去安裝平台的套件套件,輸入scons看看,如果找不到,需要上網搜尋如何安裝scons。

Step 4. 安裝好scons後,輸入scons看看有幾個平台,如果沒有Android,你要先把SDK、NDK路徑先設定好,這篇給你參考。

***注意這邊我為什麼用ndk-r15c(第一坑)呢,因為我遇到這個問題***

順邊貼上我自己的設定
Step 5. 設定完成後發現輸入scons 有多一個Android平台跑出來,此時輸入
scons platform=android

Step 6. 安裝完成後,

cd godot/bin/
chmod +x godot.osx.tools.64
./godot.osx.tools.64

即可開啟Godot IDE

Step 7. 接下來要 Building the export templates

Step 8. 接下來 Installing the templates
設定debug release apk

Step 9. Setting it up in Godot,設定Adb Jarsigner Debug keystore,路徑位置都不太一樣
Step 10. 在godot/modules/ 創建 myCustomeModule 文件夾
在 myCustomeModule 文件夾中創建 src文件夾(存放Java檔)
在 myCustomeModule 文件夾中創建 config.py
在 src 中創建CustomAndroidModule.java,這個類繼承自Godot.SingletonBase。您為模塊提供的任何其他資源的資源標識符將在com.godot.game.R類中,因此您可能希望導入它。
Like this example

Step 11. Building
由於您可能修改了模塊的內容,並修改了模塊中的.java,因此您需要使用Godot的其餘部分構建模塊,因此請正常編譯android。

這將導致您的模塊被包含,.jar將被複製到java文件夾,.java將被複製到sources文件夾等。每次修改.java時,都必須調用scons。

然後,繼續編譯androidCompiling for Android的步驟 。

Step 12. 使用模塊
要使用GDScript中的模塊,首先通過將以下行添加到project.godot(專案文件夾底下)來啟用單例:
[android]
modules="org/godotengine/godot/CustomAndroidModule"
或者
直接在Project setting 內設定

Step 13. 撰寫 GD script
// 判斷是否有CustomAndroidModule module
if(Engine.has_singleton("CustomAndroidModule")):
  module = Engine.get_singleton("CustomAndroidModule")
// 執行module function
if(module):
 print(module.myFirstFunction(3,4))

***注意*** 如果有需要用到AndroidManifest執行以下步驟可能會遇到的問題



這是因為godot編譯時,是將你自己設定的AndroidManifest跟Godot IDE環境下
/Users/yang/godot/platform/android/java/AndroidManifest.xml 做結合,所以會發現 /Users/yang/godot/platform/android/java/AndroidManifest.xml 會有兩個<manifest><application> ,此時可以直接修改Godot IDE環境下的AndroidManifest改成你要的樣子,而我的做法是直接在Godot IDE環境下的AndroidManifest加入我要的ContentProvider權限。



我自己 Building the export templates 的方式是release debug版本都build一次,因為我也不知道有什麼差別,如果有好心人知道可以留言告訴我唷。

scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
scons platform=android target=release android_arch=x86

scons platform=android target= release_debug android_arch=armv7
scons platform=android target= release_debug android_arch=arm64v8
scons platform=android target= release_debug android_arch=x86


那就先寫到這邊,我有想到問題我會再補充,如果有遇到什麼問題也可以留言告訴我。

留言

這個網誌中的熱門文章

Android - 使用 adb 安装apk

Android ContentProvider 實現多個應用程式共享資料

Android TextView autosizing 自動調整大小