转载请标明出处:
http://blog.csdn.net/DJY1992/article/details/77649400
本文出自:【奥特曼超人的博客】
不懂的可以点击加入 安卓移动技术精英群:
最近有个游戏不兼容YSDK1.2.2 ,而且由于业务需求也需要升级新的YSDK了,在新的版本上也需要channel的需求(投放市场:广点通、微信平台等等…),刚好‘腾讯青青’发了1.3.5版本过来, 那就顺便记录下大家可能需要的解决方案,因为投放市场的包也需要这个channelID,同时投放文档也没有说明,当时很郁闷。
YSDK的WIKI: http://wiki.open.qq.com/wiki/YSDK%E5%BF%AB%E9%80%9F%E6%8E%A5%E5%85%A5
目前YSDK的版本:
下载地址:http://wiki.open.qq.com/wiki/YSDK%E4%B8%8B%E8%BD%BD
大部分都在使用中的版本是1.3.2,顺带一提,MSDK已经完全废弃。接过腾讯SDK的同学应该终生难忘,一大堆坑,经常遇到的如缓存问题、一次性登录问题、支付问题等等…
接了几年SDK,踩坑,踩雷,楼主估计已经可以去帮你们解决ALL-IN的问题了。
这里只是简单的记录下YSDK的系列问题,本篇只要是讲市场投放时的channelID如何加入,《YSDK 系列问题之如何获取渠道号ChannelID》,因为wiki上没有说明,大家可以看这里的解决方案。
新版的SDK里是使用了YSDKApi这个类,如下图所示,直接 getChannelID是获取的,怎么也找不到set的方法。
从这个类进入查看源码中翻看它可以发现:
public static String getChannelId() {
try {
Class var0 = Class.forName("com.tencent.ysdk.api.YSDKInnerApi");
Method var1 = var0.getMethod("getChannelId", new Class[0]);
return (String)var1.invoke((Object)null, new Object[0]);
} catch (Exception var2) {
var2.printStackTrace();
return "";
}
}
它是调用了 YSDKInnerApi
这个类,一层一层往下找,我们找到了package com.tencent.ysdk.framework;
这里的a类,混淆过,值得注意的是,它有个私有的构造,
private a() {
this.f = com.tencent.ysdk.framework.common.a.a;
Class var10000 = Fix.class;
}
不影响,我们要的是a字段和var1,这个就是我们要的渠道号,继续往下走。
private String e() {
String var1 = "CHANNEL";
String var2 = "channel.ini";
com.tencent.ysdk.framework.verification.a.e();
InputStream var3 = null;
String var4 = "";
try {
var3 = f.a().f().getResources().getAssets().open(var2);
Properties var5 = new Properties();
var5.load(var3);
var4 = var5.getProperty(var1, "");
} catch (IOException var14) {
var14.printStackTrace();
c.c("YSDKGame", "CHANNEL ID ERROR");
var4 = "";
} finally {
if(var3 != null) {
try {
var3.close();
} catch (Exception var13) {
var13.printStackTrace();
}
}
}
return var4;
}
可以看出,这里读取的是配置文件channel.ini文件中 ,Demo中是没有这个文件的,我们直接放进去看看效果,我们配置的放在第一行CHANNEL=101即可。
结果显示出来了,result=101。
|| 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。