Loading libs/androidfw/Android.bp +1 −12 Original line number Diff line number Diff line Loading @@ -63,21 +63,15 @@ cc_library { "AssetsProvider.cpp", "AttributeResolution.cpp", "BigBuffer.cpp", "BigBufferStream.cpp", "ChunkIterator.cpp", "ConfigDescription.cpp", "FileStream.cpp", "Idmap.cpp", "LoadedArsc.cpp", "Locale.cpp", "LocaleData.cpp", "misc.cpp", "NinePatch.cpp", "ObbFile.cpp", "PosixUtils.cpp", "Png.cpp", "PngChunkFilter.cpp", "PngCrunch.cpp", "ResourceTimer.cpp", "ResourceTypes.cpp", "ResourceUtils.cpp", Loading @@ -90,10 +84,7 @@ cc_library { ], export_include_dirs: ["include"], export_shared_lib_headers: ["libz"], static_libs: [ "libincfs-utils", "libpng", ], static_libs: ["libincfs-utils"], whole_static_libs: [ "libandroidfw_pathutils", "libincfs-utils", Loading Loading @@ -207,11 +198,9 @@ cc_test { "tests/ConfigDescription_test.cpp", "tests/ConfigLocale_test.cpp", "tests/DynamicRefTable_test.cpp", "tests/FileStream_test.cpp", "tests/Idmap_test.cpp", "tests/LoadedArsc_test.cpp", "tests/Locale_test.cpp", "tests/NinePatch_test.cpp", "tests/ResourceTimer_test.cpp", "tests/ResourceUtils_test.cpp", "tests/ResTable_test.cpp", Loading tools/aapt2/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,10 @@ cc_library_host_static { srcs: [ "compile/IdAssigner.cpp", "compile/InlineXmlFormatParser.cpp", "compile/NinePatch.cpp", "compile/Png.cpp", "compile/PngChunkFilter.cpp", "compile/PngCrunch.cpp", "compile/PseudolocaleGenerator.cpp", "compile/Pseudolocalizer.cpp", "compile/XmlIdCollector.cpp", Loading @@ -108,7 +112,9 @@ cc_library_host_static { "format/binary/XmlFlattener.cpp", "format/proto/ProtoDeserialize.cpp", "format/proto/ProtoSerialize.cpp", "io/BigBufferStream.cpp", "io/File.cpp", "io/FileStream.cpp", "io/FileSystem.cpp", "io/StringStream.cpp", "io/Util.cpp", Loading tools/aapt2/LoadedApk.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -18,12 +18,12 @@ #include "ResourceValues.h" #include "ValueVisitor.h" #include "androidfw/BigBufferStream.h" #include "format/Archive.h" #include "format/binary/TableFlattener.h" #include "format/binary/XmlFlattener.h" #include "format/proto/ProtoDeserialize.h" #include "format/proto/ProtoSerialize.h" #include "io/BigBufferStream.h" #include "io/Util.h" #include "xml/XmlDom.h" Loading @@ -48,7 +48,7 @@ static ApkFormat DetermineApkFormat(io::IFileCollection* apk) { } // First try in proto format. std::unique_ptr<android::InputStream> manifest_in = manifest_file->OpenInputStream(); std::unique_ptr<io::InputStream> manifest_in = manifest_file->OpenInputStream(); if (manifest_in != nullptr) { pb::XmlNode pb_node; io::ProtoInputStreamReader proto_reader(manifest_in.get()); Loading Loading @@ -102,7 +102,7 @@ std::unique_ptr<LoadedApk> LoadedApk::LoadProtoApkFromFileCollection( io::IFile* table_file = collection->FindFile(kProtoResourceTablePath); if (table_file != nullptr) { pb::ResourceTable pb_table; std::unique_ptr<android::InputStream> in = table_file->OpenInputStream(); std::unique_ptr<io::InputStream> in = table_file->OpenInputStream(); if (in == nullptr) { diag->Error(android::DiagMessage(source) << "failed to open " << kProtoResourceTablePath); return {}; Loading @@ -129,7 +129,7 @@ std::unique_ptr<LoadedApk> LoadedApk::LoadProtoApkFromFileCollection( return {}; } std::unique_ptr<android::InputStream> manifest_in = manifest_file->OpenInputStream(); std::unique_ptr<io::InputStream> manifest_in = manifest_file->OpenInputStream(); if (manifest_in == nullptr) { diag->Error(android::DiagMessage(source) << "failed to open " << kAndroidManifestPath); return {}; Loading Loading @@ -262,7 +262,7 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, ResourceTable* split_table return false; } android::BigBufferInputStream input_stream(&buffer); io::BigBufferInputStream input_stream(&buffer); if (!io::CopyInputStreamToArchive(context, &input_stream, path, Loading Loading @@ -296,7 +296,7 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, ResourceTable* split_table } uint32_t compression_flags = file->WasCompressed() ? ArchiveEntry::kCompress : 0u; android::BigBufferInputStream manifest_buffer_in(&buffer); io::BigBufferInputStream manifest_buffer_in(&buffer); if (!io::CopyInputStreamToArchive(context, &manifest_buffer_in, path, compression_flags, writer)) { return false; Loading @@ -321,7 +321,7 @@ std::unique_ptr<xml::XmlResource> LoadedApk::LoadXml(const std::string& file_pat std::unique_ptr<xml::XmlResource> doc; if (format_ == ApkFormat::kProto) { std::unique_ptr<android::InputStream> in = file->OpenInputStream(); std::unique_ptr<io::InputStream> in = file->OpenInputStream(); if (!in) { diag->Error(android::DiagMessage() << "failed to open file"); return nullptr; Loading tools/aapt2/Main.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ #include "Diagnostics.h" #include "android-base/stringprintf.h" #include "android-base/utf8.h" #include "androidfw/FileStream.h" #include "androidfw/IDiagnostics.h" #include "androidfw/StringPiece.h" #include "cmd/ApkInfo.h" Loading @@ -38,6 +37,7 @@ #include "cmd/Dump.h" #include "cmd/Link.h" #include "cmd/Optimize.h" #include "io/FileStream.h" #include "trace/TraceBuffer.h" #include "util/Files.h" #include "util/Util.h" Loading Loading @@ -99,7 +99,7 @@ class MainCommand : public Command { */ class DaemonCommand : public Command { public: explicit DaemonCommand(android::FileOutputStream* out, android::IDiagnostics* diagnostics) explicit DaemonCommand(io::FileOutputStream* out, android::IDiagnostics* diagnostics) : Command("daemon", "m"), out_(out), diagnostics_(diagnostics) { SetDescription("Runs aapt in daemon mode. Each subsequent line is a single parameter to the\n" "command. The end of an invocation is signaled by providing an empty line."); Loading Loading @@ -147,7 +147,7 @@ class DaemonCommand : public Command { } private: android::FileOutputStream* out_; io::FileOutputStream* out_; android::IDiagnostics* diagnostics_; std::optional<std::string> trace_folder_; }; Loading @@ -167,7 +167,7 @@ int MainImpl(int argc, char** argv) { // Use a smaller buffer so that there is less latency for printing to stdout. constexpr size_t kStdOutBufferSize = 1024u; android::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); aapt::io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); aapt::text::Printer printer(&fout); aapt::StdErrDiagnostics diagnostics; Loading tools/aapt2/cmd/Compile.cpp +16 −19 Original line number Diff line number Diff line Loading @@ -25,16 +25,13 @@ #include "android-base/errors.h" #include "android-base/file.h" #include "android-base/utf8.h" #include "androidfw/BigBufferStream.h" #include "androidfw/ConfigDescription.h" #include "androidfw/FileStream.h" #include "androidfw/IDiagnostics.h" #include "androidfw/Image.h" #include "androidfw/Png.h" #include "androidfw/StringPiece.h" #include "cmd/Util.h" #include "compile/IdAssigner.h" #include "compile/InlineXmlFormatParser.h" #include "compile/Png.h" #include "compile/PseudolocaleGenerator.h" #include "compile/XmlIdCollector.h" #include "format/Archive.h" Loading @@ -42,6 +39,8 @@ #include "format/proto/ProtoSerialize.h" #include "google/protobuf/io/coded_stream.h" #include "google/protobuf/io/zero_copy_stream_impl_lite.h" #include "io/BigBufferStream.h" #include "io/FileStream.h" #include "io/FileSystem.h" #include "io/StringStream.h" #include "io/Util.h" Loading @@ -53,9 +52,9 @@ #include "xml/XmlDom.h" #include "xml/XmlPullParser.h" using ::aapt::io::FileInputStream; using ::aapt::text::Printer; using ::android::ConfigDescription; using ::android::FileInputStream; using ::android::StringPiece; using ::android::base::SystemErrorCodeToString; using ::google::protobuf::io::CopyingOutputStreamAdaptor; Loading Loading @@ -242,7 +241,7 @@ static bool CompileTable(IAaptContext* context, const CompileOptions& options, } if (options.generate_text_symbols_path) { android::FileOutputStream fout_text(options.generate_text_symbols_path.value()); io::FileOutputStream fout_text(options.generate_text_symbols_path.value()); if (fout_text.HadError()) { context->GetDiagnostics()->Error(android::DiagMessage() Loading Loading @@ -308,7 +307,7 @@ static bool CompileTable(IAaptContext* context, const CompileOptions& options, } static bool WriteHeaderAndDataToWriter(StringPiece output_path, const ResourceFile& file, android::KnownSizeInputStream* in, IArchiveWriter* writer, io::KnownSizeInputStream* in, IArchiveWriter* writer, android::IDiagnostics* diag) { TRACE_CALL(); // Start the entry so we can write the header. Loading Loading @@ -449,7 +448,7 @@ static bool CompileXml(IAaptContext* context, const CompileOptions& options, } if (options.generate_text_symbols_path) { android::FileOutputStream fout_text(options.generate_text_symbols_path.value()); io::FileOutputStream fout_text(options.generate_text_symbols_path.value()); if (fout_text.HadError()) { context->GetDiagnostics()->Error(android::DiagMessage() Loading Loading @@ -499,22 +498,21 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } android::BigBuffer crunched_png_buffer(4096); android::BigBufferOutputStream crunched_png_buffer_out(&crunched_png_buffer); io::BigBufferOutputStream crunched_png_buffer_out(&crunched_png_buffer); // Ensure that we only keep the chunks we care about if we end up // using the original PNG instead of the crunched one. const StringPiece content(reinterpret_cast<const char*>(data->data()), data->size()); android::PngChunkFilter png_chunk_filter(content); android::SourcePathDiagnostics source_diag(path_data.source, context->GetDiagnostics()); auto image = android::ReadPng(&png_chunk_filter, &source_diag); PngChunkFilter png_chunk_filter(content); std::unique_ptr<Image> image = ReadPng(context, path_data.source, &png_chunk_filter); if (!image) { return false; } std::unique_ptr<android::NinePatch> nine_patch; std::unique_ptr<NinePatch> nine_patch; if (path_data.extension == "9.png") { std::string err; nine_patch = android::NinePatch::Create(image->rows.get(), image->width, image->height, &err); nine_patch = NinePatch::Create(image->rows.get(), image->width, image->height, &err); if (!nine_patch) { context->GetDiagnostics()->Error(android::DiagMessage() << err); return false; Loading @@ -539,8 +537,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } // Write the crunched PNG. if (!android::WritePng(image.get(), nine_patch.get(), &crunched_png_buffer_out, {}, &source_diag, context->IsVerbose())) { if (!WritePng(context, image.get(), nine_patch.get(), &crunched_png_buffer_out, {})) { return false; } Loading @@ -560,7 +557,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, png_chunk_filter.Rewind(); android::BigBuffer filtered_png_buffer(4096); android::BigBufferOutputStream filtered_png_buffer_out(&filtered_png_buffer); io::BigBufferOutputStream filtered_png_buffer_out(&filtered_png_buffer); io::Copy(&filtered_png_buffer_out, &png_chunk_filter); buffer.AppendBuffer(std::move(filtered_png_buffer)); } Loading @@ -570,7 +567,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, // This will help catch exotic cases where the new code may generate larger PNGs. std::stringstream legacy_stream{std::string(content)}; android::BigBuffer legacy_buffer(4096); android::Png png(context->GetDiagnostics()); Png png(context->GetDiagnostics()); if (!png.process(path_data.source, &legacy_stream, &legacy_buffer, {})) { return false; } Loading @@ -581,7 +578,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } } android::BigBufferInputStream buffer_in(&buffer); io::BigBufferInputStream buffer_in(&buffer); return WriteHeaderAndDataToWriter(output_path, res_file, &buffer_in, writer, context->GetDiagnostics()); } Loading Loading
libs/androidfw/Android.bp +1 −12 Original line number Diff line number Diff line Loading @@ -63,21 +63,15 @@ cc_library { "AssetsProvider.cpp", "AttributeResolution.cpp", "BigBuffer.cpp", "BigBufferStream.cpp", "ChunkIterator.cpp", "ConfigDescription.cpp", "FileStream.cpp", "Idmap.cpp", "LoadedArsc.cpp", "Locale.cpp", "LocaleData.cpp", "misc.cpp", "NinePatch.cpp", "ObbFile.cpp", "PosixUtils.cpp", "Png.cpp", "PngChunkFilter.cpp", "PngCrunch.cpp", "ResourceTimer.cpp", "ResourceTypes.cpp", "ResourceUtils.cpp", Loading @@ -90,10 +84,7 @@ cc_library { ], export_include_dirs: ["include"], export_shared_lib_headers: ["libz"], static_libs: [ "libincfs-utils", "libpng", ], static_libs: ["libincfs-utils"], whole_static_libs: [ "libandroidfw_pathutils", "libincfs-utils", Loading Loading @@ -207,11 +198,9 @@ cc_test { "tests/ConfigDescription_test.cpp", "tests/ConfigLocale_test.cpp", "tests/DynamicRefTable_test.cpp", "tests/FileStream_test.cpp", "tests/Idmap_test.cpp", "tests/LoadedArsc_test.cpp", "tests/Locale_test.cpp", "tests/NinePatch_test.cpp", "tests/ResourceTimer_test.cpp", "tests/ResourceUtils_test.cpp", "tests/ResTable_test.cpp", Loading
tools/aapt2/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,10 @@ cc_library_host_static { srcs: [ "compile/IdAssigner.cpp", "compile/InlineXmlFormatParser.cpp", "compile/NinePatch.cpp", "compile/Png.cpp", "compile/PngChunkFilter.cpp", "compile/PngCrunch.cpp", "compile/PseudolocaleGenerator.cpp", "compile/Pseudolocalizer.cpp", "compile/XmlIdCollector.cpp", Loading @@ -108,7 +112,9 @@ cc_library_host_static { "format/binary/XmlFlattener.cpp", "format/proto/ProtoDeserialize.cpp", "format/proto/ProtoSerialize.cpp", "io/BigBufferStream.cpp", "io/File.cpp", "io/FileStream.cpp", "io/FileSystem.cpp", "io/StringStream.cpp", "io/Util.cpp", Loading
tools/aapt2/LoadedApk.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -18,12 +18,12 @@ #include "ResourceValues.h" #include "ValueVisitor.h" #include "androidfw/BigBufferStream.h" #include "format/Archive.h" #include "format/binary/TableFlattener.h" #include "format/binary/XmlFlattener.h" #include "format/proto/ProtoDeserialize.h" #include "format/proto/ProtoSerialize.h" #include "io/BigBufferStream.h" #include "io/Util.h" #include "xml/XmlDom.h" Loading @@ -48,7 +48,7 @@ static ApkFormat DetermineApkFormat(io::IFileCollection* apk) { } // First try in proto format. std::unique_ptr<android::InputStream> manifest_in = manifest_file->OpenInputStream(); std::unique_ptr<io::InputStream> manifest_in = manifest_file->OpenInputStream(); if (manifest_in != nullptr) { pb::XmlNode pb_node; io::ProtoInputStreamReader proto_reader(manifest_in.get()); Loading Loading @@ -102,7 +102,7 @@ std::unique_ptr<LoadedApk> LoadedApk::LoadProtoApkFromFileCollection( io::IFile* table_file = collection->FindFile(kProtoResourceTablePath); if (table_file != nullptr) { pb::ResourceTable pb_table; std::unique_ptr<android::InputStream> in = table_file->OpenInputStream(); std::unique_ptr<io::InputStream> in = table_file->OpenInputStream(); if (in == nullptr) { diag->Error(android::DiagMessage(source) << "failed to open " << kProtoResourceTablePath); return {}; Loading @@ -129,7 +129,7 @@ std::unique_ptr<LoadedApk> LoadedApk::LoadProtoApkFromFileCollection( return {}; } std::unique_ptr<android::InputStream> manifest_in = manifest_file->OpenInputStream(); std::unique_ptr<io::InputStream> manifest_in = manifest_file->OpenInputStream(); if (manifest_in == nullptr) { diag->Error(android::DiagMessage(source) << "failed to open " << kAndroidManifestPath); return {}; Loading Loading @@ -262,7 +262,7 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, ResourceTable* split_table return false; } android::BigBufferInputStream input_stream(&buffer); io::BigBufferInputStream input_stream(&buffer); if (!io::CopyInputStreamToArchive(context, &input_stream, path, Loading Loading @@ -296,7 +296,7 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, ResourceTable* split_table } uint32_t compression_flags = file->WasCompressed() ? ArchiveEntry::kCompress : 0u; android::BigBufferInputStream manifest_buffer_in(&buffer); io::BigBufferInputStream manifest_buffer_in(&buffer); if (!io::CopyInputStreamToArchive(context, &manifest_buffer_in, path, compression_flags, writer)) { return false; Loading @@ -321,7 +321,7 @@ std::unique_ptr<xml::XmlResource> LoadedApk::LoadXml(const std::string& file_pat std::unique_ptr<xml::XmlResource> doc; if (format_ == ApkFormat::kProto) { std::unique_ptr<android::InputStream> in = file->OpenInputStream(); std::unique_ptr<io::InputStream> in = file->OpenInputStream(); if (!in) { diag->Error(android::DiagMessage() << "failed to open file"); return nullptr; Loading
tools/aapt2/Main.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ #include "Diagnostics.h" #include "android-base/stringprintf.h" #include "android-base/utf8.h" #include "androidfw/FileStream.h" #include "androidfw/IDiagnostics.h" #include "androidfw/StringPiece.h" #include "cmd/ApkInfo.h" Loading @@ -38,6 +37,7 @@ #include "cmd/Dump.h" #include "cmd/Link.h" #include "cmd/Optimize.h" #include "io/FileStream.h" #include "trace/TraceBuffer.h" #include "util/Files.h" #include "util/Util.h" Loading Loading @@ -99,7 +99,7 @@ class MainCommand : public Command { */ class DaemonCommand : public Command { public: explicit DaemonCommand(android::FileOutputStream* out, android::IDiagnostics* diagnostics) explicit DaemonCommand(io::FileOutputStream* out, android::IDiagnostics* diagnostics) : Command("daemon", "m"), out_(out), diagnostics_(diagnostics) { SetDescription("Runs aapt in daemon mode. Each subsequent line is a single parameter to the\n" "command. The end of an invocation is signaled by providing an empty line."); Loading Loading @@ -147,7 +147,7 @@ class DaemonCommand : public Command { } private: android::FileOutputStream* out_; io::FileOutputStream* out_; android::IDiagnostics* diagnostics_; std::optional<std::string> trace_folder_; }; Loading @@ -167,7 +167,7 @@ int MainImpl(int argc, char** argv) { // Use a smaller buffer so that there is less latency for printing to stdout. constexpr size_t kStdOutBufferSize = 1024u; android::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); aapt::io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); aapt::text::Printer printer(&fout); aapt::StdErrDiagnostics diagnostics; Loading
tools/aapt2/cmd/Compile.cpp +16 −19 Original line number Diff line number Diff line Loading @@ -25,16 +25,13 @@ #include "android-base/errors.h" #include "android-base/file.h" #include "android-base/utf8.h" #include "androidfw/BigBufferStream.h" #include "androidfw/ConfigDescription.h" #include "androidfw/FileStream.h" #include "androidfw/IDiagnostics.h" #include "androidfw/Image.h" #include "androidfw/Png.h" #include "androidfw/StringPiece.h" #include "cmd/Util.h" #include "compile/IdAssigner.h" #include "compile/InlineXmlFormatParser.h" #include "compile/Png.h" #include "compile/PseudolocaleGenerator.h" #include "compile/XmlIdCollector.h" #include "format/Archive.h" Loading @@ -42,6 +39,8 @@ #include "format/proto/ProtoSerialize.h" #include "google/protobuf/io/coded_stream.h" #include "google/protobuf/io/zero_copy_stream_impl_lite.h" #include "io/BigBufferStream.h" #include "io/FileStream.h" #include "io/FileSystem.h" #include "io/StringStream.h" #include "io/Util.h" Loading @@ -53,9 +52,9 @@ #include "xml/XmlDom.h" #include "xml/XmlPullParser.h" using ::aapt::io::FileInputStream; using ::aapt::text::Printer; using ::android::ConfigDescription; using ::android::FileInputStream; using ::android::StringPiece; using ::android::base::SystemErrorCodeToString; using ::google::protobuf::io::CopyingOutputStreamAdaptor; Loading Loading @@ -242,7 +241,7 @@ static bool CompileTable(IAaptContext* context, const CompileOptions& options, } if (options.generate_text_symbols_path) { android::FileOutputStream fout_text(options.generate_text_symbols_path.value()); io::FileOutputStream fout_text(options.generate_text_symbols_path.value()); if (fout_text.HadError()) { context->GetDiagnostics()->Error(android::DiagMessage() Loading Loading @@ -308,7 +307,7 @@ static bool CompileTable(IAaptContext* context, const CompileOptions& options, } static bool WriteHeaderAndDataToWriter(StringPiece output_path, const ResourceFile& file, android::KnownSizeInputStream* in, IArchiveWriter* writer, io::KnownSizeInputStream* in, IArchiveWriter* writer, android::IDiagnostics* diag) { TRACE_CALL(); // Start the entry so we can write the header. Loading Loading @@ -449,7 +448,7 @@ static bool CompileXml(IAaptContext* context, const CompileOptions& options, } if (options.generate_text_symbols_path) { android::FileOutputStream fout_text(options.generate_text_symbols_path.value()); io::FileOutputStream fout_text(options.generate_text_symbols_path.value()); if (fout_text.HadError()) { context->GetDiagnostics()->Error(android::DiagMessage() Loading Loading @@ -499,22 +498,21 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } android::BigBuffer crunched_png_buffer(4096); android::BigBufferOutputStream crunched_png_buffer_out(&crunched_png_buffer); io::BigBufferOutputStream crunched_png_buffer_out(&crunched_png_buffer); // Ensure that we only keep the chunks we care about if we end up // using the original PNG instead of the crunched one. const StringPiece content(reinterpret_cast<const char*>(data->data()), data->size()); android::PngChunkFilter png_chunk_filter(content); android::SourcePathDiagnostics source_diag(path_data.source, context->GetDiagnostics()); auto image = android::ReadPng(&png_chunk_filter, &source_diag); PngChunkFilter png_chunk_filter(content); std::unique_ptr<Image> image = ReadPng(context, path_data.source, &png_chunk_filter); if (!image) { return false; } std::unique_ptr<android::NinePatch> nine_patch; std::unique_ptr<NinePatch> nine_patch; if (path_data.extension == "9.png") { std::string err; nine_patch = android::NinePatch::Create(image->rows.get(), image->width, image->height, &err); nine_patch = NinePatch::Create(image->rows.get(), image->width, image->height, &err); if (!nine_patch) { context->GetDiagnostics()->Error(android::DiagMessage() << err); return false; Loading @@ -539,8 +537,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } // Write the crunched PNG. if (!android::WritePng(image.get(), nine_patch.get(), &crunched_png_buffer_out, {}, &source_diag, context->IsVerbose())) { if (!WritePng(context, image.get(), nine_patch.get(), &crunched_png_buffer_out, {})) { return false; } Loading @@ -560,7 +557,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, png_chunk_filter.Rewind(); android::BigBuffer filtered_png_buffer(4096); android::BigBufferOutputStream filtered_png_buffer_out(&filtered_png_buffer); io::BigBufferOutputStream filtered_png_buffer_out(&filtered_png_buffer); io::Copy(&filtered_png_buffer_out, &png_chunk_filter); buffer.AppendBuffer(std::move(filtered_png_buffer)); } Loading @@ -570,7 +567,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, // This will help catch exotic cases where the new code may generate larger PNGs. std::stringstream legacy_stream{std::string(content)}; android::BigBuffer legacy_buffer(4096); android::Png png(context->GetDiagnostics()); Png png(context->GetDiagnostics()); if (!png.process(path_data.source, &legacy_stream, &legacy_buffer, {})) { return false; } Loading @@ -581,7 +578,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } } android::BigBufferInputStream buffer_in(&buffer); io::BigBufferInputStream buffer_in(&buffer); return WriteHeaderAndDataToWriter(output_path, res_file, &buffer_in, writer, context->GetDiagnostics()); } Loading