前提是符号还在,正常默认是在的
使用
sh find_category.sh xxx.a
sh find_category.sh xxx.framework/xxx
执行后找到category.txt文件
find_category.sh脚本
#包路径
file_path=$1
#解包文件名,生成文件nm.temp
temp_output_nm="nm.temp"
#删除解包文件中一些多余的,生成文件nm_delete.temp
temp_output_nm_delete="nm_delete.temp"
#生成找到的分类文件category.txt
output_category="category.txt"
#执行解包
nm -j $file_path > $temp_output_nm
#删除一些没用的
cp $temp_output_nm $temp_output_nm_delete
filename=$temp_output_nm_delete
sed -i "" "/_OBJC/d" $filename
sed -i "" "/ltmp/d" $filename
sed -i "" "/lCPI/d" $filename
sed -i "" "/lJTI/d" $filename
sed -i "" "/GCC_except/d" $filename
sed -i "" "/l_.str/d" $filename
sed -i "" "/l__unnamed_/d" $filename
sed -i "" "/___/d" $filename
sed -i "" "/_objc_/d" $filename
#找到分类
grep "(*[-|+].*)" $temp_output_nm_delete > $output_category
#删除临时文件
#rm $temp_output_nm
#rm $temp_output_nm_delete
网友评论