baksmali反编译出现:UNEXPECTED TOP-LEVEL ERROR:....Too many open files
解包大型apk文件,可能会出现例如以下错误,
UNEXPECTED TOP-LEVEL ERROR:
java.util.concurrent.ExecutionException: java.io.FileNotFoundException/./Contacts/com/google/common/base/Optional$1.smali (Too many open files)
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.jf.smali.main.main(main.java:219)
Caused by: java.io.FileNotFoundException:/./Contacts/com/google/common/base/Optional$1.smali (Too many open files)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at org.jf.smali.main.assembleSmaliFile(main.java:268)
at org.jf.smali.main.access$000(main.java:56)
at org.jf.smali.main$1.call(main.java:210)
at org.jf.smali.main$1.call(main.java:208)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
这是因为Linux文件数限制导致的错误.
能够使用Ulimit -a查看:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
解决办法就是提高这个上限数,切换到root账户,运行ulimit -n 4096
然后就在root以下运行baksmali就能够.
假设在root下没有java环境,仅仅要source一下java环境设置就能够了.比如我的环境设置文件为:
---------------setup.sh------------------------------
JAVA_HOME=/opt/jdk1.7.0_71
export JAVA_HOME
ANDROID_JAVA_HOME=/opt/jdk1.7.0_71
export ANDROID_JAVA_HOME
PATH=/opt/jdk1.7.0_71/bin
PATH
export PATH
仅仅须要source setup.sh就能够了,这是由于仅仅要离开root账户,或者重开terminal, ulimit的设置就无效了.
baksmali反编译出现:UNEXPECTED TOP-LEVEL ERROR:....Too many open files的更多相关文章
- Android混淆、反编译以及反破解的简单回顾
=========================================================================虽然反编译很简单,也没下面说的那么复杂,不过还是转了过 ...
- andriod的apk文件相关的编译反编译工具
1.smali-1.2.6.jar 用途:.smali文件 转成 classes.dex文件 说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改. 用法举例:命令行:jav ...
- (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
if (this == null) Console.WriteLine("this is null"); 这句话一写,大家一定觉得荒谬,然而 if 内代码的执行却是可能的!本文讲介 ...
- 编译openwrt时报错:fstools-2018-01-02-11efbf3b/libfstools/overlay.c: At top level: cc1: error: unrecognized command line option '-Wno-format-truncation' [-Werror]
1. 详细错误信息 [ 11%] Building C object CMakeFiles/fstools.dir/libfstools/overlay.c.o/home/jello/openwrt/ ...
- JD-GUI反编译出现ERROR
反编译Jar包一般使用JD-GUI工具,很方便.但有时会出现异常,如下: 此时,可以辅助使用另一个工具来反编译代码:Luyten(https://github.com/deathmarine/Luyt ...
- VS编译错误:fatal error C1859:unexpected precompiled header error, simply rerunning the compiler might fix this problem
fatal error C1859:unexpected precompiled header error, simply rerunning the compiler might fix this ...
- jd-gui反编译报错// INTERNAL ERROR //
最近在反编译class和jar包的时候,发现部分class无法反编译出来,换了最新版本的jd-gui和多个版本都不行,只能放弃了 解决方案:GitHub上找Luyten这个工具反编译 luyten是P ...
- dk.exe自动填报程序的反编译
dk.exe自动填报程序的反编译 dk.exe用于学校每日健康报的自动填写.
- Android odex文件反编译
odex 是经过优化的dex文件,且独立存在于apk文件.odex 多用于系统预制应用或服务.通过将apk中的dex文件进行 odex,可以加载 apk 的启动速度,同时减小空间的占用.请参考ODEX ...
随机推荐
- ST表【p1311】 选择客栈
题目描述 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到 n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0~k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...
- web通信 长连接、长轮询
http://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html
- JavaSript模块规范 - AMD规范与CMD规范介绍 (转)
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题 ...
- Bluetooth篇 开发实例之十一 官网的Bluetooth Chat sample的bug
当没有匹配的设备和没有找到可用设备的时候. // If there are paired devices, add each one to the ArrayAdapter if (pairedDev ...
- java内存缓存,节省内存
缓存的对象 这个问题就是我们上面提到的极端情况,在Java中,会对-128到127的Integer对象进行缓存,当创建新的Integer对象时,如果符合这个这个范围,并且已有存在的相同值的对象,则返回 ...
- PS Tips: powershell 将文件以utf8格式打开并另存
1. powershell 将文件以utf8格式打开并另存 Get-Content .\rep_position_liquidity.csv -Encoding UTF8 | Set-Content ...
- github 丢失的本地提交
open git bash git reflog git reset xxxxxxx
- Tomcat7.0源代码分析——启动与停止服务原理
前言 熟悉Tomcat的project师们.肯定都知道Tomcat是怎样启动与停止的. 对于startup.sh.startup.bat.shutdown.sh.shutdown.bat等脚本或者批处 ...
- [转载]Install Opera 12.16 Web Browser in CentOS/RHEL and Fedora
FROM: http://tecadmin.net/install-opera-web-browser-in-centos-rhel-fedora/ Opera is an modern web br ...
- fabricjs 高级篇(自定义类型)
原文:https://www.sitepoint.com/fabric-js-advanced/ <html> <head> <script src='./js/fabr ...