Android で内部クラスを DataBinding しているときクラスのパッケージを移動すると参照が壊れる

Untitled

たとえばこんな具合に、あるクラスの内部クラスを DataBinding する Acitivty と XML レイアウトがあるとする。

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.tomoyashibata.classinclass.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
        binding.innerSomethingClass = SomethingClass.InnerSomethingClass()
    }
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools">

  <data>

    <variable
      name="innerSomethingClass"
      type="com.tomoyashibata.classinclass.SomethingClass.InnerSomethingClass" />
  </data>

  <!-- something -->
</layout>

ここで、SomethingClasssubpackage というパッケージに移動してみる。 Android Studio の移動機能を使うので、リファクタリングが自動で行われてパッケージ移動への追従が行われるはず。 今回は、XML レイアウトにある variable の type が com.tomoyashibata.classinclass.subpackage.SomethingClass.InnerSomethingClass になることを期待するのだけれど、

  <data>

    <variable
      name="innerViewModel"
      type="com.tomoyashibata.classinclass.subpackage.SomethingClass" />
  </data>

実際はこのように内部クラスの部分が消滅してしまい InnerSomethingClass の外部クラスにあたる SomethingClass へと参照が置き換わってしまう。もちろん、このままではビルドは通らない。もし内部クラスを DataBinding している環境でパッケージ移動をするといった場合、ここを手動で直す必要がある。

Android Studio の問題ぽいので Issue を上げてみた。様子見。

References are broken when moving between packages when DataBinding is an inner class [136060073] - Visible to Public - Issue Tracker https://issuetracker.google.com/issues/136060073