Android 即时库的 Studio 3.5 索引问题

Android Studio 3.5 indexing issues with instant libs

错误日志:

com.intellij.util.IncorrectOperationException: Incorrect package name: null
    at com.intellij.psi.impl.PsiElementFactoryImpl.createPackageStatement(PsiElementFactoryImpl.java:449)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.setPackageName(PsiJavaFileBaseImpl.java:125)
    at com.android.tools.idea.databinding.psiclass.LightBrClass.<init>(LightBrClass.kt:111)
    at com.android.tools.idea.databinding.psiclass.DataBindingClassFactory.getOrCreateBrClassFor(DataBindingClassFactory.java:63)
    at com.android.tools.idea.databinding.finders.BrClassFinder.compute(BrClassFinder.kt:42)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.lambda$getValueWithLock[=11=](CachedValueBase.java:236)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:116)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:237)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.android.tools.idea.databinding.finders.BrClassFinder.findClass(BrClassFinder.kt:66)
    at com.android.tools.idea.databinding.finders.BrClassFinder.findClasses(BrClassFinder.kt:71)
    at com.android.tools.idea.databinding.finders.BrClassFinder.getClasses(BrClassFinder.kt:55)
    at com.intellij.psi.impl.JavaPsiFacadeImpl.getClasses(JavaPsiFacadeImpl.java:293)
    at com.intellij.psi.impl.file.PsiPackageImpl.getClasses(PsiPackageImpl.java:158)
    at com.intellij.psi.impl.file.PsiPackageImpl.processDeclarations(PsiPackageImpl.java:317)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.processPackageDeclarations(PsiJavaFileBaseImpl.java:484)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.processCurrentPackage(PsiJavaFileBaseImpl.java:398)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.processDeclarationsNoGuess(PsiJavaFileBaseImpl.java:334)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.access0(PsiJavaFileBaseImpl.java:40)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl$MyCacheBuilder.compute(PsiJavaFileBaseImpl.java:595)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.lambda$getValueWithLock[=11=](CachedValueBase.java:236)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:116)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:237)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.processDeclarations(PsiJavaFileBaseImpl.java:314)
    at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:69)
    at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:51)
    at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:218)
    at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:149)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:501)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:534)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.access0(PsiJavaCodeReferenceElementImpl.java:44)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:383)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
    at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching(ResolveCache.java:203)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:116)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:202)
    at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
    at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:788)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.multiResolve(PsiJavaCodeReferenceElementImpl.java:434)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.advancedResolve(PsiJavaCodeReferenceElementImpl.java:427)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:359)
    at com.intellij.psi.impl.source.resolve.ClassResolverProcessor.<init>(ClassResolverProcessor.java:54)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:500)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:534)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.access0(PsiJavaCodeReferenceElementImpl.java:44)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:383)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
    at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching(ResolveCache.java:203)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:116)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:202)
    at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
    at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:788)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.multiResolve(PsiJavaCodeReferenceElementImpl.java:434)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.advancedResolve(PsiJavaCodeReferenceElementImpl.java:427)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:359)
    at com.intellij.psi.impl.source.resolve.ClassResolverProcessor.<init>(ClassResolverProcessor.java:54)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:500)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:534)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.access0(PsiJavaCodeReferenceElementImpl.java:44)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:383)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
    at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching(ResolveCache.java:203)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:116)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:202)
    at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.getCanonicalText(PsiJavaCodeReferenceElementImpl.java:297)
    at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.getCanonicalText(PsiJavaCodeReferenceElementImpl.java:281)
    at com.intellij.psi.impl.source.tree.java.PsiAnnotationImpl.getQualifiedName(PsiAnnotationImpl.java:88)
    at com.intellij.codeInsight.AnnotationUtil.findOwnAnnotations(AnnotationUtil.java:107)
    at com.intellij.codeInsight.AnnotationUtil.findAllAnnotations(AnnotationUtil.java:84)
    at com.intellij.codeInsight.AnnotationUtil.findAnnotation(AnnotationUtil.java:66)
    at com.intellij.codeInsight.AnnotationUtil.findAnnotation(AnnotationUtil.java:50)
    at com.intellij.codeInsight.AnnotationUtil.findAnnotation(AnnotationUtil.java:43)
    at com.intellij.psi.impl.PsiImplUtil.isDeprecatedByAnnotation(PsiImplUtil.java:449)
    at com.intellij.psi.stub.JavaStubImplUtil.isMemberDeprecated(JavaStubImplUtil.java:54)
    at com.intellij.psi.impl.source.PsiClassImpl.isDeprecated(PsiClassImpl.java:413)
    at com.intellij.ide.projectView.impl.nodes.BasePsiMemberNode.isDeprecated(BasePsiMemberNode.java:45)
    at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.lambda$doUpdate(AbstractPsiBasedNode.java:157)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:941)
    at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.doUpdate(AbstractPsiBasedNode.java:138)
    at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.lambda$update[=11=](AbstractPsiBasedNode.java:134)
    at com.intellij.util.AstLoadingFilter.lambda$toComputable(AstLoadingFilter.java:169)
    at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:127)
    at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:116)
    at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:111)
    at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.update(AbstractPsiBasedNode.java:134)
    at com.intellij.ide.util.treeView.PresentableNodeDescriptor.getUpdatedPresentation(PresentableNodeDescriptor.java:89)
    at com.intellij.ide.util.treeView.PresentableNodeDescriptor.update(PresentableNodeDescriptor.java:41)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.updateNodeDescriptor(AbstractTreeBuilder.java:496)
    at com.intellij.ide.util.treeView.AbstractTreeUi.perform(AbstractTreeUi.java:923)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:23)
    at com.intellij.ide.util.treeView.AbstractTreeUi.execute(AbstractTreeUi.java:1821)
    at com.intellij.ide.util.treeView.AbstractTreeUi.update(AbstractTreeUi.java:919)
    at com.intellij.ide.util.treeView.AbstractTreeUi.update(AbstractTreeUi.java:871)
    at com.intellij.ide.util.treeView.AbstractTreeUi.processExistingNode(AbstractTreeUi.java:2965)
    at com.intellij.ide.util.treeView.AbstractTreeUi.lambda$null(AbstractTreeUi.java:1684)
    at com.intellij.ide.util.treeView.AbstractTreeUi.execute(AbstractTreeUi.java:1800)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access00(AbstractTreeUi.java:50)
    at com.intellij.ide.util.treeView.AbstractTreeUi.perform(AbstractTreeUi.java:1766)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:23)
    at com.intellij.ide.util.treeView.AbstractTreeUi.executeYieldingRequest(AbstractTreeUi.java:2056)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access00(AbstractTreeUi.java:50)
    at com.intellij.ide.util.treeView.AbstractTreeUi.perform(AbstractTreeUi.java:1968)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:23)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.runOnYieldingDone(AbstractTreeBuilder.java:347)
    at com.intellij.ide.util.treeView.AbstractTreeUi.runOnYieldingDone(AbstractTreeUi.java:2151)
    at com.intellij.ide.util.treeView.AbstractTreeUi.perform(AbstractTreeUi.java:1963)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:23)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.lambda$yield(AbstractTreeBuilder.java:365)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access0(EventQueue.java:98)
    at java.awt.EventQueue.run(EventQueue.java:715)
    at java.awt.EventQueue.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:757)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:706)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:375)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

迁移到 Android Studio 3.5 后,我们在 Studio 索引方面遇到了一些问题。 Indexing/Navigation/AutoComplete 即使构建良好,也根本无法工作。

我们有 2 个免安装应用程序模块,一个带有插件 'com.android.feature',另一个带有 'com.android.instantapp'。从 setings.gradle 中删除这 2 个似乎让 Studio 很高兴。

卸载这些模块也解决了这个问题。

有人能指出问题吗?

com.android.instantappcom.android.feature 插件已弃用。 请将 com.android.applicationcom.android.dynamic-feature 结合使用。

有关详细信息,请参阅此 post:https://android-developers.googleblog.com/2019/04/google-play-instant-feature-plugin.html