創作內容

15 GP

使用APK Expansion Files(OBB)來解決輸出APK大容量的限制

作者:快閃小強│2018-05-04 08:02:13│贊助:1,126│人氣:2369
※新增附加教學-RPGMV的IAP內購和Admob內置廣告的實現
PS.拉到本文最下方即可看到

※本教學圖多注意,另外也更新上架Play商店的簡單流程,
並稍微簡化了輸出APK和obb的流程
APK Expansion Files也就是大家俗稱的obb打包輸出的方式
由於在Play商店所上傳的APK檔無法超過100MB的限制的問題
所以大多數的人都用APK Expansion Files也就是obb的方式來解決
但目前為止RPG Maker MV還沒有出現用obb的方式來輸出的教學
而且就算有人在國外論壇上問obb輸出的問題 大多數的人也只會叫你
多看Android developers的APK Expansion Files的Google開發文件
但只有英文不解釋 而且對於給新手看Google開發文件也根本看不懂
但現在想使用RPG Maker MV開發手機Android APP的創作者可以
使用OBB的方式來解決APP無法上傳大容量到Play商店的問題了喔

本次的教學就直接教你從開發環境一直到輸出
APK和OBB並包含上架到Play商店的簡單流程

而Play商店目前我已經發佈一個測試版供大家測試


這邊在此提供RPG MV代客輸出APP的服務表單

Android平台使用APK Expansion Files(OBB)教學


下載並安裝 JDK

 
 

選擇 Accept License Agreemen 同意之後,就可以下載並安裝 JDK 了
(32 位元 Windows 請下載 Windows x86,64 位元 Windows 請下載
Windows x64)



這裡將以 Windows 10 來做教學, 請打開檔案總管並在左邊的「本機」按右鍵選擇「內容」

 

選擇左邊的「進階系統設定」
 
 

選擇「環境變數」並在系統變數之下按「新增」來加入以下變數
變數名稱 JAVA_HOME
變數值 C:\Program Files\Java\jdk10.0.1


 

然後在系統變數之下找到 Path 的變數,並編輯 Path 來新增以下的值

%JAVA_HOME%\bin\


 
打開「命令提示字元」並輸入 java -version 來檢測 JDK 是否安裝成功


下載並安裝 Android Studio



 
按「DOWNLOAD ANDROID STUDIO」之後,並打勾同意之後開始下載

 
執行 Android Studio 並選擇 Configure→SDK Manager


在 SDK Platforms 勾選安裝最新版的 Android 版本 這裡我是勾選Android 7.1.1 (Nougat)和Android 8.0 (Oreo)

在 SDK Tools 勾選以下的工具來安裝,紅色勾勾是基本必要的安裝 黃色勾勾
是這次要用到APK Expansion Files的安裝,之後按下 OK 之後會執行下載安裝程序

紅色勾勾(必要的)
Android SDK Build-Tools
Android Emulator
Android SDK Platform-Tools
Android SDK Tools
Google USB Driver
Intel x86 Emulator Accelerator (HAXM installer)

黃色勾勾(APK Expansion Files用)
Google Play APK Expansion Library
Google Play Biling Library
Google Play Licensing Library
Google Play services
Android Support Repository
Support Repository
GoogleAdmob Ads SDK (Obsolete) #記得要打勾ShowPackage Details喔
 

回到「環境變數」的 Path 將以下變數加入

C:\Android\sdk\
C:\Android\ sdk\tools\
C:\Android\ sdk\platform-tools\


回到「命令提示字元」並輸入 adb version 來檢測 Andorid SDK 是否安裝成


打開你的 RPG MV 的專案,並按檔案→部署,選擇 Android/iOS 之後按 OK
來輸出

 

將剛剛輸出的www資料夾裡的「audio」和「img」這兩個肥大的資料夾剪下並移動到www資料夾以外的地方並開一個新的資料夾來放「audio」和「img」資料夾
 


將www/js資料夾之下的rpg_managers.js用記事本打開修改成以下的內容


按「Ctrl+F」搜尋
 
var bitmap =this.loadNormalBitmap(path, hue || 0);
 
並取代成
var obbPath =exposureInterface.getMountedOBBPath(path);
var bitmap =this.loadNormalBitmap(obbPath, hue || 0);
 
--------------------------------我是萬惡的分隔線-----------------------------
 
按「Ctrl+F」搜尋
1.5.1以前
bitmap =Bitmap.load(path);
1.6.1以後
bitmap =Bitmap.load(decodeURIComponent(path));
並取代成
1.5.1以前
if(exposureInterface.checkPath(path)){
bitmap = Bitmap.load(path);
}
else{
bitmap =Bitmap.load(exposureInterface.getMountedOBBPath(path));
}

1.6.1以後
if(exposureInterface.checkPath(path)){
bitmap = Bitmap.load(decodeURIComponent(path));
}
else{
bitmap =Bitmap.load(exposureInterface.getMountedOBBPath(path));
}

 
--------------------------------我是萬惡的分隔線-----------------------------
 
按「Ctrl+F」搜尋
 
var bitmap =this.loadNormalBitmap(path, hue);
this._imageCache.reserve(this._generateCacheKey(path,hue), bitmap, reservationId);
 
並取代成
 
var obbPath =exposureInterface.getMountedOBBPath(path);
var bitmap =this.loadNormalBitmap(obbPath, hue);
this._imageCache.reserve(this._generateCacheKey(obbPath,hue), bitmap, reservationId);
 
--------------------------------我是萬惡的分隔線-----------------------------
按「Ctrl+F」搜尋
 
AudioManager._path           = 'audio/';
 
並取代成
 
//AudioManager._path           = 'audio/';
AudioManager._path           =exposureInterface.getMountedOBBPath('audio/');
 
--------------------------------我是萬惡的分隔線-----------------------------
 
按「Ctrl+F」搜尋
 
Graphics.setLoadingImage('img/system/Loading.png');
 
並取代成
  Graphics.setLoadingImage(exposureInterface.getMountedOBBPath('img/system/Loading.png'));
//Graphics.setLoadingImage('img/system/Loading.png');
 
--------------------------------我是萬惡的分隔線-----------------------------

下載本人修改過的Android Studio 專案的開放原始碼並解壓縮
這裡我要說一下,這邊所修改的原始Android Studio專案為國外論壇的網友TehGuy大神所開發的專案喔

然後先到我修改的Android Studio專案的資料夾目錄中找到名為local.properties的檔案並按右鍵以記事本開啟,將程式碼中的「輸入使用者名稱」改成自己電腦的使用者名稱


回到Android Studio 並按「Open an existing Android Studio project」,選擇解壓縮的資料夾專案,再按「OK」
 

這裡按「OK」就好

選「Don’t remind me again for this project」
 

將Build variants面板打開,並將下列三項都改成release
 

將www資料夾複製到解壓縮的資料夾專案之下的assets資料夾中

打開Terminal面板並輸入
C:\Users\hank8\AppData\Local\Android\sdk\tools\bin\jobb.bat -d D:\RMOu\rrmmpg\zzz\ -o D:\RMOu\rrmmpg\outside.obb -pn com.catgdra.hello -pv 1
--------------------------------我是萬惡的分隔線-----------------------------
C:\Users\hank8\AppData\Local\Android\sdk\tools\bin\jobb.bat為jobb工具的路徑位置
-d D:\RMOu\rrmmpg\zzz\為audio和img存放的資料夾
-o D:\RMOu\rrmmpg\outside.obb為輸出的檔案位置
-pn com.catgdra.hello為APP ID
-pv 1 為版本號
※這邊要注意記得要記下你的版本號等等會用到
--------------------------------我是萬惡的分隔線-----------------------------
將輸出的outside.obb重新命名為main.版本號.APP ID.obb



將android:versionName="1.0.0"之中的1.0.0改成自己目前更新的版本號
另外也將旁邊的android:versionCode="1 "之中的1改成自己目前更新的OBB版本號,記住obb和這裡的版本號一定要一樣喔


按「Ctrl+Shift+R」尋找com.catgdra.zero並全部取代為你的APP ID


在res的資料夾按右鍵並選擇New→ImageAsset



將Name的名稱改成icon
並在Source Asset選擇icon圖片之後按Next再按Finish


將res/values之下的strings.xml打開,並將
<string name="app_name">HelloCordova</string>的HelloCordova 換成自己的遊戲標題

將java/org/rpgm/filehanding之下的MVExternalStorageManager.java打開,並分別將

String obb = "main.2.com.catgdra.hello.obb";
……. + File.separator + "main.2.com.catgdra.hello.obb");

之中的main.2.com.catgdra.hello.obb改成剛剛重命名過的obb名稱
 

之後選「Build→Generate Signed APK…」開始對APP進行簽名

將資訊和密碼設定好之後按OK,並按「Next」

選擇release並將下方兩個都打勾,按Finish開始輸出APK

注意!如果以後要輸出選擇選「Build→Generate Signed App Bundle / APK…」看到這個提示的話,選擇APK並按Next就好
未來本人會介紹App Bundle這塊的部分…



之後在專案目錄之下會產生一個輸出的APK

將APK放到手機裡並安裝 並把剛才輸出好的obb放到手機設備之下的Android/obb/你的APP ID/

到這裡就算是完成了,下一步將會教你如何上架到Play商店喔
 

另外以後如果需要更新APP版本的話
打開manifests資料夾下的AndroidManifest.xml
將android:versionName="1.0.0"之中的1.0.0改成自己更新的版本號
將android:versionCode="1 "之中的1改成自己更新的OBB版本號,記住obb和這裡的版本號一定要一樣喔
將java/org/rpgm/filehanding之下的MVExternalStorageManager.java打開,並分別將
String obb = "main.2.com.catgdra.hello.obb";
……. + File.separator + "main.2.com.catgdra.hello.obb");
改成新的OBB的版本名稱
然後打開Terminal面板並輸入來重新打包OBB
C:\Users\hank8\AppData\Local\Android\sdk\tools\bin\jobb.bat -d D:\RMOu\rrmmpg\zzz\ -o D:\RMOu\rrmmpg\outside.obb -pn com.catgdra.hello -pv 1
並將-pv 1改成你自己更新的版本號,之後再把輸出的obb重新命名就好

上架到Play商店(封閉ALPHA測試)

首先到以下的網址,記得要擁有自己的一張信用卡或簽帳信用卡(VISA)喔
打勾同意之後,按下「繼續付款」
輸入你的信用卡資訊之後按下「付款」
之後選擇左邊的所有應用程式,並按建立應用程式
填寫APP的資訊之後往下拉
請在手機和平板電腦這兩種都上船遊戲截圖和圖標後按儲存草稿
之後在左邊選擇應用程式版本並往下拉到封閉測試群組並按管理
按建立新版本之後選擇要上傳的APK但記得要先同意Google Play商店的應用程式簽署才能上傳APK喔
之後上傳完之後請在右邊按+來上傳OBB
輸入該版本有哪些新功能後按儲存
之後選擇封閉式Alpha版測試並按建立清單
輸入你的清單名稱和測試的Email
到內容分級那裡並按繼續開始填分級問卷
之後完善好剩下的其他資訊之後按開始發佈Alpha測試版並等候發佈


附加教學-RPGMV的IAP內購和Admob內置廣告的實現

將我做好的Android Studio新版專案下載下來並用Android Studio開啟
當然本教學文的頭端的專案連結也一併都更新了喔
 
 
將本模板和插件都下載下來解壓縮
Android_MV.js為插件
RPG MV DEMO為範例資料夾
Cordova Template為模板資料夾
 
然後進入以下網址,申請Admob的帳戶並設定好各種帳戶資訊
 
 
到應用程式那邊新增應用程式
 
 

 
請選擇使用橫幅廣告來做測試

 
設定保持不變,並取好廣告單元名稱之後按儲存
然後記好廣告單元ID 等等會用到的

 
到[中介服務]這邊並按[新增中介服務群組]來新增一些內容
 




※但記住千萬別無聊自己的開發者帳號點擊輸出好的APP裡上方的橫幅廣告,
不然Google Admob的帳戶會遭到停用的,要注意
 
 
 
把遊戲專案放到Cordova Template模板資料夾裡,也把Android_MV.js的插件放在js/plugin/裡,打開遊戲專案根目錄的index.html並修改以下內容插入這段語法
  <body style="background-color:black">
     <script type="text/javascript"src="cordova.js"></script> #在此處加入這行語法
  <script type="text/javascript"src="js/libs/pixi.js"></script>
 
打開專案把插件管理器的Android_MV.js的插件載入並設置參數,並把廣告ID也設置上去,設置方式可以看插件的說明,然後把自己設定的產品ID給記下來等等會用到
 
 
 
 
 
部屬並輸出為Android之後將輸出的www資料夾放在Android Studio新版專案的asset資料夾裡,然後照著之前教學文的做法來分割OBB輸出
 
 
打開Google Play管理中心並登入你的開發者帳號


將應用程式授權金鑰整個複製並在Android Studio的專案用Ctrl+Shift+F找到四個名為輸入應用程式授權金鑰的地方,並都改成你的應用程式授權金鑰
 
分別在./android.json的第56、66、79行,
以及./res/values/billing_key_param.xml的第3行
都替換成你的應用程式授權金鑰

然後簽名輸出APK之後把apk和obb上傳到測試版本群組(Beta或Alpha都行)
 
到[商店發佈]的[應用程式內商品],先把商家帳戶資訊完善才能新增這些IAP的產品,在此說明一下[受管理的產品]和[訂閱項目],像購買完整版或解鎖廣告以及DLC內容等非消耗性產品,以及購買道具等消耗性產品都屬於受管理的產品這類,而訂閱項目就像是繳月費或年費這樣的就算是訂閱項目這類


 


首先按[建立要納入管理的產品],然後將剛剛自己設定的產品ID輸入上去,而且一定要跟遊戲專案設定的產品ID一致之後,把剩下的資訊也填一填,後價格的部分至少最低要設定30元以上的價格,當然接下來會教你測試購買的部分,最後儲存之前記得把狀態的[未開放購買]切換成[訂閱中]喔



回到所有應用程式並進入設定
 

 
到[帳戶詳細資料]並往下拉到[授權測試]這區塊,將需要測試支付的gmail輸入到這裡,另外自己的開發者帳號無法用於支付測試,所以建議找有開通付款方式的朋友gmail或是辦一支開通付款方式分身gmail帳號來做測試,當然加入到本APP的gmail帳戶可以不必花錢就能測試支付,但帳號記得要開通付款方式喔



大致上就這樣完成了XDD



本次教學也同步到我的小屋和線上PDF


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3977131
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 4 篇留言

不重要
請問一下大大(((゚Д゚;)))
我照著您的教學一路到下載了您修改過的Android Studio專案的開放原始碼並解壓縮了,
但是回到Android Studio按「Open an existing Android Studio project」
選擇該專案資料夾並打開後,卻只顯示「Nothing to show」,這個有辦法解決嗎(((゚Д゚;)))?

10-15 11:00

快閃小強
是有幾種可能解決的方法 一是將Android Studio更新到最新版
二是選擇File->Close Project的方式關閉當前的專案,然後會出現你第一次使用Android時候的導航頁,然後選擇Impute project的方式重新導入專案就OK了
https://www.youtube.com/watch?v=4jnoCekgHK0
10-15 11:46
小李老闆
你好,我跟著你的教學做了成功輸出apk,但安裝到手機上運行不了,出現錯誤:
Error
uncaught invalidstateerror:failed to execute 'drawimage' on 'canvasrenderingcontext2d':the htmlimageelement provided is in the 'broken' state.
這是搞錯了什麼嗎?可以怎樣解決?

09-18 14:10

快閃小強
恩...因為我這個是上架到play商店的輸出教學 如果只是單純安裝到手機上就把專案的所有內容都丟到Assets資料夾也不用多做個rpg_managers.js修改 最後再輸出就好 因為我這個教學有做分包動作09-20 16:22
小李老闆
還有就是你說尋找com.catgdra.zero替換完全找不到,是不是寫錯了?

09-18 14:16

快閃小強
然後其實這個教學已經很舊了 由於Cordova開源程式碼作者已經不再繼續維護更新Cordova 所以這個教學文也已經不再適用於現在的手機及play商店的支援09-20 16:25
小李老闆
那現在有沒有方法做到google的廣告和內購呢?

09-20 16:28

我要留言提醒:您尚未登入,請先登入再留言

15喜歡★mmmm748748 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:用蘋果的Mac系統玩RP... 後一篇:讓RPGMV網頁版也能使...

追蹤私訊

作品資料夾

anosoraMinna san
今天大家過得如何啊?作品更新了,有空來看看哦~類型是奇幻、清水耽美的唷~看更多我要大聲說昨天22:26


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】