這幾天我們的新遊戲上線了,說實話還是挺好玩的。首發的是MAC版本,這兩天發布了Android版本,Android版本的盈利方式主要考慮就是廣告。此處記錄一下我們在整合廣告時候的一些經驗。
我們的遊戲引擎底層是基於 Gomobile 來打包的,但是 Gomobile 並沒有提供任何方式來整合第三方的jar包,雖然可以通過 Go->Cgo-Java 的方式來調用java代碼,但是卻無法添加新的java代碼,解決方案其實非常簡單,直接建立一個 Android 工程,然後把打包後的 .so
檔案烤包到 jniLibs
目錄,然後就可以直接運行這個 Android 工程了。
以下是具體的實現細節:
- 建立一個 Android 工程
- 複製 Gomobile 中的 GoNativeActivity.java 到新的工程
- 複製使用 Gomobile 打包的
.so
檔案到 jni 目錄
- 配置
AndroidManifest.xml
使用複製來的 Activity
編譯運行,此時可以發現 Android 工程已經可以愉快的運行我們的 Go 項目了。至於 .so
檔案怎麼來的呢?可以使用 gobind
或者直接從 gomobile build
打包 .apk
檔案中解壓出來。
接下來就是添加廣告,添加廣告的過程和普通的 Android 工程添加廣告沒有任何區別。我們把廣告添加在 GoNativeActivity.java 中,需要的注意的一點是,這個Activity繼承自 NativeActivity
是沒有View的階層的,一般的解決方案是使用一個 PopupWindow 來容載廣告的View。
其實非常簡單,在我們的實現中大概就是這樣的幾行代碼:
// 裝在廣告Viewpopup = new PopupWindow(this);popup.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));// bannerAdView adView = new AdView(this);popup.setContentView(adView);// 在螢幕下方顯示廣告popup.showAtLocation(getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
整合廣告之後可以像正常的 Android 工程一樣打包簽名,在此不表。
其實這種做法也給我們之後做Android打包提供了一個思路,可以把工程分為 Android 部分和Golang 部分,使用指令碼統一打包,這樣無論對 java 或者 Go 的代碼進行了修改都可以使用同一個打包指令碼來執行,操作上可能會簡單很多。
另外發幾幅我們新遊戲 —— **Shoot Stack **的(很漂亮):
Shoot Stack
的解析度有點降低,實際上高清版非常好的。由於國內的特殊原因上線不了國內市場,現在上線了 itch.io 你可以在這裡下載到 MAC 版本:Shooting!Block by ntop 或者在 GooglePlay 下載 Android 版本:Android: Shoot Stackplay.google.com
googleplay.jpeg
油管視頻:https://youtu.be/MGd_QJ_nahU