android studio 如何把依赖导出成 jar

反编译工具

dex-tools-2.1-SNAPSHOT

第一步

用一个普通的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 文件,把里面一些依赖库的内容,拷贝出来,这些也用得着

posted @ 2020-09-28 11:37  IWing  阅读(73)  评论(0编辑  收藏