浅谈MTK平台用Socket实现HTTP请求过程
时间:10-02
整理:3721RD
点击:
mtk平台用Socket实现HTTP请求过程是本文要介绍的内容,主要是来了解并学习MTK平台的应用,通过MTK平台中数据的请求的案例,来学习MTK平台的应用,具体内容的实现来看本文详解。
一、MTK平台Socket联网过程
熟悉PC机编程的人都知道,Socket编程接口分两套:TCP和UDP;TCP和UDP中又有服务器端和客户端的概念,这里讲的是TCP的客户端编程接口。
MTK平台中Socket创建步骤:
1、soc_create()创建Socket;
2、soc_setsockopt设置Socket为非阻塞模式;
3、soc_setsockopt设置Socket选项为连接,读,写,关闭;不清楚为什么要连续设置两次;
4、如果是CMNET联网并且请求中用到了英文域名还需要解析域名soc_gethostbyname,除非使用ip作为域名,解析出来的IP作为我们建立连接的目标IP;如果是CMWAP联网,直接跳到第5步,直接连接移动或联通的网关:10.0.0.172:80;
5、soc_connect与服务器建立连接;
6、soc_send发送请求;
7、soc_recv接收服务器返回的数据;
8、soc_close关闭Socket;
9、如果需要关闭数据账户soc_close_nwk_account
二、CMNET,CMWAP方式下的HTTP请求内容格式
HTTP请求格式:
GET方法
MTK平台中模拟器里wap浏览器发送的请求内容
对一些需要向服务器传入参数的请求,按名称搜索等请求。还以空中网天气查询为例,之中的其他城市天气查询,输入其他城市名称或电话区号查询:
三、CMNET,CMWAP连接差别
1、GPRS账户:
与pc机上的socket客户端接口不同,手机客户端在soc_create,soc_gethostbyname接口中都多了参数nwt_acount_id,只的是一般在“网络服务”->“数据账户”->“GPRS”下的GPRS数据账户id,一般起始的一个账户id是10,往下递增1,在建立连接过程中,如果是CMWAP方式联网,soc_create,soc_gethostbyname接口就要设置接入点为CMWAP的账户id,CMNET就要设置接入点为CMNET的账户。
2、目标服务器:
还以空中网的天气服务为例,CMNET情况下,soc_connect需要连接”221.179.172.2”这个ip,如果请求的url为”http://kong.net/weather/home.jsp”,还需要调用soc_gethostbyname接口去解析域名;
如果是CMWAP方式联网,soc_connect只需要连接移动或联动的网关”10.0.0.172:80”。
3、HTTP请求内容格式(或称报文):
如第二节所述。
四、SIM1还是SIM2联网
SIM1还是SIM2联网,MTK平台是通过创建socket时传入的nwt_acount_id区分的,如果是SIM1上网,账号就是指的是一般在“网络服务”->“数据账户”->“GPRS”下的对应的GPRS数据账户id;如果是SIM2,通过在四字节的账户id其他字节设置掩码来区分。
设置接口比如07B平台的always_ask_encode_data_account_id,6235_08A的cbm_encode_data_account_id接口。不同MTK平台可能略有差别。
五、联通卡还是移动卡?
参考其他Socket联网代码中有的以接入点是否为”uniwap”来判断是不是联通的代理上网,但是通过实验,即使在联通卡时连接移动的”cmwap”账户,也是可以正常联网的。不知道设计“GPRS数据账户”的最初意图是什么?通过apn来区分同一内部ip地址网关不同的公网ip吗?如有高人路过,请指点;
六、HTTP1.1与Transfer-Encoding为chunked的编码方式
发送一个请求后,如果服务器返回的消息头内容包括“Transfer-Encoding:chunked”那么他的传输编码为“chunked”类型。这种传输类型的数据体内容格式是这样:
[16进制数字字符串1到4个字节len]\r\n
[len长的数据体]\r\n
[16进制数字字符串1到4个字节len]\r\n
[len长的数据体]\r\n
[16进制数字字符串1到4个字节len==0]\r\n\r\n
其中,长度len是16进制的数字,表示本段数据体的长度(字节数),回车换行后,就是这一段数据真实内容,这就是一段数据体的格式,一段接一段;直到数据体长度为0的数据段出现,紧接着两个回车换行,标识本次请求的数据均已接收完毕。不过socket可以根据soc_recv返回值等于0来判断接收数据结束。如果收到的是这个编码类型的内容,需要对接收到的数据进行处理。
七、MTK平台的S8类型的误导
MTK平台定义的两个数据类型U8和S8,一看名称我们可能会以为是unsignedchar和signedchar,但事实并非如此,
mtk平台CAMERA流程原理(转+改)
以23C的平台为例子。
1.MMI_camera_entry_app_screen进入MMI,CAMERA进行分配动态内存,供采集数据处理。
2.mmi_camera_entry_app_screen_internal,进入判断T卡等环境相关,---》CAMERA_ENTER_STATE(CAMERA_STATE_PREVIEW),进入预览状态,mmi_camera_entry_preview_state,获取用户的对CAMERA的设置参数,如大小,特效等参数。同时,注册进入CAMERA后的快捷键,为CAMERA的界面,画OSD层,画出左右软键到OSDLAYER的BUFFER中,通过该函数mmi_camera_preview_set_blt_layer合并OSD层和基层,通过函数gdi_layer_blt_previous实现把合并后的层数据刷到LCD上。
3.mmi_camera_preview_start,开始进入CAMERA预览状态,获得并初始化CAMERA驱动所要的设置参数(camera_setting_data),通过gdi_layer_push_and_set_active函数激活CAMERA的PREVIEW层,也就是预览时的BUFFER用来保存sensor输出的数据。
4.mdi_camera_preview_start,--》mdi_camera_preview_start_internal,设置好状态,准备打开SENSOR了,取得驱动需要的各种参数(cam_preview_data),
5.media_cam_preview,发送消息到下层,通知打开SENSOR,设置好CAMERA预览的事件,
6.cam_preview_req_hdlr,下层开始启动CAMERA预览事件。
接下来,预览的刷屏都是通过SENSOR的VSYC接到中断上来实现的,每来个VSYC中断,把PREVIEWLAYER的BUFFER,经过YUV-RGB的转换,通过DMA配置来刷到LCD上。
由于MTK把刷屏的那部分没有开放,所以跟到6就跟不下去了,在6那里有几个CAM_SET_EVENT(CAM_EVT_PREVIEW);由于对MTK的操作系统不是很熟悉,不知道这句话是什么意思,#defineCAM_SET_EVENT(evt_)do{\
mtk平台,相关问题总结
下面是在mtk平台,遇到的一些问题,我将其保存,大家可以看看:
编译前请将..customcommonvram_lid_statistics.h文件和tst文件夹的属性、plutomMICustomerCustomize下的GCML.txt改为可读写。
Release版本的时候,MMI/Miscphp?mod=tag&id=6090" target="_blank" class="relatedlink">Framework/MiscFrameworkSrc/UCS2.c不能删除,因为,resgen要用倒ucs2.c
1:深路经覆盖浅路径文件
2:只有ADD_APPLICATION_MENUITEM,ADD_APPLICATION_MENUITEM2两种添加菜单方式
3:添加菜单的时候一定要,指定子菜单的个数
4:CmsWapMMSAdp.h文件中,如果是26项目,不要打开28开关
6:DataAccountDef.h中添加
7:头文件打不开,很可能在
make中的相应文件里,没有加这个路径
如:plutommi.inc文件中没有包含相应路径
8:useragentprofile在文件cmswapmmsadp.c
9:mtk28,在mms_send_message函数中,要将
10:mms_init_global_param此函数中设置了mms的相关参数,
还有
[2wap]
wap里的wap_init_pre_setting_file_chinamobile函数
帐号改为
12:将开关
13:收发彩信的时候,底下的白色部分
修改mmi_mms_show_send_receive_status函数中的
1:Idle->输入*#34364#,选择第2项设备,--〉7项,setUART->1项TSTConfig-〉
uartport选择uart1完成,重启
15、gif重复播放,gif图像消失的解决方式
(1)在播放前添加gdi_image_gif_reset();
16:Idle来短信进入了短信inbox,没有进合一接口
18、MTK23:我们模拟器在开机无法正常启动时,可以将MTK23_07AW0736MPmodisWIN32FSDRIVE_CNVRAMNVD_DATA下的数据文件全部清除,在从新启动模拟器,一般都可以成功启动。这是因为我们在修改nvram值的时候,这个目录下的值没有从新生成,所以会出现错误
19、Editor出现滚动条覆盖虚拟键盘的情况,有可能是mmi_pen_editor_vk_show()中算的changed_height不对
20、去掉手机触摸屏校验在PhnsetNeedFactoryDefaultCalibration()中
21、recorder在退出的时候,要清除与hmchip之间所注册的handler
此外:mdi_video_rec_save_file()中一句代码不应该注释掉,记得要打开media_vid_file_merge()
vis_merge_recorder_file()是用来保存视频文件的
22、recorder在stop的时候,没有stoppreview,所以我们要加上stoppreview的消息,然后我们还需要closefile。media_vid_close()是player用的
23、默认支持超级终端,如果要使用Mtk的Trace,设置步骤:
1.输入*#3646633#,进入工程模式
2.DeviceSetUARTTracesetting选择TracesettingON手机重起之后就可以了
3.如果只关心CDMA_print的Trace信息。只选择MOD_DISPATCH模块即可
24、指定模拟器heap大小,ZM300300指定义的大小(手写时候出现的问题)
25、手写在imeres.c中,参数
PEN_EDITOR_SIMPLIFIED_CHINESE用于在手写时,获取当前的输入法后,此参数将被mmi_pen_editor_get_hand_writing_type_by_input_mode()返回并传给手写模块,用于识别当前输入法,给出相近文字
26:手写可以用库来调试,步骤如下:
1、用wentonginterface.c替换掉原来的文件,并将WTRecognizeUShort定义换为WTRecognize。
27:修改editor默认输入法的时候,在Nvram_cust_pack.c中数组
修改nvram的时候,要相应升级custom_nvram_editor_data_item.h中,
如果我们修改了:
请各个reviewleader在给大家review的时候一定要注意这个问题。
28:
将lib解开的命令
方法如下:
Vc设置==》link==》选择input选项,在ignorelibraries中写上LIBCD.lib(要屏蔽的库)
即可
30:mtk平台底层声音转换在InitializeResourceVariables()函数中,诸如:
一、MTK平台Socket联网过程
熟悉PC机编程的人都知道,Socket编程接口分两套:TCP和UDP;TCP和UDP中又有服务器端和客户端的概念,这里讲的是TCP的客户端编程接口。
MTK平台中Socket创建步骤:
1、soc_create()创建Socket;
2、soc_setsockopt设置Socket为非阻塞模式;
3、soc_setsockopt设置Socket选项为连接,读,写,关闭;不清楚为什么要连续设置两次;
4、如果是CMNET联网并且请求中用到了英文域名还需要解析域名soc_gethostbyname,除非使用ip作为域名,解析出来的IP作为我们建立连接的目标IP;如果是CMWAP联网,直接跳到第5步,直接连接移动或联通的网关:10.0.0.172:80;
5、soc_connect与服务器建立连接;
6、soc_send发送请求;
7、soc_recv接收服务器返回的数据;
8、soc_close关闭Socket;
9、如果需要关闭数据账户soc_close_nwk_account
二、CMNET,CMWAP方式下的HTTP请求内容格式
HTTP请求格式:
GET方法
MTK平台中模拟器里wap浏览器发送的请求内容
- Host:kong.net
User-Agent:SQH_D480B_01/LB19504/WAP2.0Profile - Accept:application/vnd.wap.wmlc,**//(想当长,省去后面部分)
Accept-Charset:utf-8,utf-16,iso-8859-1,iso-10646-ucs-2,GB2312,windows-1252,us-ascii - Accept-Language:zh-tw,zh-cn,en
Cookie:JSESSIONID=aAQP0FIXp3z7 - Connection:Keep-Alive
- ”
“GET/go_13596557HTTP/1.1
对一些需要向服务器传入参数的请求,按名称搜索等请求。还以空中网天气查询为例,之中的其他城市天气查询,输入其他城市名称或电话区号查询:
-
Host:kong.net -
User-Agent:SQH_D480B_01/LB19504/WAP2.0Profile -
Accept:application/vnd.wap.wmlc,*/*//(想当长,省去后面部分) -
Accept-Charset:utf-8,utf-16,iso-8859-1,iso-10646-ucs-2,GB2312,windows-1252,us-ascii -
Accept-Language:zh-tw,zh-cn,en -
Content-Type:application/x-www-form-urlencoded;charset=utf-8 -
Cookie:KONG_ACCESS=AWYZhg==;JSESSIONID=a91MDc6qoMYf -
Connection:Keep-Alive -
Content-Length:46//get方法没有这一项 -
××××××//传给服务器46字节长的数据(参数) - ”
“POST/weather/search.jsp?setcity=1HTTP/1.1
- X-Online-Host:kong.net
三、CMNET,CMWAP连接差别
1、GPRS账户:
与pc机上的socket客户端接口不同,手机客户端在soc_create,soc_gethostbyname接口中都多了参数nwt_acount_id,只的是一般在“网络服务”->“数据账户”->“GPRS”下的GPRS数据账户id,一般起始的一个账户id是10,往下递增1,在建立连接过程中,如果是CMWAP方式联网,soc_create,soc_gethostbyname接口就要设置接入点为CMWAP的账户id,CMNET就要设置接入点为CMNET的账户。
2、目标服务器:
还以空中网的天气服务为例,CMNET情况下,soc_connect需要连接”221.179.172.2”这个ip,如果请求的url为”http://kong.net/weather/home.jsp”,还需要调用soc_gethostbyname接口去解析域名;
如果是CMWAP方式联网,soc_connect只需要连接移动或联动的网关”10.0.0.172:80”。
3、HTTP请求内容格式(或称报文):
如第二节所述。
四、SIM1还是SIM2联网
SIM1还是SIM2联网,MTK平台是通过创建socket时传入的nwt_acount_id区分的,如果是SIM1上网,账号就是指的是一般在“网络服务”->“数据账户”->“GPRS”下的对应的GPRS数据账户id;如果是SIM2,通过在四字节的账户id其他字节设置掩码来区分。
设置接口比如07B平台的always_ask_encode_data_account_id,6235_08A的cbm_encode_data_account_id接口。不同MTK平台可能略有差别。
五、联通卡还是移动卡?
参考其他Socket联网代码中有的以接入点是否为”uniwap”来判断是不是联通的代理上网,但是通过实验,即使在联通卡时连接移动的”cmwap”账户,也是可以正常联网的。不知道设计“GPRS数据账户”的最初意图是什么?通过apn来区分同一内部ip地址网关不同的公网ip吗?如有高人路过,请指点;
六、HTTP1.1与Transfer-Encoding为chunked的编码方式
发送一个请求后,如果服务器返回的消息头内容包括“Transfer-Encoding:chunked”那么他的传输编码为“chunked”类型。这种传输类型的数据体内容格式是这样:
[16进制数字字符串1到4个字节len]\r\n
[len长的数据体]\r\n
[16进制数字字符串1到4个字节len]\r\n
[len长的数据体]\r\n
[16进制数字字符串1到4个字节len==0]\r\n\r\n
其中,长度len是16进制的数字,表示本段数据体的长度(字节数),回车换行后,就是这一段数据真实内容,这就是一段数据体的格式,一段接一段;直到数据体长度为0的数据段出现,紧接着两个回车换行,标识本次请求的数据均已接收完毕。不过socket可以根据soc_recv返回值等于0来判断接收数据结束。如果收到的是这个编码类型的内容,需要对接收到的数据进行处理。
七、MTK平台的S8类型的误导
MTK平台定义的两个数据类型U8和S8,一看名称我们可能会以为是unsignedchar和signedchar,但事实并非如此,
- typedefunsignedcharU8;
typedefcharS8;
mtk平台CAMERA流程原理(转+改)
以23C的平台为例子。
1.MMI_camera_entry_app_screen进入MMI,CAMERA进行分配动态内存,供采集数据处理。
2.mmi_camera_entry_app_screen_internal,进入判断T卡等环境相关,---》CAMERA_ENTER_STATE(CAMERA_STATE_PREVIEW),进入预览状态,mmi_camera_entry_preview_state,获取用户的对CAMERA的设置参数,如大小,特效等参数。同时,注册进入CAMERA后的快捷键,为CAMERA的界面,画OSD层,画出左右软键到OSDLAYER的BUFFER中,通过该函数mmi_camera_preview_set_blt_layer合并OSD层和基层,通过函数gdi_layer_blt_previous实现把合并后的层数据刷到LCD上。
3.mmi_camera_preview_start,开始进入CAMERA预览状态,获得并初始化CAMERA驱动所要的设置参数(camera_setting_data),通过gdi_layer_push_and_set_active函数激活CAMERA的PREVIEW层,也就是预览时的BUFFER用来保存sensor输出的数据。
4.mdi_camera_preview_start,--》mdi_camera_preview_start_internal,设置好状态,准备打开SENSOR了,取得驱动需要的各种参数(cam_preview_data),
5.media_cam_preview,发送消息到下层,通知打开SENSOR,设置好CAMERA预览的事件,
6.cam_preview_req_hdlr,下层开始启动CAMERA预览事件。
接下来,预览的刷屏都是通过SENSOR的VSYC接到中断上来实现的,每来个VSYC中断,把PREVIEWLAYER的BUFFER,经过YUV-RGB的转换,通过DMA配置来刷到LCD上。
由于MTK把刷屏的那部分没有开放,所以跟到6就跟不下去了,在6那里有几个CAM_SET_EVENT(CAM_EVT_PREVIEW);由于对MTK的操作系统不是很熟悉,不知道这句话是什么意思,#defineCAM_SET_EVENT(evt_)do{\
- CAM_SET_EVT(evt_,__LINE__);\
- }while(0)
kal_set_eg_events(cam_context_p->cam_event,(evt_),KAL_OR);\
mtk平台,相关问题总结
下面是在mtk平台,遇到的一些问题,我将其保存,大家可以看看:
编译前请将..customcommonvram_lid_statistics.h文件和tst文件夹的属性、plutomMICustomerCustomize下的GCML.txt改为可读写。
Release版本的时候,MMI/Miscphp?mod=tag&id=6090" target="_blank" class="relatedlink">Framework/MiscFrameworkSrc/UCS2.c不能删除,因为,resgen要用倒ucs2.c
1:深路经覆盖浅路径文件
2:只有ADD_APPLICATION_MENUITEM,ADD_APPLICATION_MENUITEM2两种添加菜单方式
3:添加菜单的时候一定要,指定子菜单的个数
4:CmsWapMMSAdp.h文件中,如果是26项目,不要打开28开关
- #if0
#ifdefSUPPORT_MTK_6228 - #defineCMS_SURPPORT_PNG_BMP
#endif - #endif
#defineSUPPORT_MTK_6226
- ADD_APPLICATION_MENUITEM((SERVICES_WAP_MENU_ID,MAIN_MENU_SERVICES_MENUID,0,SHOW,NONMOVEABLE|SHORTCUTABLE,DISP_LIST,
SERVICES_WAP_STRING_ID,SERVICES_WAP_IMAGE_ID)); - #endif
#ifndefCMS_NEW_APP
6:DataAccountDef.h中添加
- #include"custom_mmi_default_value.h"
- #defineMAX_GPRS_USERNAMEMAX_GPRS_USER_NAME_LEN-1
#else - #defineMAX_GPRS_USERNAME15
#endif - #ifdefMAX_GPRS_PASSWORD_LEN
#defineMAX_GPRS_USERPASSWDMAX_GPRS_PASSWORD_LEN-1 - #else
#defineMAX_GPRS_USERPASSWD15 - #endif
#ifdefMAX_GPRS_USER_NAME_LEN
7:头文件打不开,很可能在
make中的相应文件里,没有加这个路径
如:plutommi.inc文件中没有包含相应路径
8:useragentprofile在文件cmswapmmsadp.c
9:mtk28,在mms_send_message函数中,要将
- MMS_SetMaxSize(gconfig.sendsize,gconfig.retrievesize);
- MMS_Init();
10:mms_init_global_param此函数中设置了mms的相关参数,
还有
- mms_init_pre_setting_file_chinamobile
[2wap]
wap里的wap_init_pre_setting_file_chinamobile函数
帐号改为
- gWapTemp.gprs_mode=14//WAP_SERVICE_CHINAMOBILE+GSM_NET_ACCOUNT;
12:将开关
- #define__MMI_STATUS_ICON_MMS__
- #endif
#ifdefined(CMS_NEW_APP)||defined(MMS_SUPPORT)
13:收发彩信的时候,底下的白色部分
修改mmi_mms_show_send_receive_status函数中的
- 10,UI_color(255,255,255));
UI_fill_rectangle(0,MMS_PROGRESS_INDICATOR_HEIGHT,UI_device_width-1,
1:Idle->输入*#34364#,选择第2项设备,--〉7项,setUART->1项TSTConfig-〉
uartport选择uart1完成,重启
15、gif重复播放,gif图像消失的解决方式
(1)在播放前添加gdi_image_gif_reset();
16:Idle来短信进入了短信inbox,没有进合一接口
- externvoidmmi_mms_entry_inbox(void);
#endif - voidmmi_msg_exit_inbox_list_dummy(void)
{ - mEMSet(&currHistory,0,sizeof(currHistory));
- #ifdefined(CMS_NEW_APP)&&defined(SUPPORT_SMSMMS_COMBINE)
currHistory.scrnID=SCR_ID_MMS_INBOX; - #else
currHistory.scrnID=SCR_ID_MSG_INBOX_LIST; - #endif
SetMessagesCurrScrnID(0); - g_msg_cntx.MessagesScrnIdToDelHistoryNodes=SCR_ID_MSG_INBOX_LIST;
g_msg_cntx.MessagesScrnIdDelUptoHistoryNodes=SCR_ID_MSG_INBOX_LIST; - #ifdefined(CMS_NEW_APP)&&defined(SUPPORT_SMSMMS_COMBINE)
currHistory.entryFuncPtr=mmi_mms_entry_inbox; - #else
currHistory.entryFuncPtr=mmi_msg_entry_inbox_list; - #endif
#ifdefined(CMS_NEW_APP)&&defined(SUPPORT_SMSMMS_COMBINE)
18、MTK23:我们模拟器在开机无法正常启动时,可以将MTK23_07AW0736MPmodisWIN32FSDRIVE_CNVRAMNVD_DATA下的数据文件全部清除,在从新启动模拟器,一般都可以成功启动。这是因为我们在修改nvram值的时候,这个目录下的值没有从新生成,所以会出现错误
19、Editor出现滚动条覆盖虚拟键盘的情况,有可能是mmi_pen_editor_vk_show()中算的changed_height不对
20、去掉手机触摸屏校验在PhnsetNeedFactoryDefaultCalibration()中
21、recorder在退出的时候,要清除与hmchip之间所注册的handler
此外:mdi_video_rec_save_file()中一句代码不应该注释掉,记得要打开media_vid_file_merge()
vis_merge_recorder_file()是用来保存视频文件的
22、recorder在stop的时候,没有stoppreview,所以我们要加上stoppreview的消息,然后我们还需要closefile。media_vid_close()是player用的
23、默认支持超级终端,如果要使用Mtk的Trace,设置步骤:
1.输入*#3646633#,进入工程模式
2.DeviceSetUARTTracesetting选择TracesettingON手机重起之后就可以了
3.如果只关心CDMA_print的Trace信息。只选择MOD_DISPATCH模块即可
24、指定模拟器heap大小,ZM300300指定义的大小(手写时候出现的问题)
25、手写在imeres.c中,参数
- IME_HAND_WRITING_ATTRIB(MMI_FALSE,IME_HAN_WRITING_INVALID_INPUT_MODE,GUI_VIRTUAL_KEYBOARD_TRAY,PEN_EDITOR_SIMPLIFIED_CHINESE)
PEN_EDITOR_SIMPLIFIED_CHINESE用于在手写时,获取当前的输入法后,此参数将被mmi_pen_editor_get_hand_writing_type_by_input_mode()返回并传给手写模块,用于识别当前输入法,给出相近文字
26:手写可以用库来调试,步骤如下:
1、用wentonginterface.c替换掉原来的文件,并将WTRecognizeUShort定义换为WTRecognize。
- WTErrorWTRecognize(unsignedshort*PointData,shortPointsNumber,unsignedshort*CandidateResult,char*RamAddress);
#else - WTErrorWTRecognizeUShort(unsignedshort*PointData,shortPointsNumber,unsignedshort*CandidateResult,char*RamAddress);
- #endif
#ifdefDEBUG_IN_WIN32_FOR_HANDWRIGING
27:修改editor默认输入法的时候,在Nvram_cust_pack.c中数组
- {
- }
kal_uint8constNVRAM_CACHE_SHORT_DEFAULT[NVRAM_CACHE_SIZE]=
- 0x0E,0x00,
- 0x0E,0x00,
修改nvram的时候,要相应升级custom_nvram_editor_data_item.h中,
- #defineNVRAM_EF_CACHE_SHORT_LID_VERNO"004"
如果我们修改了:
- NVRAM_EF_PHB_COMPARE_DIGIT_DEFAULT
- 即:
- NVRAM_EF_PHB_COMPARE_DIGIT_LID_VERNO
VER(NVRAM_EF_PHB_COMPARE_DIGIT_LID)
请各个reviewleader在给大家review的时候一定要注意这个问题。
28:
将lib解开的命令
- ar-xcustom.lib
- ar-cruscustom.lib*.obj
- mstdXXXX.lib(afxmem.obj):errorLNK2005:"void__cdecloperatordelete(void*)"(?3@YAXPAX@Z)alreadydefinedinLIBCD.lib(delop.obj)
方法如下:
Vc设置==》link==》选择input选项,在ignorelibraries中写上LIBCD.lib(要屏蔽的库)
即可
30:mtk平台底层声音转换在InitializeResourceVariables()函数中,诸如:
- resource_midis=
resource_tones=