Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARCore 1.4.0 critical issue on sync / compilation #532

Closed
OlegNovosad opened this issue Aug 16, 2018 · 8 comments
Closed

ARCore 1.4.0 critical issue on sync / compilation #532

OlegNovosad opened this issue Aug 16, 2018 · 8 comments
Labels

Comments

@OlegNovosad
Copy link

Stackoverflow thread is here

Basically this occurred when I updated my project ARCore and Sceneform to 1.4.0 version. During build I received next issue:

Class content provided for type descriptor com.google.ar.core.h actually defines class com.google.ar.core.H Message{kind=ERROR, text=Class content provided for type descriptor com.google.ar.core.h actually defines class com.google.ar.core.H, sources=[Unknown source file], tool name=Optional.of(D8)}

Was not able to Google it so the only thing I tried after all recommendations on similar issues - downgrade version and it started to work.

@inio
Copy link

inio commented Aug 16, 2018

That's pretty odd. We'll look into it.

From the SO post: you got this error when building for the x86 emulator, right? I don't think architecture would affect clearly Java-related build-time issues, but just in case it matters I want to document that.

@inio inio added the bug label Aug 16, 2018
@inio
Copy link

inio commented Aug 16, 2018

On the upside, congrats on being the first person to ever ask about this diagnostic message!

@OlegNovosad
Copy link
Author

I built for Pixel 2, x86 arch. Also I did built for Samsung Galaxy S8.

@OlegNovosad
Copy link
Author

OlegNovosad commented Aug 17, 2018

More updates to the issue. Still might be strange but worth to try. I had my AR running if ArCore apk was already installed. After I uninstall it, and added this code in my onCreateView() method in Fragment:

private void verifyArSupported() {
        ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(App.getContext());
        if (availability.isTransient()) {
            new Handler().postDelayed(() -> verifyArSupported(), 200);
        }

        if (availability.isSupported()) {
            btnAR.setVisibility(View.VISIBLE);
            btnAR.setEnabled(true);
        } else {
            btnAR.setVisibility(View.GONE);
            btnAR.setEnabled(false);
        }
    }

I started receiving next error:

Process: com.severenity, PID: 5548
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/ar/core/a;
        at com.google.ar.core.ArCoreApk$Availability.<clinit>(Unknown Source)
        at com.google.ar.core.h.checkAvailability(Unknown Source)
        at com.severenity.view.quests.QuestPartFragment.verifyArSupported(QuestPartFragment.java:247)
        at com.severenity.view.quests.QuestPartFragment.onCreateView(QuestPartFragment.java:206)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
        at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2215)
        at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:649)
        at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:167)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1238)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
        at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1616)
        at android.view.View.measure(View.java:21121)
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6462)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.view.View.measure(View.java:21121)
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6462)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6462)
        at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6462)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6462)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6462)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at com.android.internal.policy.DecorView.onMeasure(DecorView.java:897)
        at android.view.View.measure(View.java:21121)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2625)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1677)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1928)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1550)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7189)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959)
        at android.view.Choreographer.doCallbacks(Choreographer.java:734)
        at android.view.Choreographer.doFrame(Choreographer.java:670)
08-17 15:21:10.399 5548-5548/com.severenity E/AndroidRuntime:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6776)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.ar.core.a" on path: DexPathList[[zip file "/data/app/com.severenity-1/base.apk"],nativeLibraryDirectories=[/data/app/com.severenity-1/lib/arm64, /data/app/com.severenity-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

I also tried other methods (onActivityCreated(), onResume()) in fragment, but they did not work. Hope this helps somehow.

@inio
Copy link

inio commented Aug 17, 2018

This is starting to sound like your build system might be part of the problem. Try turning off proguard and any other postprocessing and see if that changes anything.

@OlegNovosad
Copy link
Author

OlegNovosad commented Aug 18, 2018

Funny thing. I tried to disable proguard and it did not help. The thing helped is answered at StackOverflow here

Firebase Performance Plugin was causing a lot of troubles and after adding to app gradle file this:

if (!project.gradle.startParameter.taskNames.any { taskName ->
    taskName.toLowerCase().contains('assemble') && taskName.toLowerCase().contains('debug') }) {
    apply plugin: 'com.google.firebase.firebase-perf'
}

and to main gradle file this:

if (!project.gradle.startParameter.taskNames.any { taskName ->
    taskName.toLowerCase().contains('assemble') && taskName.toLowerCase().contains('debug') }) {
    classpath("com.google.firebase:firebase-plugins:1.1.5") {
        exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
}

Issue disappeared. But still it would be great to have more descriptive error messages in such cases.

Update: looks like Firebase Performance Plugin was causing the issue. It still failed for release build type, so after complete removal - things did work.

@efthymios1991
Copy link

@OlegNovosad Did you manage to solve this one? I am getting a similar error caused by the firebase-performance as well

@inio
Copy link

inio commented Nov 14, 2018

This is likely to to collisions between proguarded class names. Per #566 we've tweaked our SDK proguard config to keep all package names so hopefully this will be less of an issue starting with the 1.6 SDK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants