Android實戰之Cocos遊戲容器搭建

一、前言

現在市面上很多app有遊戲中心功能,最早的有微信小遊戲和QQ小遊戲,再後來像bilibili、喜馬拉雅、愛奇藝、比心等等應用中也加入瞭遊戲中心模塊。本篇文章將介紹如何上手搭建cocos creater遊戲容器,先來看看效果:

二、準備工作

  • 安裝最新版本CocosDashboard
  • 在Dashborad下載最新版本編輯器

在Android Studio安裝NDK,我這裡安裝的是21.1.6352462,目前為止比較穩定

在CocosDashboard新建HelloWorld項目並打開運行,我這裡用的3.1.1版本

打開CocosCreator菜單欄偏好設置,在外部程序欄中設置Android NDK和Android SDK路徑

三、構建cocos遊戲.so文件

在CocosCreator菜單欄選擇項目-構建發佈,選擇發佈平臺:安卓,點擊構建,等大概幾分鐘

  • 成功後,用Android Studio打開文件夾裡生成的proj項目,並運行該項目到手機上,這裡遊戲資源加載的是proj同級目錄assets,後續,我們會將assets壓縮包zip存放在我們服務器,達到用戶下載解壓後加載啟動遊戲的目的。
  • 為瞭後續遊戲容器能加載本地filePath下的遊戲資源,需要修改JniCocosActivity.cpp裡的Java_com_cocos_lib_CocosActivity_onCreateNative方法

  • ./gradlew assembleRelease打release包, 將instantapp-release.apk後綴改成zip,解壓後獲取lib下arm64-v8a/armeabi-v7a下的libcocos.so(構建版本設置那裡可以勾選不同架構)

四、制作自己的遊戲容器

  • 創建module,包名為com.cocos.lib(為瞭和.so文件裡保持一致,不然無法調用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文件復制到module/src/main/java/com.cocos.lib下
  • 修改文件CocosActivity.java,因為遊戲頁面官方推薦用多進程來做,所以這裡退出遊戲,即將遊戲進程kill
// 加一個filePath參數
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);
}

五、總結

自此,我們遊戲容器制作完畢,我也將該篇的遊戲容器module傳到瞭jitpack,可以直接使用:

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
}
dependencies {
	   implementation 'com.github.qq326646683:cocos-creator-android:1.0.0'
}

六、如何使用

  • 文件讀寫、網絡權限
<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"/

到此這篇關於Android實戰之Cocos遊戲容器搭建的文章就介紹到這瞭,更多相關AndroidCocos容器搭建內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: