1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#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
|