在Android Studio Flamingo中,可以使用如下方式解决R8与封闭类的兼容性问题:
-keepclassmembers class com.example.MySealedClass {
private
这些步骤将确保R8与封闭类的兼容性,并避免潜在的编译错误。
下面是完整的示例代码:
// MySealedClass.java public sealed class MySealedClass permits SubClass1, SubClass2 { private String name;
public MySealedClass(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
// SubClass1.java public final class SubClass1 extends MySealedClass { public SubClass1(String name) { super(name); } }
// SubClass2.java public final class SubClass2 extends MySealedClass { public SubClass2(String name) { super(name); } }
// MainActivity.java public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MySealedClass obj = new SubClass1("John");
Log.d(TAG, "Name: " + obj.getName());
}
}
在proguard-rules.pro文件中添加上述代码后,确保R8升级到最新版本,如何尝试运行上面的代码,将不再产生兼容性问题。