Хотя сходство между двумя фреймворками велико, фактическая реализация процессов перехвата и т. д. достаточно различается, чтобы обе фреймворки работали параллельно.
Тем не менее, самые большие преимущества, которые я вижу для Substrate по сравнению с XPosed, заключаются в том, что XPosed удаляет модель безопасности Java, в то время как Substrate сохраняет ее, а также возможность дождаться загрузки класса перед подключением метода, как описано в следующей цитате из ответа @xmllmx относительно ортогональности;
Чтобы сделать это проще, Xposed предоставляет набор помощников для распространенных случаев использования: вы можете перехватывать, когда запускается виртуальная машина, когда Zygote берет на себя управление, когда загружается определенный пакет или когда выполняется приложение командной строки. Вам нужно знать, какой из них использовать, и до сих пор неясно, как вы будете перехватывать класс, загруженный с помощью динамического загрузчика классов, созданного во время выполнения (например, против загруженного кода).
Вместо этого Substrate избавляется от всего этого благодаря MS.hookClassLoad, предоставляемому API, который позволяет вам в любое время ждать загрузки определенных классов из любого загрузчика классов. Это позволяет вам писать ловушки таким образом, чтобы они были менее чувствительны к изменениям, менее подвержены простым ошибкам и менее ограничены тем, как разработчик целевого приложения решил загрузить код своей программы.
В заключение, на мой взгляд, в любом случае, обе структуры очень похожи и оба являются жизнеспособными вариантами для достижения одной и той же цели. Единственный важный взвешивающий факт, который их разделяет, - это временные рамки между тем, когда каждый из них был выпущен. Там, где XPosed существует гораздо дольше, он был опробован, протестирован и испытан в промежутке между выпуском XPosed и выпуском Cydia Substrate для Android, который Джей Фриман (Саурик) открыто признает
Независимо от этого, Cydia Substrate — мощная и чрезвычайно жизнеспособная альтернатива XPosed. Кроме того, вам не нужно ограничиваться разработкой только для одного из этих фреймворков, потому что (как упоминалось ранее) оба фреймворка могут быть установлены на вашем устройстве без конфликтов, поэтому разработка для обоих или просто попытка их использования никоим образом не помешают вам от использования установленных в настоящее время модулей, пакетов или расширений XPosed.
person
guyver4mk
schedule
10.04.2015