Перекомпиляция Android Launcher2 (Gingerbread)

#java #android

#java #Android

Вопрос:

Я пытаюсь перекомпилировать приложение Launcher2 (Gingerbread), чтобы я мог его модифицировать.

Тем не менее, я получаю довольно много ошибок (120ish), а именно:

mLeft, mTop, mBottom, mRight, mParent, mContext не могут быть преобразованы в переменную.

Они поступают из (что я все равно вижу), частных элементов виджета «TextView».

Есть ли какой-либо способ получить доступ к этим закрытым элементам, или мне нужно будет применить какое-то другое волшебство, чтобы это заработало?

Приветствия!

Ответ №1:

Они относятся к частным / защищенным членам View и связанных классов. У многих из них есть средства получения / установки, например, все вышеперечисленные (если они просто получают значение) могут быть заменены на

getLeft() , getTop() , getBottom() getRight() и getContext()

методы класса View.

Однако некоторые из них могут не иметь общедоступных способов доступа к ним. В этом случае вы можете либо:

  • Скопируйте соответствующие классы в свой проект и измените видимость элементов
  • Используйте отражение (уродливое, может сломаться) для изменения приватных полей других классов.

Комментарии:

1. Фантастика, eclipse не показала их в автозаполнении. И я собрал его и запустил на своем устройстве — вот и все для первого в истории приложения для Android! 🙂 Приветствия!

2. @Marineio Ты смог это скомпилировать? Наряду со всеми отсутствующими переменными у меня возникли проблемы, из-за которых Eclipse не может найти android.app.StatusBarManager, android.renderscript.SimpleMesh и так далее

Ответ №2:

Скорее всего, вы не сможете скомпилировать Launcher2, кроме как в рамках полной сборки прошивки.