d2j-dex2jar.bat -f classes.dex
反编译所有的dex文件为jar文件,把jar扩展名改为zip,然后用压缩软件打开,把里面无用的类删除掉,再改扩展名回jar
第三步,找出所有资源文件
应用库会自带资源文件,这些也得找出来
在project目录下,找到External Libraries,里面有所有依赖库,展开,能看到res,右键copy path,
拷贝下来res的路径,然后用以下c#代码,合并资源文件
[TestMethod]
public void copyRes()
string srcFolder = @"C:\Users\Jack\.gradle\caches\transforms-2\files-2.1\6a2e5ecc8c7c41647d2935ab32b14167\jetified-firebase-messaging-20.0.0\res";
string targetFolder = @"D:\test\jars\res";
var dirs = System.IO.Directory.GetDirectories(srcFolder);
foreach( var dir in dirs )
var name = Path.GetFileName(dir);
if (Directory.Exists(targetFolder + "\\" + name) == false)
Directory.CreateDirectory(targetFolder + "\\" + name);
var files = Directory.GetFiles(dir);
foreach( var file in files )
var filename = Path.GetFileName(file);
var targetfile = targetFolder + "\\" + name + "\\" + filename;
if ( File.Exists( targetfile ) == false )
File.Copy(file, targetfile);
else if( Path.GetExtension(file) == ".xml" )
XmlDocument xmldoc1 = new XmlDocument();
xmldoc1.Load(file);
XmlDocument xmldoc2 = new XmlDocument();
xmldoc2.Load(targetfile);
if (xmldoc2.DocumentElement.InnerXml != xmldoc1.DocumentElement.InnerXml)
xmldoc2.DocumentElement.InnerXml += xmldoc1.DocumentElement.InnerXml;
xmldoc2.Save(targetfile);
最后一步,AndroidManifest.xml文件
在app项目的 build\intermediates\merged_manifests\debug 目录下,找到AndroidManifest.xml 文件,把里面一些依赖库的内容,拷贝出来,这些也用得着