动态加载语言资源的方法和装置的制造方法_2

文档序号:9375296阅读:来源:国知局
源包,然后加载所接收到的语言资源包,从而有效减少了本地APK包含的资源,进而有效减小了 APK的体积。
[0038]本发明提供的动态加载语言资源的方法会在编译APP的时候,减少本地资源包含的语言资源,可以有选择地将一些语种的字符串资源打包在另外一个资源包中,并将该资源包存储在云端服务器中,当且仅当APP被安装到小语种国家时,再按需从云端服务器下载回来,最后加载使用。这样,APK的体积将会明显减小。
[0039]图3为本发明动态加载语言资源的方法中的APK生成过程示意图。如图3所示,本发明提供的资源加载方法,在生成APK的过程中,当本地资源中包含至少两个语种的字符串资源时,语言字符串资源占总资源的比重会增加很多,这时可以选取非主流语种的语言资源,将非主流语种的语音资源从本地资源中分离出来。举例来说,对于在中国使用的APP,可以将除简体中文、繁体中文和英文之外的其他语种的语言资源从本地资源中分离出来。这里的本地资源是指与代码打包在一起,生成APK的资源。
[0040]然后将分离出来的语言资源,在编译过程中,从本地资源中剪切走,然后走常规流程使用编译工具,生成一个体积较小的只包含分离出来的语言资源的APK,并存储在上述云端服务器中。其中,这里的本地资源是指与代码打包在一起,生成APK的资源。
[0041]另外,还需要建立并保存第一资源标识与第二资源标识的映射关系;上述第一资源标识为分离出来的语言资源生成的资源包的资源标识,第二资源标识为分离出上述选择的语言资源后的本地资源生成的资源包的资源标识。其中,建立并保存上述映射关系可以通过pub I ic.xml实现。
[0042]至此打包过程完毕。
[0043]图4为本发明动态加载语言资源的装置一个实施例的结构示意图,本实施例中的动态加载语言资源的装置可以设置在移动终端上可以实现本发明图1和/或图2所示实施例的流程,如图4所示,上述资源加载装置可以包括:启动模块41、确定模块42、发送模块43、接收模块44和加载模块45 ;
[0044]其中,启动模块41,用于启动移动终端中的应用程序。
[0045]确定模块42,用于确定启动模块41启动的应用程序需要加载语言资源包。本实施例中,确定模块42,具体用于检测到启动模块41启动的应用程序需要加载语言资源,且上述应用程序中未包含所需要加载的语言的种类时,确定上述应用程序需要加载语言资源包。
[0046]发送模块43,用于当确定模块42确定需要加载语言资源包时,如果上述移动终端中不存在可用语言资源包,则向服务器发送获取上述语言资源包的请求;其中,上述移动终端中不存在可用语言资源包包括:上述移动终端中不存在语言资源包,或者上述移动终端中的语言资源包的版本与上述应用程序的版本不一致。
[0047]本实施例中,发送模块43,具体用于根据上述应用程序的版本信息以及所需要加载的语言的种类生成下载请求,向上述服务器发送上述请求。
[0048]接收模块44,用于接收服务器返回的语言资源包。本实施例中,接收模块44,具体用于接收上述服务器根据上述请求返回的语言资源包。
[0049]加载模块45,用于加载接收模块44所接收到的语言资源包。
[0050]其中,上述服务器可以为云端服务器。
[0051]本实施例中,加载模块45,还用于当上述移动终端中存在可用语言资源包时,直接加载上述可用语言资源包。其中,上述移动终端中存在可用语言资源包可以为:上述移动终端中存在语言资源包,且上述移动终端中的语言资源包的版本与上述应用程序的版本一致。
[0052]本实施例中,加载模块45,具体用于将上述语言资源包与上述应用程序中的资源进行合并加载在内存中。
[0053]更具体地,一种实现方式中,加载模块45,具体用于根据上述语言资源包中的第一资源标识与上述应用程序中的第二资源标识的映射关系表,若上述语言资源包中的第一资源标识与上述应用程序中的第二资源标识匹配成功,则将上述语言资源包与上述应用程序中的资源进行合并加载在内存中。
[0054]另一种实现方式中,加载模块45,具体用于当上述语言资源包中的第一资源标识与上述应用程序中的第二资源标识相同时,将上述语言资源包与上述应用程序中的资源进行合并加载在内存中。
[0055]在具体实现时,加载模块45可以通过addAssetPath将语言资源包和原APK资源合并在一起,并加载到内存中。然后使用Java的反射机制,修改android, content, res.Resources类中的mAssets成员,将语言资源包合并到APP的资源中,这样APP就可以显示语言资源包中的字符串了。
[0056]上述动态加载语言资源的装置中,在确定模块42确定移动终端上启动的应用程序需要加载语言资源包时,发送模块43才向服务器发送获取上述语言资源包的请求并由接收模块44接收服务器返回的语言资源包,然后加载模块45加载所接收到的语言资源包,从而有效减少了本地APK包含的资源,进而有效减小了 APK的体积。
[0057]图5为本发明移动终端一个实施例的结构示意图,本实施例中的移动终端可以实现本发明图1和/或图2所示实施例的流程,如图5所示,该移动终端可以包括:壳体51、处理器52、存储器53、电路板54、电源电路55、发送器56和接收器57,其中,电路板54安置在壳体51围成的空间内部,处理器52、存储器53、发送器56和接收器57设置在电路板54上,并且处理器52与存储器53、发送器56和接收器57均连接;电源电路55,用于为移动终端的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:启动移动终端中的应用程序,确定上述应用程序需要加载语言资源包;
[0058]发送器56,用于当上述移动终端中不存在可用语言资源包时,向服务器发送获取上述语言资源包的请求;
[0059]接收器57,用于接收服务器返回的语言资源包;
[0060]处理器52,还用于加载接收器57所接收到的语言资源包。
[0061]进一步地,处理器52,还用于当上述移动终端中存在可用语言资源包时,直接加载上述可用语言资源包。其中,上述移动终端中存在可用语言资源包包括:上述移动终端中存在语言资源包,且上述移动终端中的语言资源包的版本与上述应用程序的版本一致。
[0062]上述服务器可以为云端服务器。
[0063]具体地,处理器52确定上述应用程序需要加载语言资源包可以为:处理器52,具体用于检测到上述应用程序需要加载语言资源,且上述应用程序中未包含所需要加载的语言的种类时,确定上述应用程序需要加载语言资源包。
[0064]其中,上述移动终端中不存在可用语言资源包包括:上述移动终端中不存在语言资源包,或者上述移动终端中的语言资源包的版本与上述应用程序的版本不一致。
[0065]本实施例中,发送器56,具体用于根据上述应用程序的版本信息以及所需要加载的语言的种类生成下载请求,向上述服务器发送上述请求;
[0066]接收器57,具体用于接收上述服务器根据上述请求返回的语言资源包。
[0067]本实施例中,处理器52,具体用于将上述语言资源包与上述应用程序中的资源进行合并加载在内存中。
[0068]更具体地,一种实现方式中,处理器52,具体用于根据上述语言资源包中的第一资源标识与上述应用程序中的第二资源标识的映射关系表,若上述语言资源包中的第一资源
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1