Android實(shí)戰(zhàn)之Cocos游戲容器搭建
一、前言
現(xiàn)在市面上很多app有游戲中心功能,最早的有微信小游戲和QQ小游戲,再后來像bilibili、喜馬拉雅、愛奇藝、比心等等應(yīng)用中也加入了游戲中心模塊。本篇文章將介紹如何上手搭建cocos creater游戲容器,先來看看效果:
二、準(zhǔn)備工作
- 安裝最新版本CocosDashboard
- 在Dashborad下載最新版本編輯器
在Android Studio安裝NDK,我這里安裝的是21.1.6352462,目前為止比較穩(wěn)定
在CocosDashboard新建HelloWorld項(xiàng)目并打開運(yùn)行,我這里用的3.1.1版本
打開CocosCreator菜單欄偏好設(shè)置,在外部程序欄中設(shè)置Android NDK和Android SDK路徑
三、構(gòu)建cocos游戲.so文件
在CocosCreator菜單欄選擇項(xiàng)目-構(gòu)建發(fā)布,選擇發(fā)布平臺(tái):安卓,點(diǎn)擊構(gòu)建,等大概幾分鐘
- 成功后,用Android Studio打開文件夾里生成的proj項(xiàng)目,并運(yùn)行該項(xiàng)目到手機(jī)上,這里游戲資源加載的是proj同級(jí)目錄assets,后續(xù),我們會(huì)將assets壓縮包zip存放在我們服務(wù)器,達(dá)到用戶下載解壓后加載啟動(dòng)游戲的目的。
- 為了后續(xù)游戲容器能加載本地filePath下的游戲資源,需要修改JniCocosActivity.cpp里的Java_com_cocos_lib_CocosActivity_onCreateNative方法
- ./gradlew assembleRelease打release包, 將instantapp-release.apk后綴改成zip,解壓后獲取lib下arm64-v8a/armeabi-v7a下的libcocos.so(構(gòu)建版本設(shè)置那里可以勾選不同架構(gòu))
四、制作自己的游戲容器
- 創(chuàng)建module,包名為com.cocos.lib(為了和.so文件里保持一致,不然無法調(diào)用c方法)
- module的清單文件加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- 將/Applications/CocosCreator/Creator/3.1.1/CocosCreator.app/Contents/Resources/resources/3d/engine-native/cocos/platform/android/java/libs拷貝到module/libs下
- module下build.gradle添加
implementation fileTree(include: ['*.jar'], dir: 'libs')
- 將.so文件放在module/src/main/jniLibs/下
- 將/Applications/CocosCreator/Creator/3.1.1/CocosCreator.app/Contents/Resources/resources/3d/engine-native/cocos/platform/android/java/src/com/cocos/lib下的java文件復(fù)制到module/src/main/java/com.cocos.lib下
- 修改文件CocosActivity.java,因?yàn)橛螒蝽撁婀俜酵扑]用多進(jìn)程來做,所以這里退出游戲,即將游戲進(jìn)程kill
// 加一個(gè)filePath參數(shù) private native void onCreateNative(Activity activity, AssetManager assetManager, String obbPath, int sdkVersion, String filePath); // 外部傳入游戲資源路徑 protected String filePath() { return ""; } @Override protected void onCreate(Bundle savedInstanceState) { ... onCreateNative(this, getAssets(), getAbsolutePath(getObbDir()), Build.VERSION.SDK_INT, filePath()); } @Override public void onBackPressed() { super.onBackPressed(); System.exit(0); }
五、總結(jié)
自此,我們游戲容器制作完畢,我也將該篇的游戲容器module傳到了jitpack,可以直接使用:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
dependencies { implementation 'com.github.qq326646683:cocos-creator-android:1.0.0' }
六、如何使用
- 文件讀寫、網(wǎng)絡(luò)權(quán)限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
- 下載游戲zip并解壓
- 繼承CocosActivity,并將解壓后的路徑賦值給filePath
class CocosGameActivity: CocosActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun filePath() = intent.getStringExtra("path") }
清單文件:
<application> <meta-data android:name="android.app.lib_name" android:value="cocos" /> <activity android:name=".CocosGameActivity" android:process=":cocos"/
到此這篇關(guān)于Android實(shí)戰(zhàn)之Cocos游戲容器搭建的文章就介紹到這了,更多相關(guān)AndroidCocos容器搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android無需root實(shí)現(xiàn)apk的靜默安裝
這篇文章主要介紹了Android無需root實(shí)現(xiàn)apk的靜默安裝 的相關(guān)資料,需要的朋友可以參考下2016-01-01Android按鈕按下的時(shí)候改變顏色實(shí)現(xiàn)方法
這篇文章主要介紹了Android按鈕按下的時(shí)候改變顏色實(shí)現(xiàn)方法,有需要的朋友可以參考一下2014-01-01Android Application存取公共數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了Android Application存取公共數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07Android實(shí)現(xiàn)系統(tǒng)打印功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)系統(tǒng)打印功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12通過實(shí)例簡(jiǎn)單講解Android App中的Activity組件
這篇文章主要介紹了通過Android App中的Activity組件,包括Activity的定義和繼承以及啟動(dòng)等基本知識(shí),需要的朋友可以參考下2016-04-04Android SpannableString設(shè)置超鏈接、顏色、字體等屬性
這篇文章主要介紹了Android SpannableString設(shè)置超鏈接、顏色、字體等屬性的相關(guān)資料,需要的朋友可以參考下2017-01-01