gpt4 book ai didi

android - 将 @SuppressLint ("RestrictedApi") 与 AndroidX 库一起使用是否安全?

转载 作者:行者123 更新时间:2023-12-04 08:35:39 37 4
gpt4 key购买 nike

我现在想知道使用@SuppressLint("RestrictedApi") 注释是否安全。我很确定答案是否定的,所以我也想问问为什么。

我猜想开发团队想对 API 用户隐藏这样的受限代码。可能是由于 future 的变化或因为代码旨在用作内部功能

带有 androidx.preference:preference:1.1.1 的示例代码:

public abstract class CustomAdapterPreferenceFragment extends PreferenceFragmentCompat {

@Override
protected PreferenceGroupAdapter onCreateAdapter(PreferenceScreen preferenceScreen) {
// this annotation removes warning that says PreferenceGroupAdapter can only be called from package names that start with androidx.preference
@SuppressLint("RestrictedApi")
final PreferenceGroupAdapter adapter = new PreferenceGroupAdapter(preferenceScreen) {
@Override
public void onBindViewHolder(PreferenceViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
}
};
return adapter;
}

此示例中限制代码使用的注释链接:AOSP AndroidX

最佳答案

你是对的:这不安全。标有 @RestrictTo 的符号不被视为公共(public) API,并且可能会在不同版本之间任意更改行为或签名。唯一的保证是它们不会破坏其他 AndroidX 库内部依赖的行为,而该行为是什么未定义。

对于限制为单个库或库组的符号尤其如此,因为不需要保持与其他 AndroidX 库的不同版本的兼容性。

I guess that the development team wanted to hide such restricted code from the API users. Probably due to changes in the future or because the code is intended to work as internal functionality

这是完全正确的。有时需要在内部公开一些作为公共(public) API 没有意义的功能,尽管我们通常会尽量避免这样做,因为这使得复制部分代码并自定义您自己的版本变得更加困难。对于 Java 代码尤其如此,它没有 Kotlin 的 internal 修饰符来向整个库公开类(package-private 并没有真正削减它)。

关于android - 将 @SuppressLint ("RestrictedApi") 与 AndroidX 库一起使用是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64817620/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com