Android 9.0 का निर्माण करें

त्रुटि: Dex2oat बूट छवि को संकलित करने में विफल रहा। बूट क्लासपाथ असंगत होने की संभावना है। ART_BOOT_IMAGE_EXTRA_ARGS=–runtime-arg -verbose: सत्यापन त्रुटियों को देखने के लिए सत्यापनकर्ता के साथ पुनर्निर्माण करें।

2
elias 18 फरवरी 2020, 10:15

3 जवाब

जब नीचे दिए गए पैच को लागू करते हैं तो डेक्सोट को फिर से प्यार कर सकते हैं, लेकिन फिर भी 99% का निर्माण करते हैं और हमेशा प्रतीक्षा करते हैं।

From a177377c4f206c7c4c5463158cf83af65fae17a9 Mon Sep 17 00:00:00 2001
Date: Wed, 3 Jul 2019 14:28:40 +0800
Subject: [PATCH] Revert "Use FdFile::Copy() in dex2oat for better error
 checking."

This reverts commit b55cc6df451e7653baf6f49dce1f2a0c03ba4bc6.
---
 dex2oat/dex2oat.cc | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index fe927bbc1c..974eaec711 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -2223,14 +2223,15 @@ class Dex2Oat FINAL {
         TimingLogger::ScopedTiming t("dex2oat OatFile copy", timings_);
         std::unique_ptr<File> in(OS::OpenFileForReading(oat_filenames_[i]));
         std::unique_ptr<File> out(OS::CreateEmptyFile(oat_unstripped_[i]));
-        int64_t in_length = in->GetLength();
-        if (in_length < 0) {
-          PLOG(ERROR) << "Failed to get the length of oat file: " << in->GetPath();
-          return false;
-        }
-        if (!out->Copy(in.get(), 0, in_length)) {
-          PLOG(ERROR) << "Failed to copy oat file to file: " << out->GetPath();
-          return false;
+        size_t buffer_size = 8192;
+        std::unique_ptr<uint8_t[]> buffer(new uint8_t[buffer_size]);
+        while (true) {
+          int bytes_read = TEMP_FAILURE_RETRY(read(in->Fd(), buffer.get(), buffer_size));
+          if (bytes_read <= 0) {
+            break;
+          }
+          bool write_ok = out->WriteFully(buffer.get(), bytes_read);
+          CHECK(write_ok);
         }
         if (out->FlushCloseOrErase() != 0) {
           PLOG(ERROR) << "Failed to flush and close copied oat file: " << oat_unstripped_[i];
-- 
2.19.1
0
elias 18 फरवरी 2020, 10:19
क्या किसी के पास समस्या को मौलिक रूप से ठीक करने का कोई तरीका है?
 – 
elias
18 फरवरी 2020, 10:22

अब हम नीचे दिए गए वर्कअराउंड मेथड एक्सपोर्ट WITH_DEXPREOPT=falsee का उपयोग dex2oat को निष्क्रिय करने के लिए करते हैं

0
elias 20 फरवरी 2020, 04:05

बस sse4.2/popcount . के लिए अनुकूलन अक्षम करें

फ़ाइल में

./art/build/Android.bp

        host: {
        cflags: [
            // Bug: 15446488. We don't omit the frame pointer to work around
            // clang/libunwind bugs that cause SEGVs in run-test-004-ThreadStress.
            "-fno-omit-frame-pointer",
            // The build assumes that all our x86/x86_64 hosts (such as buildbots and developer
            // desktops) support at least sse4.2/popcount. This firstly implies that the ART
            // runtime binary itself may exploit these features. Secondly, this implies that
            // the ART runtime passes these feature flags to dex2oat and JIT by calling the
            // method InstructionSetFeatures::FromCppDefines(). Since invoking dex2oat directly
            // does not pick up these flags, cross-compiling from a x86/x86_64 host to a
            // x86/x86_64 target should not be affected.
            //"-msse4.2",
            //"-mpopcnt",
        ],
    },
0
Oleg Kokorin 17 सितंबर 2021, 17:50