android studio 如何把依赖导出成 jar
反编译工具
第一步
用一个普通的app工程,引用所有的库,然后生成apk文件
第二步
把apk文件,改扩展名为zip,解压后,里面有几个*.dex文件,拷贝到dex-tool反编译工具目录下,
用命令:
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); } } else { } } } }
最后一步,AndroidManifest.xml文件
在app项目的 build\intermediates\merged_manifests\debug 目录下,找到AndroidManifest.xml 文件,把里面一些依赖库的内容,拷贝出来,这些也用得着