Почему некоторый код Android работает на прежнем уровне API, чем должен?

Я разрабатываю приложение для Android, которое, помимо прочего, использует метод toLongArray из java.BitSet. Как видно здесь, этот метод был представлен в Android API уровня 19, Android 4.4. Lint в Eclipse правильно предупреждает меня об этом, потому что мой minSdkVersion равен 10, но я могу настроить его, чтобы он не жаловался.

При этом я мог собрать по проекту и запустить его: в Android 5.0 это работает, в Android 2.3 (уровень API 10) это не так, что удивительно, в Android 4.0.3, 4.1.2, 4.2 (которые приведены ниже). Уровень API 19) это работает как шарм, хотя это не должно работать. То же самое происходит, даже если я установил min/target sdk на 15 (Android 4.0.3).

Например, то же самое происходит с Object.hashCode, и я не могу понять, почему он работает.

1 ответ

Решение

На самом деле это меня очень удивило.

Я пошел в их хранилище, чтобы увидеть, что это на самом деле. Поэтому я обнаружил, что они добавляют некоторые методы, но скрывают это в документации, используя аннотацию @hide javadoc, пока она не будет полностью протестирована или пока они не забудут показать ее.

@hide При применении к пакету, классу, методу или полю @hide удаляет этот узел и все его дочерние элементы из документации.

таким образом, чтобы знать правду, метод toLongArray() был фактически добавлен в коммит более 3 лет и 10 месяцев назад, и фактически они отображают его 1 год 7 месяцев назад в этом коммите.

Другие вопросы по тегам