用Android studio搭建沃商店SDK任意支付的配置

3 篇文章 0 订阅
1 篇文章 0 订阅

第一次接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的加载方式

@Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    protected 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的系统对导航栏改动有点大。

View decorView = getWindow().getDecorView();
int uiOptions =
View.SYSTEM_UI_FLAG_FULLSCREEN|
View.INVISIBLE;
decorView.setSystemUiVisibility(uiOptions);

改动了下设置方式,可以全屏了!但是游戏画布被缩小了,之后经过多次实验发现,进入游戏之前把导航栏手动关闭,游戏就是满荡荡的全屏,目前就只有这样了!希望有老铁去研究下。

正常进入游戏后,点击主页按钮,然后返回游戏,发现游戏黑屏了!或者是去充值跳转回来也黑屏了!惊恐。经过各种折磨后发现,点击回到游戏后并没有调用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();
  Log.e("third","目前沃商店的处理,不暂停游戏"); return false;
}
return true;
如果是沃渠道103且版本大于6,就不执行
mGLSurfaceView.onPause();
函数了,当然你要处理音效的暂停之类的。此方法对于格斗游戏之类的即时性强的游戏就不适合了,切换回来可能都被打死了!


然后大致浏览下文件目录吧
SDK目录如下


黑色箭头是存放资源的,把gameSimple的资源放入到assets里面,而蓝色箭头是存放图标的,红色箭头指向就是java代码了。至于怎么写就按照demo来吧!不过公司的是有前辈封装了一个简单的框架,所以具体就不展示了

完整目录结构





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值