MacOS कैटालिना पर रेंडरस्क्रिप्ट टूट गया (10.15)


10

मैंने मैकओएस कैटालिना को अपडेट किया है। आज सुबह जब मैं अपने एंड्रॉइड प्रोजेक्ट पर काम कर रहा था, तो उसने अचानक निम्नलिखित अपवाद देना शुरू कर दिया: "त्रुटि: कारण: त्रुटि = 86, निष्पादन में खराब सीपीयू प्रकार"।

मुझे इस पर संदेह है क्योंकि मैंने macOS 10.15 में अपडेट किया है और क्योंकि मैंने अपने प्रोजेक्ट के लिए एपीके बनाने की कोशिश की है (इसलिए यह रेंडरस्क्रिप्ट सामान को फिर से बनाता है)। यहाँ पूर्ण स्टैक ट्रेस दिया गया है:

org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld''
    at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:232)
    at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:209)
    at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:356)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
    at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:38)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
Caused by: net.rubygrapefruit.platform.NativeException: Could not start '/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
    at org.gradle.process.internal.ExecHandleRunner.startProcess(ExecHandleRunner.java:97)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:70)
    ... 7 more
Caused by: java.io.IOException: Cannot run program "/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld" (in directory "/Users/name/Documents/Projects/onlinetrucks_android/MyApplication/app"): error=86, Bad CPU type in executable
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 10 more
Caused by: java.io.IOException: error=86, Bad CPU type in executable
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 11 more

और ग्रैडल सिंक करने पर, मुझे मिलता है

warning: Linking two modules of different target triples: /Users/name/Library/Android/sdk/build-tools/28.0.3/renderscript/lib/bc/x86/libclcore.bc' is 'armv7--linux-android' whereas '/Users/name/Documents/Projects/onlinetrucks_android/MyApplication/app/build/generated/res/rs/debug/raw/bc32/singlesource.bc' is 'armv7-none-linux-gnueabi'

तथा

Execution failed for task ':app:compileDebugRenderscript'.

'कमांड' / 'कमांड' / 'यूआर / लॉर्ड्स / ऑन्ड्रॉइड / एसडीके / बिल्ड-tools/28.0.3/arm-linux-androideabi-ld' शुरू करने में एक समस्या हुई।

एंड्रॉइड स्टूडियो को इसके बजाय पुस्तकालयों के 64-बिट आज्ञाकारी संस्करणों का उपयोग करने के लिए मजबूर करने का एक तरीका है? किसी भी मदद की सराहना की जाएगी, क्योंकि परियोजना का एक बड़ा हिस्सा रेंडरस्क्रिप्ट पर निर्भर करता है।

अतिरिक्त नोट्स:

  1. मैं इस परियोजना में androidX का उपयोग नहीं करता हूं, क्योंकि यह रेंडरस्क्रिप्ट को गड़बड़ कर देता है और फिर इसका कारण Google Play की 64-बिट आवश्यकता के लिए संगत नहीं होना है।

  2. मेरे ग्रेड फ़ाइल में रेंडरस्क्रिप्ट भाग ऐसा दिखता है:

    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true

जवाबों:


6

किसी को भी एक ही समस्या होने पर, यह एक बग है। रेंडरस्क्रिप्ट का उपयोग करते समय, लिंकर 32 बिट फ़ाइल का उपयोग करता है। कई कीड़े लॉग किए गए हैं। यदि आप ट्रैक रखना चाहते हैं, तो आप यहाँ पर क्या हो रहा है उसका अनुसरण कर सकते हैं: https://issuetracker.google.com/issues/142590626

अंगूठा पकड़ना कि वे इसे जल्द ठीक कर दें!

अद्यतन: उन्होंने इसे नवीनतम बिल्डटूल संस्करण 29.0.3 में तय किया है। इसका उपयोग करने के लिए आपको Android Studio 3.6 पर भी अपडेट करना होगा।

बोनस: AndroidX AS WELL पर अपडेट करने की कोशिश कर रहे किसी और के लिए - रेंडरस्क्रिप्ट Android6 पर टूट सकता है। एक वर्कअराउंड है (जहाँ तक मैं बता सकता हूँ) जहाँ आप renderscriptSupportModeEnabled को झूठा सेट करते हैं - लेकिन यह सभी उपकरणों के लिए इसे ठीक नहीं करता है (जैसे। श्याओमी रेडमी गो - एंड्रॉइड 8.1 - फिर मेरे लिए टूट जाता है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.