这几天我们的新游戏上线了,说实话还是挺好玩的。首发的是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。
其实非常简单,在我们的实现中大概就是这样的几行代码:
// 装在广告View
popup = new PopupWindow(this);
popup.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
// banner
AdView adView = new AdView(this);
popup.setContentView(adView);
// 在屏幕下方显示广告
popup.showAtLocation(getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
集成广告之后可以像正常的 Android 工程一样打包签名,在此不表。
其实这种做法也给我们之后做Android打包提供了一个思路,可以把工程分为 Android 部分和Golang 部分,使用脚本统一打包,这样无论对 java 或者 Go 的代码进行了修改都可以使用同一个打包脚本来执行,操作上可能会简单很多。
另外发几幅我们新游戏 —— **Shoot Stack **的截图(很漂亮):
截图的分辨率有点降低,实际上高清版非常好的。由于国内的特殊原因上线不了国内市场,现在上线了 itch.io 你可以在这里下载到 MAC 版本:Shooting!Block by ntop 或者在 GooglePlay 下载 Android 版本:Android: Shoot Stackplay.google.com
有疑问加站长微信联系(非本文作者)