当前位置:  编程技术>移动开发
本页文章导读:
    ▪[已解决]百度map混淆代码后map崩溃有关问题        [已解决]百度地图混淆代码后地图崩溃问题今天做百度地图时出现一些小问题,一搜发现大家似乎都遇到过这样的问题。   大家知道百度地图API需要申请Key,填写安全码   安全码的组成规则为.........
    ▪ Utf-八 转 GBK        Utf-8 转 GBK QTextCodec *gbk = QTextCodec::codecForName("gb18030"); QTextCodec *utf8 = QTextCodec::codecForName("utf-8"); QTextCodec::setCodecForTr(gbk); QTextCodec::setCodecForLocale(gbk); // QString utfStr = QObject::trUtf8( tr("webservice 读.........
    ▪ Sock.IO上传AppStore出现non-public selectors in payload.decoder有关问题       Sock.IO上传AppStore出现non-public selectors in payload...:decoder问题。假如你的工程使用了Socket.IO,用Application Loader上传工程可能会有上述提示, 在XCode中搜索整个工程,发现Socket.IO中存在decoder方法且.........

[1][已解决]百度map混淆代码后map崩溃有关问题
    来源: 互联网  发布时间: 2014-02-18
[已解决]百度地图混淆代码后地图崩溃问题

今天做百度地图时出现一些小问题,一搜发现大家似乎都遇到过这样的问题。

  大家知道百度地图API需要申请Key,填写安全码

  安全码的组成规则为:Android签名证书的sha1值+“;”+packagename(即:数字签名+分号+包名)

  debug的话,代码没有经过混淆,百度地图正常使用

 

  但是大家发布到应用市场的apk一般都是经过加密的,有点知识产权保护意识的都会有代码混淆。就会用一套自己的keystore,重新设定“安全码后”,导出apk时没有报任何错误。但是当我装载手机上使用百度地图定位时,地图绘制了一大半,就死掉了,留下log控制台有这么句话,经过google查找,然后把百度地图官网又仔细读了便,果然功夫不负有心人,还是让我找到了。

com.baidu.platform.comapi.map.MapRenderer.nativeRender(Native Method)


官网明确指出:

3.6.5 为何我的程序在不混淆之前可以运行,混淆之后不能运行了?

栅格版SDK(即1.3.5及之前的版本):

如果您使用proguard进行混淆,请在您的混淆配置文件中添加如下语句:
-keep class com.baidu.mapapi.** {*;}

矢量版SDK(即2.0.0及之后的版本):
如果是用proguard ,以下配置供参考:
#-libraryjars libs/baidumapapi_v2_1_2.jar 替换成自己所用版本的jar包
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
其他混淆工具也请进行与此类似的配置,指定对mapapi中的类和方法不进行混淆。



小猿我用的是

 target=android-17
proguard.config=proguard-project.txt 低版本有proguard.cfg基本类似


在proguard-project.txt中添加如下(本猿引用的是百度v2_1_3这版的jar包,码友们就换成自己的包就好了)

-libraryjars libs/baidumapapi_v2_1_3.jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}

最后找到原因就是我混淆代码时少了这行
-keep class vi.com.gdi.bgl.android.**{*;}

再次导出一版,试试,地图功能就可以正常使用了。


    
[2] Utf-八 转 GBK
    来源: 互联网  发布时间: 2014-02-18
Utf-8 转 GBK

QTextCodec *gbk = QTextCodec::codecForName("gb18030");
 QTextCodec *utf8 = QTextCodec::codecForName("utf-8");
 QTextCodec::setCodecForTr(gbk);
 QTextCodec::setCodecForLocale(gbk);
// QString utfStr = QObject::trUtf8( tr("webservice 读取完成").toUtf8()); //utf-8
 QString utfStr = QObject::trUtf8(pp); //utf-8
// QString gbkStr = QObject::tr("中文"); // gbk
 QString utf2gbk = gbk->toUnicode(utfStr.toLocal8Bit()); // utf8 conver gbk
// qDebug() << utf2gbk;
 gloinfo = utf2gbk;
 qDebug() << gloinfo;
// QString gbk2utf1 = utf8->toUnicode(utf2gbk.toUtf8()); // gbk convert utf8
// QString g2u = gbk->toUnicode(gbk->fromUnicode(readStr)); // gbk convert utf8



    
[3] Sock.IO上传AppStore出现non-public selectors in payload.decoder有关问题
    来源: 互联网  发布时间: 2014-02-18
Sock.IO上传AppStore出现non-public selectors in payload...:decoder问题。
假如你的工程使用了Socket.IO,用Application Loader上传工程可能会有上述提示,
在XCode中搜索整个工程,发现Socket.IO中存在decoder方法且是在NSObject分类器中创建,为了避免这个警告,修改很简单,只需在把此方法重命名即可。

修改前:

#import "SocketIOJSONSerialization.h"

extern NSString * const SocketIOException;

// covers the methods in SBJson and JSONKit
@interface NSObject (SocketIOJSONSerialization)

// used by both JSONKit and SBJson
- (id) objectWithData:(NSData *)data;

// Use by JSONKit serialization
- (NSString *) JSONString;
- (id) decoder;

// Used by SBJsonWriter
- (NSString *) stringWithObject:(id)object;

@end

修改后:

#import "SocketIOJSONSerialization.h"

extern NSString * const SocketIOException;

// covers the methods in SBJson and JSONKit
@interface NSObject (SocketIOJSONSerialization)

// used by both JSONKit and SBJson
- (id) objectWithData:(NSData *)data;

// Use by JSONKit serialization
- (NSString *) JSONString;
- (id) jsonDecoder;

// Used by SBJsonWriter
- (NSString *) stringWithObject:(id)object;

@end

因此,为避免苹果审核出现问题(non-public selectors in payload...),尽量在命名方法时候不要使用单个“单词”且该词过于敏感(未来可能会被苹果使用)的方式命名。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
NOSQL iis7站长之家
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3