Apk.sh — это полезный Bash-скрипт, который облегчает реверс-инжиниринг Android-приложений, автоматизируя некоторые повторяющиеся задачи, такие как извлечение, декодирование, восстановление и исправление APK.
Он в использует
apktool для дизассемблирования, декодирования и восстановления ресурсов и немного bash для автоматизации процесса инъекции гаджетов frida.Особенности
– патчинг APK для загрузки frida-gadget.so при запуске
– поддержка пакетов приложений/разделенных APK
– разборка ресурсов до почти оригинального вида с помощью apktool
– восстановление декодированных ресурсов обратно в бинарный APK/JAR с помощью apktool
– подпись apk с помощью apksigner
– поддержка нескольких архитектур (arm, arm64, x86, x86_64)
– не требуется рутованное Android-устройство
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - ax/apk.sh: Makes reverse engineering Android apps easier, automating repetitive tasks like pulling, decoding, rebuilding…
Makes reverse engineering Android apps easier, automating repetitive tasks like pulling, decoding, rebuilding and patching an APK. - ax/apk.sh
👍5❤1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Новый Compose урок по анимации
Рассматриваем доступные нам AnimationSpec: tween, spring, keyframes, repeatable. Там в целом и так все понятно, но пропустить эту тему я не мог.
Плюс, довольно подробно разбираем, что такое Easing в tween. И создаем свою несложную реализацию этого механизма.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Рассматриваем доступные нам AnimationSpec: tween, spring, keyframes, repeatable. Там в целом и так все понятно, но пропустить эту тему я не мог.
Плюс, довольно подробно разбираем, что такое Easing в tween. И создаем свою несложную реализацию этого механизма.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
👍9🔥2❤1
Old but gold: Android-разработка для новичков
Добротный материал с подборкой 20+ ресурсов для старта в карьере мобильного разработчика. Подборка хоть и 2023 года, но начинающим — самое то: https://habr.com/ru/companies/yandex_praktikum/articles/738638/
#android #начинающим
Добротный материал с подборкой 20+ ресурсов для старта в карьере мобильного разработчика. Подборка хоть и 2023 года, но начинающим — самое то: https://habr.com/ru/companies/yandex_praktikum/articles/738638/
#android #начинающим
👍4❤2🔥1
Проект доступен только на смартфонах и планшетах Pixel (6/6 Pro/6a/7/7 Pro/7a/Tablet/Fold/88 Pro). Также Developer Preview можно протестировать через эмулятор Android Studio.
Обновления в Android 15 Developer Preview 1:
Процесс тестирования Android 15 разбит на три этапа: Developer Preview — два релиза (в феврале и марте); Beta — два релиза (в апреле и мае); Platform Stability — два релиза (в июне и июле).
Финальная версия Android 15 выйдет в конце лета или начале осени 2024 года, подробнее почитать можно [тут] и [тут]
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1
Compose Investigator может выполнять следующие задачи:
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
Meta разработала 𝗧𝗲𝘀𝘁𝗚𝗲𝗻-𝗟𝗟𝗠 — инструмент, использующий 2 LLM Meta, для дополнения существующих тестовых классов Kotlin для кода Android.
Цель 𝗧𝗲𝘀𝘁𝗚𝗲𝗻-𝗟𝗟𝗠 — генерировать дополнительные тестовые случаи, охватывающие ранее пропущенные сценарии, и улучшить общее покрытие тестами.
TestGen-LLM представляет собой пример гарантированной автономной разработки программного обеспечения на основе LLM (Assured Offline LLMSE), сфокусированной на внедрении LLM в более широкий рабочий процесс разработки программного обеспечения, чтобы рекомендовать комплексные улучшения программного обеспечения (
TestGen-LLM гарантирует, что сгенерированные тестовые классы не только корректно построены, но и надежно проходят все тесты, не внося ненужной "шелухи", и улучшают покрытие.
Это отличает TestGen-LLM от других методов генерации кода и тестов на основе LLM.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥2
Среди новых функций Android Studio Iguana:
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2❤1
Узнали у middle и senior разработчиков, что нужно учить каждому Android-разработчику. Спросили, какие фреймворки, библиотеки и инструменты безнадёжно устарели, а какие актуальны.
Андроид развивается очень динамично, поэтому, многое из того, что было популярно 5 лет назад уже не используется.
Конечно же сразу приходит на ум RxJava, про нее был каждый второй доклад на любой конференции 5-6 лет назад. А теперь ее изредка спрашивают на собеседованиях. На замену ей пришли Kotlin Coroutines.
Java как язык разработки под андроид остался, наверное, только в каких-то старых проектах-динозаврах. Kotlin это новый стандарт уже лет 6.
С появлением Jetpack Compose UI код использующий стандартные Android Views стал легаси. Многие приложения сейчас Compose First, и все новые фичи тоже разрабатываются на Compose.
Архитектура презентационного слоя так же изменилась, всё меньше можно увидеть MVP, а MVVP и MVI стали де факто стандартами разработки.
Если мы возьмем более менее стандартное приложение со стандартными подходами, то наверняка там будут эти библиотеки: Retrofit 2, Dagger2/Hilt, Kotlin Coroutines, Jetpack ViewModel, Room, Lifecycle. Но стоит помнить, что библиотеки приходят и уходят, а фундаментальные знания остаются. Человеку, освоившему фундамент будет гораздо легче освоить какую-либо библиотеку.
В Андроид немного фреймворков, наверное главный и самый нашумевший в последнее время это Jetpack Compose. Так же стоит знать архитектурные подходы MVI/MVVM, MVP, плюсы и минусы их работы.
Швейцарский нож Android разработчика в 2024 это Kotlin, Kotlin Coroutines, Jetpack Compose, MVVM/MVI, Google Jetpack Libraries, REST, Single Activity, Dagger 2, Retrofit 2. Зная этот стек можно будет легко разобраться в 95% приложений.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🔥1
int x = a ? b : c из Java?val x = a ?: b, cval x = if (a) b : cval x = a ? b : cval x = if (a) b else cclass Person (val name: String)int, long, float?to в этом ниже примере:val test = 33 to 42int sum(int a, int b)int sum(a: Int, b: Int)function sum(a: Int, b: Int): Intfun sum(a: Int, b: Int): IntIterable<T> и Sequence<T> в Kotlin?Iterable<T> работает только с immutable коллекциями, Sequence<T> применим к mutableSequence<T> аналог Iterable<T>dataclass?toString()copy(...), для создания копии экземпляров.hashCode() и equals()
val listA = mutableListOf(1, 2, 3)
val listB = listA.add(4)
print(listB)
[1, 2, 3, 4]TrueUnita и b?
var a: String? = "KotlinQuiz"
var b: String = "KotlinQuiz"
a является volatile, как в Javab является final и не может быть измененоa является final и не может быть измененоb никогда не сможет стать nullНу как? 10 из 10?
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥1
Forwarded from Мобильная разработка
Apple намерена упростить переход с iPhone на Android-устройства в соответствии с требованиями Закона о цифровых рынках ЕС, который уже вступил в силу.
Производитель изложил свой план относительно соблюдения нового закона ЕС в документе. Новое положение направлено на усилении конкуренции в экосистеме приложений и требует от Apple ослабления контроля над App Store и iOS.
Мера Apple должна помочь поставщикам других операционных систем создать более эффективные решения для передачи данных с iPhone на смартфон стороннего производителя. Корпорация не использует в документе название Android, однако мобильная ОС Google получит наибольшую выгоду от нововведения.
В конце 2024 года или начале 2025 года Apple также представит инструмент для экспорта данных браузера в новый браузер на том же устройстве.
В настоящее время пользователи Android могут использовать iOS-приложение —
Switch to Android — для переноса важных данных, включая контакты, календари, фотографии, видео, сообщения и многое другое. Однако некоторые менее важные данные по-прежнему нельзя экспортировать.@mobdevelop
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🤮1
Ultron используется для тестирования Android UI и Compose
Некоторые из преимуществ Ultron:
Выглядит довольно перспективно, можете затестить)
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
По умолчанию он поддерживает поиск в следующих менеджерах пакетов:
Maven, Gradle и Amper.
📌 Github@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
val myInterfaceInstance = object : MyInterface {
override fun myFunction() {
// Ваш код здесь
}
}
myInterfaceInstance.myFunction()Здесь переменной
myInterfaceInstance мы присваиваем объект, используя ключевое слово object :. Далее указываем название интерфейса, а затем в фигурных скобках представляем реализацию необходимых функций с помощью переопределения.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
Годная инфа для Android- и мобильных разрабов в целом
В этой таблице собраны особенности магазинов приложений, полезно учитывать при деплое
📎 А вот полезная статья в тему про деплой Flutter-приложений
@android_its
В этой таблице собраны особенности магазинов приложений, полезно учитывать при деплое
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
Delegate:class MyString {
fun myPrint(text: String) {
println(text)
}
}MyString с методом myPrint(). Допустим нам надо сделать собственное расширение printRealExt() без использование встроенных в Kotlin возможностей:fun MyString.printRealExt(text: String) {
println(text)
}interface ExtensionPrint {
fun printExt(text: String)
}
class ExtensionPrintImpl : ExtensionPrint {
override fun printExt(text: String) {
println(text)
}
}Delegation делегируем этот метод:class MyString : ExtensionPrint by ExtensionPrintImpl() {
fun myPrint(text: String) {
println(text)
}
}val myString = MyString()
myString.printRealExt("Real ext")
myString.printExt("Text from ext")
interface OneClassInterface {
fun someOne()
}
class OneClassImpl : OneClassInterface {
override fun someOne() {
println("some One")
}
}
interface TwoClassInterface {
fun someTwo()
}
class TwoClassImpl : TwoClassInterface {
override fun someTwo() {
println("someTwo")
}
}
class DerivedClass : OneClassInterface by OneClassImpl(), TwoClassInterface by TwoClassImpl()@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥1
interface MyInterface {
fun myFunction()
}
class MyClass : MyInterface {
override fun myFunction() {
println("Пришло время действовать!")
}
}
val myObject = MyClass()
myObject.myFunction()Помните: определите класс, который должен реализовывать интерфейс, а затем инициализируйте класс, создав его экземпляр.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
val myInterfaceInstance = object : MyInterface {
override fun myFunction() {
// Ваш код здесь
}
}
myInterfaceInstance.myFunction()В данном примере переменной
myInterfaceInstance мы присваиваем объект, используя ключевое слово object :Далее указываем название интерфейса, а затем в фигурных скобках представляем реализацию необходимых функций с помощью переопределения.
Интерфейс с одним абстрактным методом (SAM) в Kotlin может быть представлен лямбдой. Котлин предлагает более лаконичную запись для интерфейсов с единственным методом:
fun interface MySAMInterface {
fun myAction()
}
val myInterfaceInstance = MySAMInterface {
println("Смотрите, мама, я пишу код без использования рук!")
}
myInterfaceInstance.myAction()Здесь для сокращения записи при создании анонимного экземпляра используется лямбда-выражение. Не забывайте, что SAM-преобразования доступны лишь для интерфейсов, имеющих только один абстрактный метод.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥1
Android 15 Developer Preview 2!
Google выпустили предварительную сборку Android 15 Developer Preview 2.
🔸 Добавлен интерфейс для работы с спутниковой связью. Теперь Android 15 поддерживает обмен сообщениями SMS, MMS и RCS через спутник.
🔸 Новый раздел - "Передача аудио". Предполагается, что пользователь сможет передавать звук через Bluetooth одновременно на несколько наушников и динамиков с поддержкой Bluetooth. Однако на данный момент эта функция не работает.
🔸 "Режим веб-камеры" теперь поддерживает режим HQ-качества изображения.
🔸 Обнаружение записи экрана. Теперь, если приложение записывает ваш экран, вы получите уведомление об этом.
🔸 В разделе "О приложении" появилась функция "Отправить в архив". Архивация позволяет освободить до 60% пространства, сохраняя личную информацию.
Более подробную информацию о других изменениях можно найти в блоге Google. Заводские образы доступны по ссылке (начиная с Pixel 6).
https://developer.android.com/about/versions/15/download
@android_its
Google выпустили предварительную сборку Android 15 Developer Preview 2.
🔸 Добавлен интерфейс для работы с спутниковой связью. Теперь Android 15 поддерживает обмен сообщениями SMS, MMS и RCS через спутник.
🔸 Новый раздел - "Передача аудио". Предполагается, что пользователь сможет передавать звук через Bluetooth одновременно на несколько наушников и динамиков с поддержкой Bluetooth. Однако на данный момент эта функция не работает.
🔸 "Режим веб-камеры" теперь поддерживает режим HQ-качества изображения.
🔸 Обнаружение записи экрана. Теперь, если приложение записывает ваш экран, вы получите уведомление об этом.
🔸 В разделе "О приложении" появилась функция "Отправить в архив". Архивация позволяет освободить до 60% пространства, сохраняя личную информацию.
Более подробную информацию о других изменениях можно найти в блоге Google. Заводские образы доступны по ссылке (начиная с Pixel 6).
https://developer.android.com/about/versions/15/download
@android_its
👍6🔥2❤1
Держите хорошее объяснение отличий между 2 этими понятиями.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥1