Как создать Android SDK с доступными скрытыми и внутренними API?

Я хочу перестроить Android SDK (или, скорее, только android.jar), чтобы включить скрытые и внутренние API.

Я не смог найти никакой документации или обсуждения того, как это сделать. У меня уже настроена среда сборки Ubuntu CyanogenMod, которая может создавать cm7.

Теперь я прочитал, что make SDK будет собирать SDK, но я хочу создать SDK, который включает методы и поля, которые помечены как скрытые с помощью @hide. Это возможно?

Я хочу внести изменения в приложение, использующее скрытый API, и для его восстановления я хотел бы использовать модифицированный SDK.


person Thomas Hofmann    schedule 25.10.2011    source источник
comment
@Hidden просто скрывает javadoc, все эти методы по-прежнему доступны   -  person Blundell    schedule 25.10.2011
comment
@hide удаляет их из файлов классов.   -  person Thomas Hofmann    schedule 25.10.2011
comment
Связано: stackoverflow.com/questions/4951146/   -  person Blundell    schedule 25.10.2011
comment
Я знаю, что могу использовать отражение, но я хочу изменить существующее приложение, которое использует скрытый API без отражения, и я не хочу изменять весь существующий код для использования отражения.   -  person Thomas Hofmann    schedule 25.10.2011
comment
Томас Я показал вам ресурс, чтобы объяснить это в своем ответе, я просто привожу дополнительную информацию для других людей, которые сталкиваются с вашим вопросом. Также вы пытались расширить класс и переопределить метод, но не используйте аннотацию @override   -  person Blundell    schedule 25.10.2011
comment
Извините, я не заметил, что вы тоже ответили (позор мне). Я посмотрю видео позже этим вечером. Пока спасибо.   -  person Thomas Hofmann    schedule 25.10.2011
comment
+1, я тоже хочу это знать. Ни один из ответов здесь на самом деле не отвечает на вопрос, например, как создать SDK для Android, включая внутренний / скрытый API.   -  person Bjarke Freund-Hansen    schedule 01.03.2012
comment
Я думаю, вы можете удалить @Hidden метку API, к которому вы хотите получить доступ, а затем выполнить make update-api и make SDK, чтобы создать свой собственный SDK.   -  person dreamtale    schedule 02.03.2012
comment
даже если вы получите доступ к скрытому api без отражения, вам все равно нужно подписать свой apk системным ключом для предоставления разрешений. В противном случае ваше приложение сломается, сказав, что в разрешении отказано.   -  person Sunny    schedule 07.03.2012
comment
Теоретически вы можете написать сценарий, который проанализирует все файлы в SDK и удалит все метки @hide. Конечно, на это потребуется время. А затем пересоберите SDK.   -  person Cookie Monster    schedule 17.01.2014
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar   -  person Bunny    schedule 17.08.2020


Ответы (10)


Это то, что я всегда делаю, чтобы использовать скрытый api.

  1. Создайте репо или загрузите jar-файлы со страницы https://sites.google.com/site/hippunosource/home/android/androidnohide-apiwo-shi-yongsuru-rifurekushonha-wei-shi-yong
  2. скопируйте из / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar (лучше переименовать его как-то вроде framework_all.jar)
  3. сконфигурируйте путь сборки вашего проекта -> библиотеки -> добавьте эти внешние jar-файлы. В разделе «Порядок и экспорт» переместите его вверх и перед android.jar.
person Long    schedule 15.11.2012
comment
У меня это тоже сработало! Теперь я могу приступить к делу, спасибо за это - person CurlyPaul; 11.10.2013
comment
ИМХО, это самый простой и быстрый. - person Patrick Cho; 06.02.2014
comment
Разве нет способа отметить это как правильный ответ? - person Chris Browet; 24.06.2014
comment
работает ли этот метод со всеми устройствами или только с целевым устройством? - person Hải Phong; 15.11.2014
comment
Чтобы определить порядок библиотек в студии Android, вам необходимо изменить .iml файл модуля и поставить <orderEntry> желаемой библиотеки перед Android SDK. К сожалению, этот метод не является постоянным, поскольку файл будет перезаписан после нажатия кнопки gradle-sync. - person waqaslam; 14.11.2019
comment
Мне удалось заставить его работать в Android Studio следующим образом: dependencies {compileOnly fileTree (dir: sytem_'libs ', include: [' * .jar ']) ...} - person Andrey Egorov; 18.06.2020
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar @Long - person Bunny; 12.08.2020

Я провел некоторое расследование по этому поводу, и мой вывод простой: Это невозможно сделать без некоторой работы. Прочтите оставшуюся часть этого ответа, чтобы узнать подробнее о том, что я нашел.


android.jar фактически состоит из "общедоступного API" framework.jar и core.jar, который находится в system/frameworks/ на устройстве. android.jar - это то, что я бы назвал заголовком библиотеки Java, вся реализация в фактическом байтовом коде - это просто throw new RuntimeException("stub");, это позволяет вам строить против android.jar (например, в Eclipse), но выполнение должно выполняться на устройстве или эмуляторе.

Общедоступный API Android SDK определяется классами / методами / полями, которые не имеют префикс аннотации @{hide} javadoc. Т.е. все, что не аннотировано, включено в SDK.

android.jar построен из источников, расположенных в out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates, который сам генерируется инструментом DroidDoc, расположенным в build/tools/droiddoc.

DroidDoc - это инструмент (возможно, адаптированный из javadoc или использующий javadoc), который генерирует фактическую документацию Android SDK. В качестве побочного эффекта и, вероятно, из-за того, что он уже анализирует всю документацию javadoc, он также извергает заглушки Android, которые затем компилируются в android.jar, который распространяется в SDK.

Итак, чтобы включить скрытый материал, вы можете, если вы хотите включить только определенные части, просто удалите аннотацию @hide и перестройте SDK.

Однако, если вы хотите включить все скрытые части, все становится намного сложнее. Вы можете изменить DroidDoc (соответствующий источник находится в build/tools/droiddoc/src/Stubs.java) так, чтобы ничего не обнаруживалось как скрытое. Это довольно тривиально, и я пробовал это, однако генерируемые затем заглушки вообще не компилируются.

На данный момент я пришел к выводу, что это просто невозможно. Заглушки, сгенерированные, если вы удалите часть DroidDoc, которая обнаруживает скрытые аннотации, просто не компилируются, и для правильной компиляции потребуется довольно много работы.

Итак, мой ответ на ваши вопросы: нет, этого нельзя сделать, не проделав большой работы. Извините.


Замечание об инструменте mkstubs. mkstubs используются при создании надстройки SDK, т. Е. Надстроек, которые вы можете найти в диспетчере Android SDK от поставщиков, например Samsung предоставляет вам дополнительный API для вещей, специфичных для телефонов Samsung. mkstubs выполняет во многом то же самое, что и процесс создания заглушек DroidDoc, однако он не использует @hide аннотации, он использует .defs файл, описывающий, какие пакеты / классы / поля включить или исключить из вашего дополнения SDK.

Однако все это не имеет отношения к вопросу, поскольку сборка Android SDK не использует инструмент mkstubs. (К несчастью.)

person Bjarke Freund-Hansen    schedule 05.03.2012
comment
Я тоже посмотрел. Помимо Droiddoc, в / development / tools / mkstubs есть инструмент под названием mkstubs. Он вызывается во время сборки, и, насколько я видел, он изменяет файлы классов, заменяя их заглушками. В build / core / tasks / sdk-addon.mk есть следующий код: define stub-addon-jar $ (вызов stub-addon-jar-file, $ (1)): $ (1) | mkstubs $ (info Заглушка аддона jar с помощью $ (PRODUCT_SDK_ADDON_STUB_DEFS)) $ (hide) java -jar $ (вызов установленных-файлов модуля, mkstubs) $ (if $ (hide) ,, - v) \ $$ ‹$$ @ @ $ (PRODUCT_SDK_ADDON_STUB_DEFS) endef - person Thomas Hofmann; 05.03.2012
comment
К сожалению, мне это не нравится, но мне тоже кажется, что все зависит от переменной hide. Я не нашел, правда ли, что он настроен. Если вы выполните поиск $ (hide) в других файлах сборки, вы увидите, что от этого значения многое зависит. Похоже, это также влияет на способ построения библиотек C. - person Thomas Hofmann; 05.03.2012
comment
@ThomasHofmann: Сначала меня тоже смутил инструмент mkstubs. Я узнал, что mkstubs используется только при создании надстройки sdk (поставщика), а не когда вы просто создаете обычный sdk. Однако mkstubs делает то же самое, что и DroidDoc, за исключением того, что он не использует @hide аннотации, он просто использует .defs файл, описывающий, какие пакеты / классы / поля должны быть включены в API аддона. - person Bjarke Freund-Hansen; 06.03.2012
comment
@ThomasHofmann: Насчет $(hide), вы себя сбиваете с толку. $(hide) - это просто префикс в make-файлах, чтобы скрыть фактическую командную строку выполняемой программы, не более того, и он используется практически везде. Это не имеет никакого отношения к Android SDK или аннотации @hide в исходном коде. - person Bjarke Freund-Hansen; 06.03.2012
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar - person Bunny; 17.08.2020

Мы могли реконструировать файлы * .jar с платформы Android.

Сначала подключите ADB к вашему устройству. Затем запустите:

adb pull /system/framework/core.jar .
adb pull /system/framework/framework.jar .

core.jar содержат стандартные библиотеки Java (java.*), а framework.jar содержат библиотеки Android (android.*). Это пока не может быть использовано, поскольку фактические файлы находятся в формате DEX, а не в формате JAR.

Мы могли бы преобразовать эти * .jar-файлы в формате DEX в настоящие JAR-файлы с помощью таких инструментов, как dex2jar:

dex2jar core.jar
dex2jar framework.jar

Затем вставьте эти банки, используя «Добавить внешние JAR-файлы ...» (при условии, что вы используете Eclipse ADT).

  • щелкните правой кнопкой мыши _7 _... → (Выберите core-dex2jar.jar и framework-dex2jar.jar сверху).

Это позволит вам использовать внутренний API и некоторые API Java 7. (Сгенерированный APK, насколько я понимаю, не содержит фактического кода из JAR.)

person kennytm    schedule 25.11.2012
comment
Большое вам спасибо, я перепробовал много-много способов, которыми у меня работают только ваши методы. - person SalutonMondo; 08.01.2014
comment
Важно отметить, что этот метод по-прежнему работает с системами ICS и более поздними версиями, но требует дополнительных действий. Соответствующие файлы: /system/framework/core.odex, /system/framework/framework.odex и, возможно, другие. Их можно деодексировать (java -jar baksmali-2.0.3.jar -d system.framework -x system.framework/core.odex -o core) и повторно (java -jar smali-2.0.3.jar -x -o core.dex core), и только после этого dex2jar core.dex выполнит свою работу. - person Alex Cohn; 18.02.2014
comment
невозможно найти core.jar в зефире - person mehmet6parmak; 29.12.2015
comment
у вас есть идеи для ядра и фреймворка в android p? - person Prabhakaran; 05.09.2019
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar - person Bunny; 17.08.2020
comment
Я не думаю, что они будут работать на обычном устройстве, нам понадобится root-доступ или устройство AOSP, чтобы папка framework была там в файловой системе - person babbin tandukar; 10.11.2020

Вы можете загрузить измененный android.jar для использования в качестве скрытых API из этого репозитория. Следуйте инструкциям там.

person Anggrayudi H    schedule 17.09.2015
comment
За этот ответ следует проголосовать больше, так как это самое простое решение. Люди, если вы ищете решение - знайте, что другие люди уже сделали это и разместили решение в этом репозитории github. Используйте и наслаждайтесь! )) - person Mixaz; 07.12.2016
comment
При использовании android.jar для API 28 я получаю сообщение об ошибке robolectric. Возникла проблема github.com/anggrayudi/android-hidden-api/issues/62 и спасибо за банку @Anggrayudi - person Prabhakaran; 05.09.2019
comment
я также сделал то же самое для Android 10, это не работает для меня, скорее я загрузил от другого участника github.com/aeab13/android-jar-with-hidden-api. мне удалось получить доступ к классу hdmi-cec и построить его, но коды все еще сбивают с толку .code link android.googlesource.com/platform/frameworks/base / + / 4e90fcd / - person babbin tandukar; 10.11.2020

Для Lollipop поток немного отличается:

  1. Получите /system/framework/arm/boot.oat с устройства Lollipop

  2. Используйте 'java -jar oat2dex.jar boot boot.oat '

  3. Вы получите две папки: dex и odex. Перейдите в dex и создайте 'java -jar dex2jar.jar framework.dex'
  4. Переименуйте полученный framework.jar в .zip, извлеките и найдите нужные классы.
  5. Перейдите в [sdk_path] / platform / [target_platform] и извлеките android.jar (сначала переименуйте его в zip).
  6. Скопируйте файлы из извлеченного фреймворка в извлеченный файл android.jar. Затем сожмите в zip и переименуйте в .jar :)

ps: возможно, вам нужно повторить шаги 4-6 для 'framework_classes2.dex'

person deviant    schedule 22.02.2015
comment
Для шага 3 я не могу найти dex2jar.jar по этой ссылке .... Я много чего пробовал и не могу понять. Есть ли где-нибудь ссылка на это? Он находится в моем Android SDK? Я не могу его найти. - person Dwebtron; 14.11.2015
comment
Да, это идет в проект github, и, возможно, это я, но я не могу найти там ЛЮБОЙ файл с расширением .jar ... - person Dwebtron; 15.11.2015
comment
см. раздел "релизы" - person deviant; 16.11.2015
comment
Я посмотрел там, и, если мне что-то не хватает, есть много файлов, которые заканчиваются на '.jar', но ни один из них не является 'dex2jar.jar', как вы упомянули в своем комментарии. Когда я пытаюсь запустить ЛЮБОЙ из этих файлов (согласно вашему комментарию), я получаю сообщение об ошибке, в котором нет основного атрибута манифеста в ‹filename›. В инструкциях на этой странице git говорится, что нужно создать что-то, заканчивающееся на .apk .... И я пробовал это, но результат №1 дает файл, заканчивающийся на .apk (НЕ .jar), а №2 - нет. усердно работать. Я вижу / делаю что-то не так? Я новичок в этом .... - person Dwebtron; 16.11.2015
comment
Между прочим, я благодарю вас за всю вашу помощь, она была невероятно полезной. - person Dwebtron; 16.11.2015
comment
Похоже, что последние версии dex2jar изменили формат загрузки. Просто разархивируйте загрузку и вместо java -jar ... просто запустите сценарий d2j-dex2jar.sh или d2j-dex2jar.bat, в зависимости от вашей платформы, непосредственно в файле framework.dex. - person CalumMcCall; 02.12.2015
comment
Я скопировал оба jar-файла в android.jar, теперь студия Android сообщает мне об ошибке: сбой выполнения для задачи ': app: processDebugResources'. ›Com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: команда процесса 'D: \ Program \ Android \ android-sdk \ build-tools \ 19.1.0 \ aapt.exe' 'завершено с ненулевым значением выхода 1 - person wutzebaer; 06.01.2016
comment
@wutzebaer Я тоже столкнулся с той же проблемой. Вы решили это? - person Gautam; 01.03.2016
comment
Я получаю эту ошибку при запуске java -jar ... 01-10 14: 46: 24: 330 Недопустимая магия dex 01-10 14: 46: 24: 330 Исключение недопустимой версии dex в основном потоке java.lang.IllegalArgumentException на солнце .nio.ch.FileChannelImpl.transferTo (FileChannelImpl.java:597) по адресу org.rh.smaliex.reader.Oat $ DexFile.saveTo (Oat.java:229) по адресу org.rh.smaliex.OatUtil.extat (OdexFilm). : 219) на org.rh.smaliex.OatUtil.prepareOdex (OatUtil.java:137) на org.rh.smaliex.OatUtil.bootOat2Dex (OatUtil.java:124) на org.rh.smaliex.Main.mainImpl (Main. java: 101) в org.rh.smaliex.Main.main (Main.java:42) - person Vishnu; 10.01.2018

DroidCon 2011

Здесь Эрик Хеллман из Sony Ericson объясняет, как получить доступ к скрытым API Android:

http://vimeo.com/30180393 (хм, ссылка не работает).

Перейдите на веб-страницу DroidCon, день 2, прокрутите вниз до раздела Использование скрытых API 10 : 15, и вы можете посмотреть это там.

Ссылки умирают!

Я нашел вот это: http://skillsmatter.com/podcast/os-mobile-server/hidden-api Я не знаю, как долго он будет работать.

Официальных API в Android SDK обычно достаточно для большинства обычных приложений. Однако иногда возникают ситуации, когда разработчику требуется доступ к внутренним системным службам, API и ресурсам, которые не опубликованы в официальных API. К счастью, эти API-интерфейсы по-прежнему доступны с помощью некоторых хитрых уловок и часто могут быть полезны при разработке новых и инновационных решений на базе Android. На этом занятии вы узнаете, как получить доступ и использовать эти скрытые и защищенные API-интерфейсы, ограничения их использования и некоторые советы по их безопасному и контролируемому использованию на устройствах разных производителей и в версиях Android. Зрители увидят несколько продвинутых демонстраций, которые обычно не подходят для Android. Ожидайте довольно продвинутого сеанса с большим количеством аналитических сведений о внутреннем устройстве платформы Android.

person Blundell    schedule 25.10.2011
comment
Это интересно, но, к сожалению, не отвечает на мой вопрос. Я просил найти способ действительно перестроить SDK со скрытыми вещами. - person Thomas Hofmann; 26.10.2011
comment
Похоже, я нашел другой способ добиться того, чего хочу. Опишу завтра. - person Thomas Hofmann; 26.10.2011
comment
Я выяснил, что если вы хотите скомпилировать исходный код проекта, который использует скрытый API в ADT, вы можете сделать следующее: 1) Создать проект Android для источника. 2) Удалите контейнер пути к классам Android из пути сборки 3) Определите пользовательскую библиотеку (также установите флажок системной библиотеки), которая включает файлы JAR из сборки ASOP ROM, например см7). Какие файлы JAR вы используете, зависит от того, на что вам нужно ссылаться. framework -mediates, вероятно, будет его частью. - person Thomas Hofmann; 27.10.2011
comment
4) Когда проект будет построен, классы пользовательской библиотеки не будут включены в создаваемый APK. Скрытый API виден, и все будет хорошо скомпилировано. - person Thomas Hofmann; 27.10.2011
comment
@Blundell: Не могли бы вы обновить ссылки .. они мертвы! - person zombie; 18.06.2012
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar - person Bunny; 17.08.2020

Попробуйте посмотреть это:

Конечная цель этих статей - дать разработчикам возможность использовать внутренние и скрытые API без использования рефлексии. Если вы выполните все шаги, описанные в следующих нескольких частях, вы сможете использовать внутренние и скрытые API, как если бы они были общедоступными открытыми API. Не нужно будет размышлять.

Но если вы используете эти закрытые API, вы должны знать, что ваше приложение подвергается большому риску. По сути, нет никаких гарантий, что API-интерфейсы не будут повреждены при следующем обновлении ОС Android. Нет даже никаких гарантий относительно единообразного поведения устройств от разных производителей. Вы полностью предоставлены сами себе.

Есть три сценария, которым вы можете следовать:

  1. Включите как внутренние, так и скрытые API (сценарий A)
  2. Включить только скрытый API (сценарий B)
  3. Включить только внутренний API (сценарий C)

Сценарий A представляет собой сумму B и C. Сценарий B - самый простой (не требует модификаций плагина eclipse ADT).

Сценарий A: прочтите части 1, 2, 3, 4, 5

Сценарий B: прочтите части 1, 2, 3, 5

Сценарий C: прочтите части 1, 2, 3, 4, 5

person Zorb    schedule 10.11.2011
comment
Я уже читал эту запись в блоге. В нем упоминается следующее: 1) Android - проект с открытым исходным кодом. Мы можем загрузить исходный код и настроить систему сборки, чтобы она не исключала внутренние и скрытые классы из android.jar. Это нелегкий путь. К сожалению, это не входит в подробности. - person Thomas Hofmann; 11.11.2011
comment
Перейдите к последней части сообщения в блоге (devmaze.wordpress.com/2011/01/19/), есть ссылка (github.com/inazaruk/android-sdk/tree/master/platforms) на готовые Android API со всеми скрытыми и внутренними API. - person Bob; 02.04.2012
comment
Указанные ссылки недоступны, требуется разрешение автора - person SHAHS; 23.05.2018
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar - person Bunny; 17.08.2020

Однажды я написал несколько скриптов Groovy для извлечения файлов java из проверки репо с http://source.android.com/, а затем компилировать их без необходимости в полной цепочке инструментов для компиляции всех исходников Android, включая необходимые другие шаги (упаковка, создание ресурсов и т. д.).

Их можно найти здесь:

https://github.com/thoutbeckers/CollectAndroid

Но наверняка это потребует обновления для чего-либо после Gingerbread, в основном путем установки правильных каталогов в "rootdirs" в файле конфигурации (CollectConfig.groovy).

В то время я регулярно использовал это для разработки со всеми доступными скрытыми API и источниками (также проблемными в то время).

Как упоминалось в другом месте, com / android / internal / ** по-прежнему будет скрыт в последних версиях ADT из-за добавленного правила доступа.

person thoutbeckers    schedule 18.09.2013
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar - person Bunny; 17.08.2020
comment
Я заархивировал это репо с момента последнего обновления для Gingerbread. К сожалению, вам придется найти другой подход. - person thoutbeckers; 18.08.2020

Длинный ответ сработал для меня, но мне все еще не хватало некоторых необходимых мне классов, в частности android.provider.Telephony. Я смог добавить это так:

  1. Распакуйте файл framework.jar

    mkdir /tmp/framework
    cp framework.jar /tmp
    cd /tmp/framework
    jar xvf ../framework.jar
    mv android classes
    
  2. Создайте репозиторий Android, который создаст каталог out / target / common / obj / JAVA_LIBRARIES.

  3. Найдите недостающие классы

    $ cd /path/to/out/target/common/obj/JAVA_LIBRARIES
    $ find . | grep "/Telephony.class"
    ./telephony-common_intermediates/classes/android/provider/Telephony.class
    ./android_stubs_current_intermediates/classes/android/provider/Telephony.class
    
  4. Добавьте новые классы и перестройте JAR-файл фреймворка.

    cd /tmp/framework
    cp -r /path/to/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes .
    cp -r /path/to/out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes .
    cd classes
    jar cvf ../framework.jar .
    

Или вы можете просто полениться и включить все классы в один гигантский jar-файл:

cd /tmp/framework
cp -r /path/to/out/target/common/obj/JAVA_LIBRARIES/*/classes .
cd classes
jar cvf ../framework.jar .
person bmaupin    schedule 03.11.2014
comment
out / target / common / obj / JAVA_LIBRARIES как найти этот путь? - person Bunny; 13.08.2020
comment
@Bunny Я добавил в свой ответ более подробную информацию. Но похоже, что ответ здесь может быть проще: stackoverflow.com/a/32626155/399105 - person bmaupin; 13.08.2020
comment
спасибо за ответ @bmaupin .. не могли бы вы помочь мне, как я могу найти этот путь из / target / common / obj / JAVA_LIBRARIES, чтобы получить фреймворк ... я действительно застрял ... я не могу найти этот путь или что-то не хватает ... пожалуйста, помогите - person Bunny; 13.08.2020

Я не могу комментировать, но это в основном комментарий к @ KennyTM (https://stackoverflow.com/a/13550030/2923406) отличный ответ:

Если вы обнаружите следующую ошибку в Eclipse:

The type com.android.internal.util.Predicate cannot be resolved. It is indirectly referenced from required .class   files

(то есть android.internal. * недоступен)

Тогда одно из возможных решений - применить тот же метод для /system/framework/framework2.jar. Используя эмулятор Android для SDK19, у меня есть дополнительная банка. На моем HTC One даже есть framework3.jar.

person Rolf    schedule 19.06.2014
comment
как я могу проверить этот путь выше / target / common / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar - person Bunny; 17.08.2020