安卓多平台批量打包

当项目需要在多个平台上线的时候,需要给不同的平台提供不同的游戏包。提供的时

有这些需求需要实现。

(1).游戏需要和不同的插件进行集成。

(2).为了减小安装包大小,一个包只能包含一个插件(就算不去调用)。

 

项目采用的是C++代码生成so库,然后由Android代码以静态库的

式进行加载。所以咱们集成的第三方库就只能通过引擎提供的PluginX来统一管理,并以jni的方式用C++代码去调用。在Eclipse开发环境里就只能通过更换不同的依赖库来实现

比如说如图的当乐。

       如果我们通过手动去生成apk包,并进行签名发布。就会浪费很多宝贵的时间。而且由于手动操作会产生很多低级错误。当平台数量比较多的时候发版本将变成一个极其低效的工作。我们就需要找一种通过脚本或者是工具,实现一键打多个版本。

一.    详细设计

目前安卓平台比较常用的是ant。通过一个名为build.xml的脚本,在命令行窗口输

Ant命令就可以全自动的生成一个未签名的apk包。

         只要咱们的工程配置无错。打一个包是如此的简单。关键就是这个配置的过程,只要咱们能自动去配置好工程,通过循环的方式就能实现批量打包。

         接下来咱们详细的说说这个工具的实现。

         首先是build.xml文件的改写:(详细请查看工程目录底下的build.xml文件).

接下来就是实现循环打包的脚本了

首先是准备一个platforms文件夹,里头存放了要打包的所有平台的子文件夹,

里面首先都有一个config档,该文档里记录了平台的id号等一些信息。用来标识游戏当前集成的平台。在子文件夹android里

(1).ForAssets文件用来存放当前平台提供的必要的so库或是apk安装包等。对应相应plugin工程的DependProject底下的assets目录。

(2).ForLibs和ForRes文件夹得作用同上。

(3).Manifest文件用来存放本安装包对应的Manifest文件

         平台插件需要的权限和Activity声明都放到这里。其中package这个字段值决定了apk最后的packagename,后者在Android系统里唯一的标识一个应用程序。平台一般都会要求修改这个字段。

(4).CardGame.java这个文件是咱们游戏在安卓里的主要入口,有的平台需要在该文件

如图,在游戏的主Activity的onCreate里头进行一些初始化或是清理的工作。

所以,为了实现自动打包,我们要给相应的平台准备这样的一个文件。

(5).prepare_build.sh这是一个linux下的shell脚本,主要是平台自己在打包之前的一个拷贝工作,在正式打包之前,把前四条里相应的文件给放到主工程里。

比如说

最后两行是为了在有些平台需要用他们提供的签名文件进行apk打包签名的时候用的。主工程底下都有相应的keystore文件和ant.poperties文件。前者存储了签名文件,后者存储了签名文件的密码和签名文件路径等信息。这两个文件是给ant用的。

 

上面的脚本会把相应平台的资源文件和其他文件拷贝到主工程。那么相应平台的代码呢?相应平台的代码呢?相应平台的代码呢?相应平台的代码呢?

由于咱们的平台是以库的形式出现的。如图所示

在这些个IsLibrary的工程目录底下的bin文件里用Eclipse生成.jar文件。该文件正确生成表明它已经把平台提供的sdk的类全以class文件的形式包进来了。所以这个文件其实就是相应平台插件的代码部分了。咱们只要把该jar文件拷贝到工程里就好了。

 

现在咱们资源准备好了,代码准备好了。来个for循环,批量打包吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值