1 #ifndef AAPT_MANIFEST_MERGER_H 2 #define AAPT_MANIFEST_MERGER_H 3 4 #include "Logger.h" 5 #include "Source.h" 6 #include "XmlDom.h" 7 8 #include <memory> 9 #include <string> 10 11 namespace aapt { 12 13 class ManifestMerger { 14 public: 15 struct Options { 16 }; 17 18 ManifestMerger(const Options& options); 19 20 bool setAppManifest(const Source& source, const std::u16string& package, 21 std::unique_ptr<xml::Node> root); 22 23 bool mergeLibraryManifest(const Source& source, const std::u16string& package, 24 std::unique_ptr<xml::Node> libRoot); 25 26 xml::Node* getMergedXml(); 27 28 bool printMerged(); 29 30 private: 31 bool mergeNewOrEqual(xml::Element* parentA, xml::Element* elA, xml::Element* elB); 32 bool mergePreferRequired(xml::Element* parentA, xml::Element* elA, xml::Element* elB); 33 bool checkEqual(xml::Element* elA, xml::Element* elB); 34 bool mergeApplication(xml::Element* applicationA, xml::Element* applicationB); 35 bool mergeUsesSdk(xml::Element* elA, xml::Element* elB); 36 37 Options mOptions; 38 std::unique_ptr<xml::Node> mRoot; 39 SourceLogger mAppLogger; 40 SourceLogger mLogger; 41 }; 42 43 } // namespace aapt 44 45 #endif // AAPT_MANIFEST_MERGER_H 46