Linux use apktool problem包体变大GLIBC2.14等问题

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如何加固防止被破解(防止逆向编译)》

|| 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。


作者:奥特曼超人Dujinyang

来源:CSDN

原文:https://dujinyang.blog.csdn.net/

版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/u/4164242/blog/3098422

1 . 把apk拷到apktool根目录下,执行:./apktool d xxx.apk,会生成xxx目录,里面有res目录(各种资源文件),smali目录(类似src目录,里面文件的语法不一样)及AndroidManifest.xml。 [*.apk->*.jar: sh ./dex2jar/dex2jar.sh xxx.apk,生成xxx_dex2jar.jar通过jd-linux看源码] 2 . 什么apk汉化啊,就到res/values里string.xml里修改字符串,或者拷贝一份values目录改为values-zh-rCN,再去里面修改string.xml里英文字符串改为中文,所谓的汉化就是这么简单。另外,有些图片里不是中文的得去改图片,那得用Photoshop了,图片也不能乱改,格式,图片大小(尺寸)得原来的。 3 . 修改smali文件,这个有些难度。比如有些apk安装了后要积分什么的,比如大于100才可以用的,其实这个值是用SharedPreference存放的,也就是存在xml里,,位置:/data/data/[包名]/shared_prefs的某个xml里,文件不多肯定是可以找到的。另外一种方法就是修改.smali文件也可以达到这目的,软件实现肯定是读取积分那个值给它修改一下就可以了,例如 const/16 v0 100 (其实就是 v0 = 100)这个语法有点像汇编,觉得还是比汇编简单,v0 v1 ...是寄存器,之前会跟变量关联的。具体的还是自己看看smali语法。 4 . 打包生成apk,执行:./apktool b xxx,会在xxx里面生成,一个dist目录,里面就是xxx.apk,但不能安装滴,提示(Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]),没有给这个apk签名, 5 . 签名,执行:sh ./dex2jar/d2j-apk-sign.sh ./xxx/dist/xxx.apk 就是给刚才那个apk签名,生成的文件还是xxx.apkapktool根目录下。这样就大功告成啦。 [请看:http://blog.csdn.net/zhouyuanjing/article/details/7446988]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值