| #ifndef AAPT_MANIFEST_MERGER_H |
| #define AAPT_MANIFEST_MERGER_H |
| |
| #include "Logger.h" |
| #include "Source.h" |
| #include "XmlDom.h" |
| |
| #include <memory> |
| #include <string> |
| |
| namespace aapt { |
| |
| class ManifestMerger { |
| public: |
| struct Options { |
| }; |
| |
| ManifestMerger(const Options& options); |
| |
| bool setAppManifest(const Source& source, const std::u16string& package, |
| std::unique_ptr<xml::Node> root); |
| |
| bool mergeLibraryManifest(const Source& source, const std::u16string& package, |
| std::unique_ptr<xml::Node> libRoot); |
| |
| xml::Node* getMergedXml(); |
| |
| bool printMerged(); |
| |
| private: |
| bool mergeNewOrEqual(xml::Element* parentA, xml::Element* elA, xml::Element* elB); |
| bool mergePreferRequired(xml::Element* parentA, xml::Element* elA, xml::Element* elB); |
| bool checkEqual(xml::Element* elA, xml::Element* elB); |
| bool mergeApplication(xml::Element* applicationA, xml::Element* applicationB); |
| bool mergeUsesSdk(xml::Element* elA, xml::Element* elB); |
| |
| Options mOptions; |
| std::unique_ptr<xml::Node> mRoot; |
| SourceLogger mAppLogger; |
| SourceLogger mLogger; |
| }; |
| |
| } // namespace aapt |
| |
| #endif // AAPT_MANIFEST_MERGER_H |