安卓(Android) link
Ren’Py支持運行安卓操作系統的設備,比如智慧型手機和平板電腦。由於這些設備並不100%支持Ren’Py的所有函數,在那些設備運行的包會做最小化修改。
與Ren’Py引擎分開下載的RAPT程序——Ren’Py安卓打包工具,可以創建安卓的測試版和正式版打包文件。
Ren’Py可以在安卓5.0或更高版本的系統上,更老的設備可能會缺少運行遊戲的足夠資源。
語言要求 link
部分Ren’Py在安卓平台使用的庫需要通過GNU Lesser/Library General Public License的認證。創作者會需要遵守Ren’Py生成版的認證規則。我們相信下列包含在app描述裡的語言能夠滿足需求,不過最好能找個律師確認一遍。(譯者註:建議把中英文都寫上。)
This program contains free software licensed under a number of licenses, including the GNU Lesser General Public License. A complete list of software is available at https://www.renpy.org/l/license/.
這個程序包括一些證書下的自由軟體認證,包括GNU Lesser General Public License。完整的軟體列表參見 https://www.renpy.org/l/license/.
用戶指南 link
在安卓上啟動一個Ren’Py遊戲時,會執行下列按鍵綁定:
- Home
返回到安卓home界面,Ren’Py遊戲進程掛起。作為掛起過程的一部分,Ren’Py會自動存檔。如果需要的話,用戶回到遊戲時還可以自動讀檔。
- Menu
喚起一個遊戲內菜單,並返回遊戲。
- Back
回滾。
- Volume Up, Volume Down
控制安卓的媒體音量。
平台差異 link
在Ren’Py支持的,基於觸控螢幕的安卓平台和基於滑鼠的平台之間還是有很多重要的差異。幾個重要的安卓軟硬體差別在於:
觸控螢幕被看作是有一個滑鼠的設備。只不過,只有在用戶點擊螢幕時才會產生滑鼠事件消息。
播放影片只支持全螢幕模式,並且只能使用安卓設備支持的媒體格式。請參閱 這個頁面 查看所有支持的影片格式列表。
文本輸入模組(比如
renpy.input()
)將受到輸入法的限制,不能完全正常工作(西方語言應該可以,其他語言可能存在問題)。
除此之外,還有一些由於人為因素導致的差異。
由於安卓智慧型手機可能比電腦顯示器小,需要增大字體。
由於觸控輸入不如滑鼠輸入精確,所以基於觸控螢幕的按鈕需要比基於滑鼠的按鈕更大。
為了幫助創作者適應這些差異,Ren’Py會給予設備螢幕尺寸和性能,針對安卓自動選擇界面變化。詳見 界面變種 。
測試和模擬 link
處於測試需求,Ren’Py支持三種安卓模擬模式。這些都通過啟動器的安卓界面接入。
- Phone
這個模式模擬一台安卓手機。觸控模式通過滑鼠實現,但是不過僅在滑鼠左鍵按下的情況下有效。Esc鍵映射為menu按鍵,PageUp鍵映射為back按鍵。
- Tablet
這個模式模擬一台安卓平板。觸控模式通過滑鼠實現,但是不過僅在滑鼠左鍵按下的情況下有效。Esc鍵映射為menu按鍵,PageUp鍵映射為back按鍵。
- Television
這個模式模擬一台基於電視的安卓設備終端。按鍵映射為遠程或控制器輸入,方向鍵提供了導航功能。select鍵是回車,Esc鍵是菜單,PageUp鍵是back。
這個模式會在“電視機盲區”區域顯示一個輪廓。所有“電視機盲區”區域的畫面在所有電視上都不能顯示。
這些模擬器可以用於快速測試項目,當然最好能在真實的硬體上做測試。模擬器不處理那些人為因素導致的事件,比如用戶的“胖手指”。
生成安卓應用程式 link
Ren’Py包含一些工具能幫助創作者以包(package)為中心進行安卓遊戲開發。在這個過程中,創作者會使用一台電腦生成一個安卓的包(package)並上傳到創作者自己的設備上。創作者可以像其他安卓應用程式一樣運行這個遊戲。如果運行無誤,就可以把這個包上傳到Google Play等app商店了。
生成一個安卓應用程式包含4個步驟:
下載和安裝Java Development Kit和安卓USB驅動(下載連結在後面)。
使用啟動器(launcher)安裝安卓SDK。
使用啟動器(launcher)創建金鑰(key)。
使用啟動器進行安卓生成配置。
使用啟動器生成安卓應用程式。
一旦你完成了這些步驟,就能得到一個可以運行的安卓包。當你修改了某個遊戲的配置或者完整配置一個新遊戲時,只需要執行步驟3;如果你要重新生成一個包,通常只需要執行步驟4。
步驟1:安裝依賴組件 link
在你生成包(package)之前,總共有3種東西需要手工下載和安裝
Java Development Kit. Java開發工具包(Java Development Kit (JDK)) 包含一些RAPT需要的工具。 RAPT需要使用這些工具,包括用於生成金鑰(key)和簽名包的工具。JDK的下載網址為:
需要下載的是版本為21的JDK。
請注意,關注開發者的JDK與關注用戶的JRE是不同的。而創作者需要JDK創建安卓包。
安卓設備 創作者在開發時需要對設備進行配置。首先需要啟用設備的開發者模式,並且為電腦配備安卓開發環境。如何設置電腦的說明可以查看下面的連接:
也可以使用app的x86_64版本鏡像,在安卓模擬器上運行程序(注意,模擬器不支持x86版本的鏡像)。關於配置模擬器的內容超出了此文件的範圍。
步驟2:配置安卓SDK和開發環境 link
下一步是配置安卓SDK和你開發環境的部分。這步包括:
檢查JDK是否正確安裝。
安裝安卓SDK。
使用安卓SDK安裝合適的開發工具包。
這步需要接入網路。
執行這個步驟時,選擇Ren’Py啟動器中安卓界面的“安裝SDK”。 RAPT會即時報告它正在做的工作。它還會將各類許可證資訊。
如果不想每次都下載SDK,可以創建一個名為“sdk.txt”的文件,把已安裝的SDK路徑寫在該文件中。
完成以上步驟後,點擊“生成金鑰”,以生成對應的安卓和Bundle需要的金鑰(key)。
Warning
RAPT生成的金鑰使用一個標準密碼創建。你需要確保自己擁有這些文件的權限。
你應該將android.keystore和bundle.keystore文件保存在一個安全的地方。 你還應該將保存這個金鑰的備份,因為沒有這個金鑰的話,你就不能上傳生成的應用程式。
創建安卓金鑰時,Ren’Py會把金鑰文件備份在腳本文件的相同備份目錄下。避免你每次都自己額外備份。
如果你想要使用自己的金鑰,配置遊戲時,編輯 android.json
文件,將update_keystores設置為false。
然後編輯 rapt/project
中的 local.properties
和 bundle.properties
,指向你自己的對應文件。
步驟4:配置遊戲 link
生成一個包(package)之前,你必須向Ren’Py提供一些關於遊戲安卓版本的資訊。在Ren’Py啟動器的安卓界面,選擇“配置”。
如果你需要修改這些資訊,只需要再次運行configure命令。之前的配置選項已經被記住了。
步驟5:生成應用包並安裝 link
最後,你可以生成應用包並安裝了。 你可以在下面兩種模式中任選其一:
- Play Bundle
Play Bundle發布包會以Android App Bundle(AAB)格式發布,適合直接上傳到Google Play商店。 也可以在啟用了Google Play套件的安卓設備上直接安裝。
Play Bundle的最大檔案大小為2GB,並會分割為4個最大500MB的包文件。 不過4個包文件分割本身可能也是問題,不能把某個遊戲分割為5個300MB的包,而必須分割為4個。
- Universal APK
Universal APK發布包適合直接在安卓設備上安裝,無論是通過Ren’Py、ADB、其他安卓應用商店或直接從網路上下載。
Universal APK發布包可以直接使用最大2GB的文件。對內容沒有其他限制。
有三種命令可以讓你在多種性能組合下生成安裝包,直接安裝到設備上,或測試運行。
如果要在不同的release模式之間切換,需要卸載app。
體積巨大的遊戲 link
現在可以生成容量超過2GB的遊戲了。本質是生成一個很小的可運行包或通用APK包,遊戲的其他部分通過web伺服器下載。
圖示和presplash圖片 link
圖示 link
Ren’Py使用遊戲基目錄中的兩個文件生成app圖示。
- android-icon_foreground.png
圖示的前景層。這應該是一個帶透明度的432×432像素圖片。
- android-icon_background.png
圖示的背景層。這應該是一個完全不透明的432×432像素圖片。
安卓的自適應圖示機制是這樣工作的,將兩個圖示放在至少132×132像素的區域中並中央對齊,然後將前景層蓋在背景層上。 有可能在這個區域之外的圖像也會顯示,但也可能會被遮擋住。最好在安全區域之外還預留一些出血位(bleeding)。 當拖拽圖示時,兩個圖層可能會保持相對位置有一點移動。
關於自適應圖示的更多資訊,請查看:
注意那裡的1dp實際上對應螢幕上4個實際像素。
當生成應用程式時,Ren’Py會將這些文件轉換為不同設備的適用尺寸,並為那些支持自適應圖示的設備生成靜態圖示。
預啟動畫面 link
預啟動畫面(presplash)是在Ren’Py完全載入之前顯示的畫面,比主啟動界面(splashscreen)更早顯示。 在安卓設備上,預啟動畫面特別重要,尤其是Ren’Py首次運行時需要較長時間解包運行使用的支持文件。
- android-presplash.jpg
當app載入時使用的圖片。該圖片應該有1像素的單色邊緣。 顯示該圖片時,圖片將保持寬高比縮放到近可能大的程度,如果無法覆蓋整個螢幕幕則用邊緣的單色填充。
- android-downloading.jpg
Google Play Asset下載資源時使用的圖片。該圖片應該有1像素的單色邊緣。 顯示該圖片時,圖片將保持寬高比縮放到近可能大的程度,如果無法覆蓋整個螢幕幕則用邊緣的單色填充。
距離底部、左側和右側各20像素的位置將顯示一個20像素高的進度條,展示下載進度。
Pyjnius link
運行在安卓設備上時,可以使用 Pyjnius 庫。 這個庫允許高階開發者調用安卓的庫。
使用時首先需要啟用一個main的實例。方法可以在 org.renpy.android.PythonSDLActivity 類的mActivity欄位中找到。 例如:
init python:
if renpy.android:
import jinus
mActivity = jnius.autoclass("org.renpy.android.PythonSDLActivity").mActivity
else:
mActivity = None
權限許可 link
Ren’Py自身不要求額外的運行權限,但如果創作者的遊戲要使用Pyjnius調用安卓,就需要申請權限許可。 Ren’Py包含一個變數和兩個函數,用於與安卓選線系統交互。
- build.android_permissions = [ ] link
這是一個字串列表,其中每個字串都指定了某項安卓許可權限。例如,“android.permission.WRITE_EXTERNAL_STORAGE”。 這樣直接聲明了應用程式需要那些權限。接著就需要使用 renpy.check_permission 和 renpy.request_permission 行數申請具體的權限。
- check_permission(permission) link
檢查安卓是否已授予該應用程式某個權限。
- permission
表示具體權限許可名稱的字串,例如“android.permission.WRITE_EXTERNAL_STORAGE”。
如果已授權則返回True,如果未授權或運行平台並非安卓則返回False.
- request_permission(permission) link
向安卓申請向該應用程式授予權限。用戶可能會受到跳出視窗提示授權。
- permission
表示具體權限許可名稱的字串,例如“android.permission.WRITE_EXTERNAL_STORAGE”。
如果已授權則返回True,如果未授權或運行平台並非安卓則返回False.