Rosemoe/sora-editor

Crash

Closed this issue · 14 comments

E FATAL EXCEPTION: AsyncAnalyzer-1
java.lang.NoSuchMethodError: No virtual method toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; in class Ljava/util/ArrayList; or its super classes (declaration of 'java.util.ArrayList' appears in /apex/com.android.art/javalib/core-oj.jar)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:250)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.$r8$lambda$e6LOtlCTSJCNqRznBuHKjnUTyj0(RuleFactory.java:0)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(R8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.$r8$lambda$e6LOtlCTSJCNqRznBuHKjnUTyj0(RuleFactory.java:0)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(R8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.$r8$lambda$e6LOtlCTSJCNqRznBuHKjnUTyj0(RuleFactory.java:0)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(R8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.$r8$lambda$e6LOtlCTSJCNqRznBuHKjnUTyj0(RuleFactory.java:0)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(R8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.$r8$lambda$e6LOtlCTSJCNqRznBuHKjnUTyj0(RuleFactory.java:0)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(R8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.grammar.Grammar._tokenize(Grammar.java:282)
at org.eclipse.tm4e.core.internal.grammar.Grammar.tokenizeLine2(Grammar.java:271)
at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:212)
at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:67)
at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.initialize(AsyncIncrementalAnalyzeManager.java:451)
at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.handleMessage(AsyncIncrementalAnalyzeManager.java:473)
at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.run(AsyncIncrementalAnalyzeManager.java:581)

Please follow this guide to enable desugaring for your app.

@Rosemoe I just tried this method, but it didn’t work and it still crashed. Beside, I downloaded the 0.23.2 version of the release package(https://github.com/Rosemoe/sora-editor/releases/tag/0.23.2). It also had the same problem, the exception just was caught.

The android system version of my phone is 12.

I'm sure the demo app generated by CI is correctly desugared, because I've seen desugared API invocation in the CI build APK.

How do you include the the textmate module into your project and build the demo app?

For desugaring: AGP 7.4.+ required and we also recommend a higher buildTools version. In the project we are using build tools 34.0.0.

Desugared API invocation:
Screenshot

@Rosemoe I just reinstall the apk from CI : https://github.com/Rosemoe/sora-editor/actions/runs/7860087077
When I running it, it show error toast like this:
image

And I search the log file in app private dir:
image
File content:

Crash at 1708348943847(timestamp) in thread named 'AsyncAnalyzer-1'
Local date and time:2024年2月19日 下午9:22:23
BOARD=BMH
SOC_MANUFACTURER=hisilicon
ACTIVE_CODENAMES=[]
CPU_ABI2=
HOST=cn-central-hcd-2a-267f12c241698663850016-6f869645b-5nhbd
versionName=0.23.2-8bf3450-SNAPSHOT-1707631627554
SUPPORTED_64_BIT_ABIS=[arm64-v8a]
CODENAME=REL
CPU_ABI=arm64-v8a
PERMISSIONS_REVIEW_REQUIRED=true
RELEASE_OR_CODENAME=12
SDK_INT=31
DISPLAY=BMH-AN10 4.0.0.118(C00E118R4P4)
SUPPORTED_ABIS=[arm64-v8a, armeabi-v7a, armeabi]
FINGERPRINTEX=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
FINGERPRINT=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
PRODUCT=BMH-AN10
PREVIEW_SDK_FINGERPRINT=REL
ID=HUAWEIBMH-AN10
SDK=31
HWFINGERPRINT=///BMH-LGRP1-CHN 4.0.0.118/BMH-AN10-CUST 4.0.0.118(C00)/BMH-AN10-PRELOAD 4.0.0.4(C00R4)/
SOC_MODEL=kirin
TYPE=user
SERIAL=unknown
DEVICE=HWBMH
ODM_SKU=BMH-AN10
SECURITY_PATCH=2021-10-05
TIME=1698666131000
BASE_OS=
MODEL=BMH-AN10
RELEASE=12
MANUFACTURER=HUAWEI
USER=test
MEDIA_PERFORMANCE_CLASS=0
versionCode=83
BRAND=HONOR
SUPPORTED_32_BIT_ABIS=[armeabi-v7a, armeabi]
HARDWARE=kirin985
IS_DEBUGGABLE=false
FIRST_SDK_INT=29
BOOTLOADER=unknown
RADIO=unknown
PREVIEW_SDK_INT=0
UNKNOWN=unknown
IS_EMULATOR=false
SKU=unknown
TAGS=release-keys
INCREMENTAL=104.0.0.118C00
java.lang.NoSuchMethodError: No static method obtain(IJ)Lio/github/rosemoe/sora/lang/styling/Span; in class Lio/github/rosemoe/sora/lang/styling/Span; or its super classes (declaration of 'io.github.rosemoe.sora.lang.styling.Span' appears in /data/app/~~_y2nT16-CIFmxmYI_NJYPw==/io.github.rosemoe.sora.app-6Yb5BtynTVwCm8erGeJCSQ==/base.apk!classes2.dex)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:241)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:66)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.initialize(AsyncIncrementalAnalyzeManager.java:450)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.handleMessage(AsyncIncrementalAnalyzeManager.java:472)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.run(AsyncIncrementalAnalyzeManager.java:580)

Crash at 1708348943849(timestamp) in thread named 'AsyncAnalyzer-2'
Local date and time:2024年2月19日 下午9:22:23
BOARD=BMH
SOC_MANUFACTURER=hisilicon
ACTIVE_CODENAMES=[]
CPU_ABI2=
HOST=cn-central-hcd-2a-267f12c241698663850016-6f869645b-5nhbd
versionName=0.23.2-8bf3450-SNAPSHOT-1707631627554
SUPPORTED_64_BIT_ABIS=[arm64-v8a]
CODENAME=REL
CPU_ABI=arm64-v8a
PERMISSIONS_REVIEW_REQUIRED=true
RELEASE_OR_CODENAME=12
SDK_INT=31
DISPLAY=BMH-AN10 4.0.0.118(C00E118R4P4)
SUPPORTED_ABIS=[arm64-v8a, armeabi-v7a, armeabi]
FINGERPRINTEX=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
FINGERPRINT=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
PRODUCT=BMH-AN10
PREVIEW_SDK_FINGERPRINT=REL
ID=HUAWEIBMH-AN10
SDK=31
HWFINGERPRINT=///BMH-LGRP1-CHN 4.0.0.118/BMH-AN10-CUST 4.0.0.118(C00)/BMH-AN10-PRELOAD 4.0.0.4(C00R4)/
SOC_MODEL=kirin
TYPE=user
SERIAL=unknown
DEVICE=HWBMH
ODM_SKU=BMH-AN10
SECURITY_PATCH=2021-10-05
TIME=1698666131000
BASE_OS=
MODEL=BMH-AN10
RELEASE=12
MANUFACTURER=HUAWEI
USER=test
MEDIA_PERFORMANCE_CLASS=0
versionCode=83
BRAND=HONOR
SUPPORTED_32_BIT_ABIS=[armeabi-v7a, armeabi]
HARDWARE=kirin985
IS_DEBUGGABLE=false
FIRST_SDK_INT=29
BOOTLOADER=unknown
RADIO=unknown
PREVIEW_SDK_INT=0
UNKNOWN=unknown
IS_EMULATOR=false
SKU=unknown
TAGS=release-keys
INCREMENTAL=104.0.0.118C00
java.lang.NoSuchMethodError: No static method obtain(IJ)Lio/github/rosemoe/sora/lang/styling/Span; in class Lio/github/rosemoe/sora/lang/styling/Span; or its super classes (declaration of 'io.github.rosemoe.sora.lang.styling.Span' appears in /data/app/~~_y2nT16-CIFmxmYI_NJYPw==/io.github.rosemoe.sora.app-6Yb5BtynTVwCm8erGeJCSQ==/base.apk!classes2.dex)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:241)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:66)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.initialize(AsyncIncrementalAnalyzeManager.java:450)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.handleMessage(AsyncIncrementalAnalyzeManager.java:472)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.run(AsyncIncrementalAnalyzeManager.java:580)

@Rosemoe If I build the apk locally with the release code of version 0.23.2, the error log content becomes this:

Crash at 1708349196979(timestamp) in thread named 'AsyncAnalyzer-1'
Local date and time:2024年2月19日 下午9:26:36
BOARD=BMH
SOC_MANUFACTURER=hisilicon
ACTIVE_CODENAMES=[]
CPU_ABI2=
HOST=cn-central-hcd-2a-267f12c241698663850016-6f869645b-5nhbd
versionName=0.23.2-1708349192974
SUPPORTED_64_BIT_ABIS=[arm64-v8a]
CODENAME=REL
CPU_ABI=arm64-v8a
PERMISSIONS_REVIEW_REQUIRED=true
RELEASE_OR_CODENAME=12
SDK_INT=31
DISPLAY=BMH-AN10 4.0.0.118(C00E118R4P4)
SUPPORTED_ABIS=[arm64-v8a, armeabi-v7a, armeabi]
FINGERPRINTEX=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
FINGERPRINT=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
PRODUCT=BMH-AN10
PREVIEW_SDK_FINGERPRINT=REL
ID=HUAWEIBMH-AN10
SDK=31
HWFINGERPRINT=///BMH-LGRP1-CHN 4.0.0.118/BMH-AN10-CUST 4.0.0.118(C00)/BMH-AN10-PRELOAD 4.0.0.4(C00R4)/
SOC_MODEL=kirin
TYPE=user
SERIAL=unknown
DEVICE=HWBMH
ODM_SKU=BMH-AN10
SECURITY_PATCH=2021-10-05
TIME=1698666131000
BASE_OS=
MODEL=BMH-AN10
RELEASE=12
MANUFACTURER=HUAWEI
USER=test
MEDIA_PERFORMANCE_CLASS=0
versionCode=83
BRAND=HONOR
SUPPORTED_32_BIT_ABIS=[armeabi-v7a, armeabi]
HARDWARE=kirin985
IS_DEBUGGABLE=false
FIRST_SDK_INT=29
BOOTLOADER=unknown
RADIO=unknown
PREVIEW_SDK_INT=0
UNKNOWN=unknown
IS_EMULATOR=false
SKU=unknown
TAGS=release-keys
INCREMENTAL=104.0.0.118C00
java.lang.NoSuchMethodError: No virtual method toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; in class Ljava/util/ArrayList; or its super classes (declaration of 'java.util.ArrayList' appears in /apex/com.android.art/javalib/core-oj.jar)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:250)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.grammar.Grammar._tokenize(Grammar.java:282)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.tokenizeLine2(Grammar.java:271)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:211)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:66)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.initialize(AsyncIncrementalAnalyzeManager.java:450)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.handleMessage(AsyncIncrementalAnalyzeManager.java:472)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.run(AsyncIncrementalAnalyzeManager.java:580)


And on another oppo device with Android 12 system version, my locally compiled apk also works very well, which makes me suspect a device compatibility issue

Well, the new error has been fixed in 0.23.3.

Currently, there are two options:

  • Use editor 0.22.x (old tm4e upstream didn't use these new API)
  • Try to build the apk in IDEA or by command line (reported by other users with similar issue)

We will try to fix issues caused by textmate upstream update.

@Rosemoe I'll try it out later using the latest released version

@Rosemoe I tried 0.23.4 version, It also occurred this problem:

Crash at 1708351826754(timestamp) in thread named 'AsyncAnalyzer-1'
Local date and time:2024年2月19日 下午10:10:26
BOARD=BMH
SOC_MANUFACTURER=hisilicon
ACTIVE_CODENAMES=[]
CPU_ABI2=
HOST=cn-central-hcd-2a-267f12c241698663850016-6f869645b-5nhbd
versionName=0.23.4-1708351821223
SUPPORTED_64_BIT_ABIS=[arm64-v8a]
CODENAME=REL
CPU_ABI=arm64-v8a
PERMISSIONS_REVIEW_REQUIRED=true
RELEASE_OR_CODENAME=12
SDK_INT=31
DISPLAY=BMH-AN10 4.0.0.118(C00E118R4P4)
SUPPORTED_ABIS=[arm64-v8a, armeabi-v7a, armeabi]
FINGERPRINTEX=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
FINGERPRINT=HONOR/BMH-AN10/HWBMH:12/HUAWEIBMH-AN10/104.0.0.118C00:user/release-keys
PRODUCT=BMH-AN10
PREVIEW_SDK_FINGERPRINT=REL
ID=HUAWEIBMH-AN10
SDK=31
HWFINGERPRINT=///BMH-LGRP1-CHN 4.0.0.118/BMH-AN10-CUST 4.0.0.118(C00)/BMH-AN10-PRELOAD 4.0.0.4(C00R4)/
SOC_MODEL=kirin
TYPE=user
SERIAL=unknown
DEVICE=HWBMH
ODM_SKU=BMH-AN10
SECURITY_PATCH=2021-10-05
TIME=1698666131000
BASE_OS=
MODEL=BMH-AN10
RELEASE=12
MANUFACTURER=HUAWEI
USER=test
MEDIA_PERFORMANCE_CLASS=0
versionCode=85
BRAND=HONOR
SUPPORTED_32_BIT_ABIS=[armeabi-v7a, armeabi]
HARDWARE=kirin985
IS_DEBUGGABLE=false
FIRST_SDK_INT=29
BOOTLOADER=unknown
RADIO=unknown
PREVIEW_SDK_INT=0
UNKNOWN=unknown
IS_EMULATOR=false
SKU=unknown
TAGS=release-keys
INCREMENTAL=104.0.0.118C00
java.lang.NoSuchMethodError: No virtual method toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; in class Ljava/util/ArrayList; or its super classes (declaration of 'java.util.ArrayList' appears in /apex/com.android.art/javalib/core-oj.jar)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:250)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda4.apply(Unknown Source:8)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
	at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
	at org.eclipse.tm4e.core.internal.grammar.Grammar._tokenize(Grammar.java:282)
	at org.eclipse.tm4e.core.internal.grammar.Grammar.tokenizeLine2(Grammar.java:271)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:212)
	at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:67)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.initialize(AsyncIncrementalAnalyzeManager.java:451)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.handleMessage(AsyncIncrementalAnalyzeManager.java:473)
	at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.run(AsyncIncrementalAnalyzeManager.java:581)


And on another oppo device with Android 12 system version, my locally compiled apk also work well, which makes me suspect a device compatibility issue.

@Rosemoe I will try other Huawei Honor devices to verify whether it is a Huawei Honor device compatibility issue.

I've investigated the issue. This is probably caused by Android Studio internal optimizations when running application. If you directly launch the application by clicking the 'Run' button (Shift+F10), the built APK is for target device. And the desugaring process guarantees the built APK works on the launched device, but not all devices that meets your minSdk version.

To build APK correctly, you should probably use the Build APK(s) in Build menu, or execute Gradle task. For example, build APK for debug variant by running Gradle task assembleDebug.

There might be an error when Android Studio fetching the SDK version from your device, so some APIs are not desugared.

Please try to build APK in that way and try to install it to your device to check if that works.

@Rosemoe By running ./gradlew clean and ./gradlew app: assembleDebug command to build apk. This problem was solved.

Thanks for your help.

Getting the same issue when building a via command ./gradlew clean app:bundleDebug.

Using io.github.Rosemoe.sora-editor:bom:0.23.4

Update
Tried all suggested approaches, error happens on android v10

as of now (version 0.23.4) the same error happens, even downgrading the textmate-language to 0.22.2.

Same error here on v0.23.4. Even when built with "Build APKs".
Stacktrace below.
Also, when I downgrade to 0.22.2 I have a different error, but still related to desugaring. On 0.22.2 it can't find a span field.

  1. Can it be related to this https://project-sora.github.io/sora-editor-docs/guide/getting-started#configure-desugaring-for-textmate. I have tried to add it, I can't even build the project with it.
  2. Do you guys have any workarounds?
java.lang.NoSuchMethodError: No virtual method toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; 
in class Ljava/util/ArrayList; or its super classes (declaration of 'java.util.ArrayList' appears in /apex/com.android.runtime/javalib/core-oj.jar)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:250)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(D8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:173)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:101)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(D8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.rule.RuleFactory._compilePatterns(RuleFactory.java:209)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.lambda$getCompiledRuleId$1(RuleFactory.java:78)
at org.eclipse.tm4e.core.internal.rule.RuleFactory$$ExternalSyntheticLambda1.apply(D8$$SyntheticClass:0)
at org.eclipse.tm4e.core.internal.grammar.Grammar.registerRule(Grammar.java:208)
at org.eclipse.tm4e.core.internal.rule.RuleFactory.getCompiledRuleId(RuleFactory.java:53)
at org.eclipse.tm4e.core.internal.grammar.Grammar._tokenize(Grammar.java:282)
at org.eclipse.tm4e.core.internal.grammar.Grammar.tokenizeLine2(Grammar.java:271)
at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:212)
at io.github.rosemoe.sora.langs.textmate.TextMateAnalyzer.tokenizeLine(TextMateAnalyzer.java:67)
at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.initialize(AsyncIncrementalAnalyzeManager.java:451)
at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.handleMessage(AsyncIncrementalAnalyzeManager.java:473)
at io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager$LooperThread.run(AsyncIncrementalAnalyzeManager.java:581)