Linux 服务器在线打包遇到的问题
转载请标明出处:
https://dujinyang.blog.csdn.net/article/details/80110942
本文出自:【奥特曼超人的博客】
- 在线打包的流程
- 遇到奇怪的 BUG(Linux apktool 包体变大)
1. 在线打包的流程
首先我们需要根据在线打包自动关联落地页,同时落地页也是动态生成可选的。
@[toc]
1.1 UML 图:
序列图:
sequenceDiagram
User->>Server: CID--------------------CNAME
Note right of 脚本: 队列处理
Server-->>User: URL--------------------CURL
流程图:
flowchat
st=>start: 开始
e=>end: 结束
op=>operation: 打包、落地页
cond=>condition: 确认
st->op->cond
cond(yes)->e
cond(no)->op
2. 遇到奇怪的 BUG
2.1 环境问题:首次运行会报错 `GLIBC_2.14′ not found。
注意:虽然服务器是 Linux,但是底层 GLIC 是未安全的,针对这个问题是需要单独安装这个 C /C++ 的库,不然会出现 打包时报错 `GLIBC_2.14′ not found。
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libz.so.1)
查看系统 glibc 支持的版本,一般是版本过低或者没有安装:
[root@djy bin]# rpm -qa|grep glibc
glibc-common-2.12-1.149.el6.x86_64
glibc-headers-2.12-1.149.el6.x86_64
glibc-2.12-1.149.el6.x86_64
glibc-devel-2.12-1.149.el6.x86_64
安装:
// 注意:configure 时需要修改环境变量 LD_LIBRARY_PATH,当前 build 目录不能在 LD_LIBRARY_PATH 中。[root@djyopt]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
[root@djy opt]# tar -xf glibc-2.14.tar.gz
[root@djy opt]# cd glibc-2.14
[root@djy glibc-2.14]# mkdir build
[root@djy glibc-2.14]# cd build
[root@djy build]# ../configure --prefix=/home/dyc/install/glibc
[root@djy build]# make -j4
[root@djy build]# make install
修改环境变量,增加 glibc/lib 目录:
export LD_LIBRARY_PATH=.:$QTDIR/lib:$PIEV4_SDK_LIB:/home/djy/install/glibc/lib
2.2 包体增加变大的问题
某个游戏的包在线上处理时,游戏包体会从 40M 变成 80M。打包流程的脚本是肯定没问题的,测试都通过了,那么就只有几种情况。
- 环境问题:Linux 服务器 C /C++ 底层库的问题
- 游戏母包的问题
- jar 包引起的脚本问题
那做了以下几点尝试:
- 服务器在线打包,Win 系统也跟着打包,对比。
- 另外一台服务器可以,对比服务器环境。
- 服务器反编译和 WIN 系统反编译大小对比。
- 脚本问题
- 依赖的 jar 问题
解决方案: 经过几个小时,发现了是 jar 的 2.1.3 问题,替换最新的 2.3.2 即可。
如果想加固的同学可以看这篇:《Android apk 如何加固防止被破解(防止逆向编译)》
<hr/>
<font color=”red”>||</font> 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。