'Resource linking fails on lStar with error

I'm working on a android Native application. My Android builds began to fail without any changes.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':etndoorcontrol:processHesuan_faceDebugResources'.
> Android resource linking failed
  C:\Users\xqf\.gradle\caches\transforms-2\files-2.1\fe7b90aa462d9a2e04dd8216aa450a51\res\values\values.xml:2422:5-2449:25: AAPT: error: resource android:attr/lStar not found.

  error: failed linking references.

Then I tried 2 solutions

//soultion 1.
configurations.all {
    resolutionStrategy {
        // Java language implementation
        force "androidx.core:core:1.6.0"
        // Kotlin
        force "androidx.core:core-ktx:1.6.0"

    }
}

After I add this to app/build.gradle, the app can build correct.but after I install the apk and run .there is a new problem.

java stacktrace:
java.lang.NoClassDefFoundError: androidx.appcompat.widget.Toolbar
    at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
    at java.lang.Class.getDexCacheType(Class.java:2551)
    at java.lang.reflect.AbstractMethod.getParameterTypes(AbstractMethod.java:169)
    at java.lang.reflect.Method.getParameterTypes(Method.java:193)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:163)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64)
    at org.greenrobot.eventbus.EventBus.register(EventBus.java:140)
    at com.yarward.a10doorcontrol.homepage.HomePageActivity.initFields(HomePageActivity.java:334)
    at com.yarward.base.mvp.view.BaseActivity.onCreate(BaseActivity.java:82)
    at com.yarward.a10doorcontrol.homepage.HomePageActivity.onCreate(HomePageActivity.java:257)
    at android.app.Activity.performCreate(Activity.java:6709)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2628)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2736)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1487)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6157)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
Caused by: java.lang.ClassNotFoundException: androidx.appcompat.widget.Toolbar
    at java.lang.VMClassLoader.findLoadedClass(Native Method)
    at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at libcore.reflect.InternalNames.getClass(InternalNames.java:53)
    ... 22 more
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/view/MenuHost;
    at java.lang.VMClassLoader.findLoadedClass(Native Method)
    at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at libcore.reflect.InternalNames.getClass(InternalNames.java:53)
    at java.lang.Class.getDexCacheType(Class.java:2551)
    at java.lang.reflect.AbstractMethod.getParameterTypes(AbstractMethod.java:169)
    at java.lang.reflect.Method.getParameterTypes(Method.java:193)
    at java.lang.Class.getDeclaredMethods(Class.java:1812)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:154)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.view.MenuHost" on path: DexPathList[[zip file "/data/app/com.yarward.hesuanface-1/base.apk"],nativeLibraryDirectories=[/data/app/com.yarward.hesuanface-1/lib/arm, /data/app/com.yarward.hesuanface-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    ... 28 more

After this, I tried the other solution, as below:

ext{
  androidX = 1.6.0
}

but this is not working for me.



Solution 1:[1]

axel8888 thank your sir, yes, I have solved this problem. yes, you are right , when I try solution one again

configurations.all {
    resolutionStrategy {
        // Java language implementation
        force "androidx.core:core:1.6.0"
        // Kotlin
        force "androidx.core:core-ktx:1.6.0"

    }
}

and as you the problem is now in

androidx.appcompat:appcompat:1.4.0-alpha

so I checked the gradle dependencies, yes , even I used

androidx.appcompat:appcompat:1.3.1

but my project shows the version is 1.4.0-alpha. here is my solution

    configurations.all {
        resolutionStrategy.eachDependency { details ->
            def requested = details.requested
            
            if (requested.group == "androidx.appcompat") {
                if (requested.name == "appcompat") {
                    details.useVersion "1.3.1"
                }
            }


        }
    }

and it worked, now my project can build and run correctly, thank you, sir!

Solution 2:[2]

Obveiously the problem is now in androidx.appcompat:appcompat:1.4.0-alpha. If your UI use Toolbar, you will get the MenuHost not found crash.BUT, evenif I use resolutionStrategy to force 'androidx.appcompat:appcompat:1.3.1', dependency still make it toandroidx.appcompat:appcompat:{strictly 1.4.0-beta01}

It still confuse me a lot.

SOLVED -- someone write a update code for appcompat before... now it can force to 1.3.1 and solve the problem

Solution 3:[3]

change implementation 'androidx.appcompat:appcompat:1.4.0' to implementation 'androidx.appcompat:appcompat:1.3.1'

that's it

Solution 4:[4]

implementation 'androidx.appcompat:appcompat:1.4.1'

was causing the problem, going back to 1.3.1 worked.

implementation 'androidx.appcompat:appcompat:1.3.1'

ill update once I get an official solution.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 charles-lun
Solution 2
Solution 3 Antene Teme
Solution 4 Rishabh Raj Gupta