发布时间:2025-12-09 18:14:03 浏览次数:4
第一次接SDK踩了不少坑,分享出来,如有错误或者不足之处,希望大家理解和指出!
一. 配置android studio相关环境
出现问题可自行百度。如果以前配置过eclipce的环境要小心,android studio的环境最好用自带的相关SDK和NDK配置android studio环境。安卓环境的成功就是SDK成功的一半啊!
二. 配置沃SDK的androidManifest.xml文件
注意:沃的SDK最好要下载新的,不然会支付不成功,或者其他找不到类什么的问题,接的沃SDK版本是unipaysdk_4.1.3的任意支付,此版本的SDK缺少
<activity android:name="com.unicom.wostore.unipay.paysecurity.PayActivity" android:launchMode="standard" android:exported="true" android:configChanges="screenSize|orientation"></activity> 这些配置,会支付失败,加上即可!跟着沃SDK自带的gameSimple的manifest.xml文件来,替换成相应的即可。如果遇到首行的package等出错可以先把package,versionCode,versionName注释掉,这里涉及到命名相关会在build.gradle里面做处理的,如果不注释掉,点击该页的下方Merged Manifest里面可以查看错误,然后看看怎么处理吧!
三. 配置build.gradle
工程中有2个build.gradle,一个在app内部,一个在外部。
1. app外部的build.gradle文件。如果提示Could not find method android() for arguments xxxxx等等一堆,就把全部注释掉,因为会在app的内部build.gradle文件里面配置它。
2. 注意红色箭头的这个
版本如果陈旧了可能会提示一大堆AGPBI: {"kind":"errror","text":"warning:xxxx等等信息,这个是在打包到手机的时候会出现,如果能打包可以不管,影响了打包就要升级了。
3. app内部的build.gradle文件。上半部分大概这样子
从上往下依次是,你的密匙文件,这个不明白的可以百度。然后是sdk版本,最好是多安装几个,毕竟测试手机系统都不会太新,
顺着黑色的箭头,点击下载按钮
大概这样子,勾选你要下载的版本然后下载。如果已经下载的版本点击蓝色的勾勾,好像会删除你安装的版本。compileSdkVersion是设置编译时用的安卓版本,buildToolsVersion是设置编译时的使用的构建工具版本。然后再看黑色箭头部分,这个是默认配置,其实可以不用写uniplay的名字,后面会提到。uniplay就是我命名的沃商店的名字。然后看白色箭头在abiFilters中导入.so文件。黄色箭头也是AGPBI: {"kind":"errror","text":"warning:xxxx等等信息,导致打包的时候出现问题加上的。中间部分
写上uniplay的配置,dirs对应的libs就是存放库的地方(只是存放并没有导入)。
最后的就是导库了。由于jar包都是放在libs里面的,如果遇到同名的jar包直接改名字,然后在导入的地方改成同名就行了。build的后面部分
如果是通用的就直接compile files(“xxxx.jar”),是某一个SDK用的库就得在compile前面加上包的名字了。
如果是为了以后升级SDK方便不出问题,那么就得在当前的沃文件下面新建libs来装库了,那样改加载路径就行了,达到各自管理各自库目的,互不干扰!
然后如果是多渠道的调试,怎么也得来个启动项吧!看这儿
点开后会看到
再次点开
选择debug,如果没错就可以调试输出了!
当然如果遇到这种情况
检查你的这个,把版本升高或者clear build大法,删除 .gradle 重启什么的!最好的方式是,查看SKD的demo是好多,照写试试!
然后可能新坑来了,对于是android7.0的系统。点击游戏最后发现可能出现一下错误
你的.so文件动态加载出错了,在你的继承unicomapplicationwrapper中新增.so的加载方式
@Overridepublic void onCreate() {super.onCreate();}@Overrideprotected void attachBaseContext(Context context) {if (mApplication == null) {File cache = null;File wechart_cache =null;File qq_cache=null;try {InputStream is = context.getAssets().open("libme_unipay.so");cache = new File(context.getFilesDir(),"libme_unipay.so");InputStream wechart_is = context.getAssets().open("libonlywechat_plugin.so");wechart_cache = new File(context.getFilesDir(),"libonlywechat_plugin.so");//InputStream qq_is = context.getAssets().open("libonlyqq_plugin.so");qq_cache = new File(context.getFilesDir(),"libonlyqq_plugin.so");//if (!cache.exists()) {cache.createNewFile();}if (!wechart_cache.exists()) {wechart_cache.createNewFile();}if (!qq_cache.exists()) {qq_cache.createNewFile();}FileOutputStream fos = new FileOutputStream(cache);int length = 0;byte[] buffer = new byte[8192];while ((length = is.read(buffer)) > 0) {fos.write(buffer, 0, length);}fos.flush();fos.close();is.close();fos = new FileOutputStream(wechart_cache);length = 0;buffer = new byte[8192];while ((length = wechart_is.read(buffer)) > 0) {fos.write(buffer, 0, length);}fos.flush();fos.close();wechart_is.close();fos = new FileOutputStream(qq_cache);length = 0;buffer = new byte[8192];while ((length = qq_is.read(buffer)) > 0) {fos.write(buffer, 0, length);}fos.flush();fos.close();qq_is.close();} catch (IOException e) {e.printStackTrace();}if (cache != null) {System.load(cache.getAbsolutePath());unipay.install_native(this, context, context.getPackageName(), context.getApplicationInfo().sourceDir, "unipay", "unicom_classez.jar");}if(wechart_cache!=null){System.load(wechart_cache.getAbsolutePath());}if(qq_cache!=null){System.load(qq_cache.getAbsolutePath());}this.loadApplication(context);}super.attachBaseContext(context);} 然后把.so文件从armeabi文件拷贝到当前sdk文件目录下的assets文件目录下,这样差不多就能运行起来了。 之后又后发现导航栏遮挡游戏边缘了,好吧7.0的系统对导航栏改动有点大。
改动了下设置方式,可以全屏了!但是游戏画布被缩小了,之后经过多次实验发现,进入游戏之前把导航栏手动关闭,游戏就是满荡荡的全屏,目前就只有这样了!希望有老铁去研究下。
正常进入游戏后,点击主页按钮,然后返回游戏,发现游戏黑屏了!或者是去充值跳转回来也黑屏了!。经过各种折磨后发现,点击回到游戏后并没有调用cocos2dxActivity的onResume()函数,.........!然后我就想了个不是办法的办法,在调用onPause()函数的里面加个函数判断
String version=android.os.Build.VERSION.RELEASE;if(instance.getChanelId().equals("103")&&Integer.parseInt(version.substring(0,1))>6){ Cocos2dxHelper.pauseBackgroundMusic(); Cocos2dxHelper.pauseAllEffects();
然后大致浏览下文件目录吧
SDK目录如下
黑色箭头是存放资源的,把gameSimple的资源放入到assets里面,而蓝色箭头是存放图标的,红色箭头指向就是java代码了。至于怎么写就按照demo来吧!不过公司的是有前辈封装了一个简单的框架,所以具体就不展示了
完整目录结构