Часто при загрузке Андроид-приложений на сайтах предлагающих такую возможность, у пользователей есть возможность выбора файлов для различных архитектур системы. И тут возникают сложности — какую из загрузок нужно скачивать и устанавливать.
Архитектура процессора — это, простыми словами, схема по которой работают части процессора между собой, а также набор команд с помощью которых они «общаются» с другими частями устройства.
Многие разработчики делают универсальные приложения и игры, которые подходят под любые архитектуры процессоров. Но некоторые из них создают несколько версий программ специально «заточенных» под ту или иную архитектуру. При установке такого продукта из Google Play, сервис автоматически определяет все необходимые параметры установки и загружает на пользовательское устройство необходимые файлы. Пользователю не нужно думать над тем какой файл скачать.
Если же установка (по той или иной причине) из Google Play невозможна или нежелательна, пользователь может скачать файл APK на стороннем сайте. С его помощью можно установить приложение или игру «в ручном режиме». Вот тут-то, если на сайте есть несколько вариантов таких файлов, и появляются муки выбора.
На сегодняшний день, сайты предлагающие файлы для установки приложений и игр могут распространять APK-файлы следующих архитектур: armeabi-v7a, arm64-v8a, x86 и x86_64.
Ниже мы несколько более детально рассмотрим разные типы архитектуры для Android-устройств. Вы можете пропустить этот блок и перейти к следующему, но все-таки мы бы рекомендовали ознакомиться с этой информацией для более ясного понимания.
- armeabi-v7a — файлы работающие на устройствах с архитектурой ARM и 32-разрядным процессором. Самые распространенный тип архитектуры.
- arm64-v8a — файлы работающие на устройствах с архитектурой ARM и 64-разрядным процессором. Сейчас все больше девайсов используют такие процессоры.
- x86 — файлы работающие на устройствах с архитектурой от компании Intel с 32-разрядным процессором. Довольно мощные, но плохо оптимизированные для работы с батареей чипы. В основном используются в планшетах.
- x86_64 — файлы работающие на устройствах с архитектурой от компании Intel с 64-разрядным процессором. Такие процессоры используются в некоторых мощных планшетах. Также файлы этого типа можно запускать на эмуляторах Андроид для ПК.
Файлы начинающиеся на «x86» и «arm» не являются взаимно совместимыми — вы должны использовать версию, предназначенную для конкретной архитектуры устройства.
Также, если ваш девайс имеет 32-разрядный процессор, 64-разрядный файл на нем работать не будет. А вот 64-разрядные процессоры обратно совместимы, поэтому на них можно устанавливать 32-разрядный файл.
Исходя из вышесказанного, можно составить такие правила совместимости:
- На устройства с архитектурой armeabi-v7a можно ставить только файлы armeabi-v7a.
- На устройства с архитектурой arm64-v8a можно ставить файлы armeabi-v7a и arm64-v8a.
- На устройства с архитектурой x86 можно ставить только файлы x86.
- На устройства с архитектурой x86_64 можно ставить файлы x86 и x86_64.
В большинстве случаев телефоны используют архитектуру ARM. Более дешевые устройства используют версию armeabi-v7a, более мощные — версию arm64-v8a. Поэтому, если сомневаетесь в том, какую версию файла выбрать, выбирайте ту, которая имеет отметку «armeabi-v7a».
Определение архитектуры процессора устройства
Теперь, когда мы разобрались с теоретической частью, пора определить — на какой архитектуре разработан ваш телефон или планшет.
Для этого можно воспользоваться инструкцией к устройству (но в ней не всегда можно найти нужную информацию) или же найти данные в интернете. Но лучше всего это сделать с помощью специального приложения.
Самый простой способ!
Если у вас установлено приложение Telegram (то самое) вы можете узнать архитектуру процессора буквально за пару кликов. Для этого войдите в меню приложения и нажмите «Настройки». В самом низу открывшегося меню будет черным по белому (или белым по черному, в зависимости от настроек) прописаны нужные нам данные.
Droid Hardware Info
Если вышеописанный способ вас чем-то не устраивает или же вы хотите получить более расширенные данные о системе вашего устройства, воспользуйтесь приложением Droid Hardware Info.
Установите эту утилиту в Google Play или с помощью APK-файла (скачав его на сайте Biblprog). Для получения нужной нам информации запустите Droid Hardware Info, перейдите на вкладку «Система» и обратите свое внимание на раздел «Процессор».
В самой первой строке с названием «Архитектура процессора» вы увидите одно из значений: ARMv7, AArch64 или x86, а в строке «Набор инструкций»: armeabi-v7a, arm64-v8a или x86abi. Этого вам должно хватить для того, чтобы решить какой APK-файл скачивать и устанавливать на свой смартфон или планшет.
Нужные данные можно получить и с помощью других приложений, доступных на Google Play, например Inware или My Device.
Как вам данная инструкция? Все ли понятно? Если у вас появились дополнительные вопросы или же возникли замечания к информации выложенной на данной странице — не стесняйтесь. Напишите в комментариях!
If your app solely utilizes code written in Java or Kotlin, including any libraries or SDKs, it is already ready for 64-bit devices. If your app utilizes native code, or if you are unclear whether it does, you must evaluate it and take action.
But why are we actually transitioning?
Google plans to transition to a 64-bit app ecosystem in the next years in order to provide a superior software experience on devices powered by 64-bit CPUs. The firm has recently provided further information about the change, stating that beginning in August of this year, developers would be required to submit a 64-bit version of their Android apps. This step will eventually lead to the worldwide application of the 64-bit app policy, which will be implemented in 2021, after which Google will no longer host 32-bit apps on the Play Store when accessed via a device with 64-bit hardware.
But how can we know whether we have. as well as extension files:
You must examine your app’s APK in Android Studio’s APK Analyzer. To launch APK Analyzer:
- Pick Build > Analyze APK from the menu, and then select the APK to be evaluated.
- Now, if you check in the analyzer to the lib folder and notice any.
- So you have 32-bit libraries if you have any armeabi-v7a or x86, or 32-bit libraries if you have any armeabi-v7a or x86.
- If you don’t notice any .so files, your program doesn’t need to be upgraded.
The Conversion of 32-bit code to 64-bit code
If your code already works on the desktop or iOS, you shouldn’t have to do anything special for Android. If this is your first time writing code for a 64-bit system, the major difficulty you’ll have to deal with is that references no longer fit in 32-bit integer types like int. You will need to change the code that saves pointers in int, unsigned, or uint32 t types. Long matches the pointer size on Unix platforms, but not on Windows, therefore use the intention-revealing types uintptr t or intptrt instead. To hold the difference between two pointers, use the ptrdiff t type.
By unzipping APKs, you may look for native libraries:
APK files are organized similarly to zip files and maybe extracted similarly. Unzipping the APK will work if you want to use the command line or another extraction tool. Simply unzip the APK file (depending on your extraction program, you may need to rename it to.zip) and explore the extracted contents, following the instructions above to determine if you are ready for 64-bit devices.
Is there some exception for my app?
Google Play will continue to deliver 32-bit upgrades for games created with the Unity 5.6 development environment or an earlier version. This, however, will only last until August 1, 2021. Furthermore, APKs and software bundles created for the Wear OS and Android TV platforms that do not support 64-bit code will be excluded from the prohibition. Finally, any applications and package kits for Google’s mobile operating system that are not intended for devices running Android Pie or a later version will be exempt from the 64-bit-only restriction.
Create your program using 64-bit libraries
The steps below will guide you through the process of creating 64-bit libraries. However, you should be aware that this only applies to building code and libraries that can be built from the source.
GeekTip: If you’re using any third-party SDKs or libraries, make sure you’re utilizing 64-bit versions by following the procedures outlined above. If a 64-bit version is not available, contact the SDK or library owner and keep this in mind while planning your support for 64-bit devices.
Do this to convert your current app to x64:
:: Command Line of your choice > cmake -DANDROID_ABI=arm64-v8a … or > cmake -DANDROID_ABI=x86_64 …
Devices that are just 64-bit will be available in 2023
Arm’s message to the developer community is to begin the shift to solely 64-bit programming as soon as possible. The advantages far exceed the disadvantages. A 64-bit processor can handle more data at once, allowing new and emerging mobile technologies to thrive. 64-bit CPUs can collect, transfer, and process bigger chunks of data in less time than 32-bit CPUs, resulting in higher performance—improvements of up to 20% for specific workloads. This means that 64-bit devices are typically quicker and more responsive (though this is also dependent on well-written code).
Conclusion
The transition to 64-bit Android is a win-win situation for everyone. It will bring a variety of performance, efficiency, and security advantages to the whole Android ecosystem without creating major disruption, while also preparing developers for future mobile innovation. As a consequence, we are highly supportive of the transition and remain confident that developers all around the world will be able to migrate their programs to 64-bit.
If your app solely utilizes code written in Java or Kotlin, including any libraries or SDKs, it is already ready for 64-bit devices. If your app utilizes native code, or if you are unclear whether it does, you must evaluate it and take action.
But why are we actually transitioning?
Google plans to transition to a 64-bit app ecosystem in the next years in order to provide a superior software experience on devices powered by 64-bit CPUs. The firm has recently provided further information about the change, stating that beginning in August of this year, developers would be required to submit a 64-bit version of their Android apps. This step will eventually lead to the worldwide application of the 64-bit app policy, which will be implemented in 2021, after which Google will no longer host 32-bit apps on the Play Store when accessed via a device with 64-bit hardware.
But how can we know whether we have. as well as extension files:
You must examine your app’s APK in Android Studio’s APK Analyzer. To launch APK Analyzer:
- Pick Build > Analyze APK from the menu, and then select the APK to be evaluated.
- Now, if you check in the analyzer to the lib folder and notice any.
- So you have 32-bit libraries if you have any armeabi-v7a or x86, or 32-bit libraries if you have any armeabi-v7a or x86.
- If you don’t notice any .so files, your program doesn’t need to be upgraded.
The Conversion of 32-bit code to 64-bit code
If your code already works on the desktop or iOS, you shouldn’t have to do anything special for Android. If this is your first time writing code for a 64-bit system, the major difficulty you’ll have to deal with is that references no longer fit in 32-bit integer types like int. You will need to change the code that saves pointers in int, unsigned, or uint32 t types. Long matches the pointer size on Unix platforms, but not on Windows, therefore use the intention-revealing types uintptr t or intptrt instead. To hold the difference between two pointers, use the ptrdiff t type.
By unzipping APKs, you may look for native libraries:
APK files are organized similarly to zip files and maybe extracted similarly. Unzipping the APK will work if you want to use the command line or another extraction tool. Simply unzip the APK file (depending on your extraction program, you may need to rename it to.zip) and explore the extracted contents, following the instructions above to determine if you are ready for 64-bit devices.
Is there some exception for my app?
Google Play will continue to deliver 32-bit upgrades for games created with the Unity 5.6 development environment or an earlier version. This, however, will only last until August 1, 2021. Furthermore, APKs and software bundles created for the Wear OS and Android TV platforms that do not support 64-bit code will be excluded from the prohibition. Finally, any applications and package kits for Google’s mobile operating system that are not intended for devices running Android Pie or a later version will be exempt from the 64-bit-only restriction.
Create your program using 64-bit libraries
The steps below will guide you through the process of creating 64-bit libraries. However, you should be aware that this only applies to building code and libraries that can be built from the source.
GeekTip: If you’re using any third-party SDKs or libraries, make sure you’re utilizing 64-bit versions by following the procedures outlined above. If a 64-bit version is not available, contact the SDK or library owner and keep this in mind while planning your support for 64-bit devices.
Do this to convert your current app to x64:
:: Command Line of your choice > cmake -DANDROID_ABI=arm64-v8a … or > cmake -DANDROID_ABI=x86_64 …
Devices that are just 64-bit will be available in 2023
Arm’s message to the developer community is to begin the shift to solely 64-bit programming as soon as possible. The advantages far exceed the disadvantages. A 64-bit processor can handle more data at once, allowing new and emerging mobile technologies to thrive. 64-bit CPUs can collect, transfer, and process bigger chunks of data in less time than 32-bit CPUs, resulting in higher performance—improvements of up to 20% for specific workloads. This means that 64-bit devices are typically quicker and more responsive (though this is also dependent on well-written code).
Conclusion
The transition to 64-bit Android is a win-win situation for everyone. It will bring a variety of performance, efficiency, and security advantages to the whole Android ecosystem without creating major disruption, while also preparing developers for future mobile innovation. As a consequence, we are highly supportive of the transition and remain confident that developers all around the world will be able to migrate their programs to 64-bit.
Как сделать мой Android 64-битным?
Могу ли я обновить свой телефон до 64-разрядной версии?
Преобразование Android из 32-битной в 64-битную — это не что иное, как обновление вашей ОС с Android 4.4 kitkat до Android L и выше !. Да, это можно сделать, только если ваше базовое оборудование поддерживает это. … в другом случае 2, где устройство только с 32-битным процессором, тогда ясно «нет».
Как я могу преобразовать 32-битный в 64-битный?
Определите 64-битную совместимость с помощью настроек
- Открыть настройки.
- Щелкните Система.
- Щелкните О себе.
- Проверьте сведения об установленной оперативной памяти.
- Убедитесь, что информация составляет 2 ГБ или больше.
- В разделе «Характеристики устройства» проверьте сведения о типе системы.
- Подтвердите, что информация читает 32-разрядную операционную систему, процессор на базе x64.
Какая версия Android 64-битная?
Возможно, информация напечатана на коробке устройства, но она также должна быть доступна в Интернете. Если в названии версии ядра указано _64, устройство является 64-разрядным.
Мое устройство 64-битное?
Проверить версию ядра Android
Перейдите в «Настройки»> «Система» и проверьте «Версия ядра». Если код внутри содержит строку «x64», на вашем устройстве установлена 64-разрядная ОС; если вы не можете найти эту строку, то 32-битная.
Телефоны Android 64-битные?
Обычно Android — это 32-разрядная операционная система, и теперь каждый SOC (ЦП или процессор) является 64-разрядным. Чтобы проверить, является ли SOC 64-битным, погуглите свой процессор. Перейдите на официальный сайт процессоров, там будет дано описание процессора, то есть 32 или 64 бит.
Как я могу обновить свой телефон?
Обновление вашего Android.
- Убедитесь, что ваше устройство подключено к Wi-Fi.
- Открыть настройки.
- Выберите О телефоне.
- Коснитесь Проверить наличие обновлений. Если доступно обновление, появится кнопка «Обновить». Коснитесь его.
- Установить. В зависимости от ОС вы увидите «Установить сейчас», «Перезагрузить и установить» или «Установить системное программное обеспечение». Коснитесь его.
Мой Android 32 или 64 бит?
Как только вы нажмете «Информация», вы увидите раздел «Основная информация», в котором будет указана ваша версия ОС Android. Строка с Android, написанная в разделе «Основная информация», покажет номер версии ОС Android, на которой работает ваше устройство. Он также покажет, является ли ОС Android 32-разрядной или 64-разрядной.
PUBG 32 или 64 бит?
Я только что узнал, что pubg имеет 64-битную версию, но только для Android 10 (не уверен в ios).
64 бит быстрее 32?
2 ответа. Очевидно, что для любого приложения с большими требованиями к памяти или с большим числом чисел, превышающих 2/4 миллиарда, 64-разрядная версия является огромным преимуществом. … Потому что, честно говоря, кому нужно считать больше 2/4 миллиарда или отслеживать больше, чем 32-битное адресное пространство ОЗУ.
Какой лучше 32 или 64 бит?
Проще говоря, 64-разрядный процессор более эффективен, чем 32-разрядный процессор, потому что он может обрабатывать больше данных одновременно. 64-битный процессор способен хранить больше вычислительных значений, включая адреса памяти, что означает, что он может получить доступ в четыре миллиарда раз больше физической памяти 32-битного процессора.
В чем разница между 32-битной и 64-битной?
Что такое 32-битное и 64-битное? Когда дело доходит до компьютеров, разница между 32-битной и 64-битной системами заключается в вычислительной мощности. Компьютеры с 32-разрядными процессорами старше, медленнее и менее безопасны, а 64-разрядные процессоры новее, быстрее и безопаснее.
Что такое 64-битная поддержка?
64-разрядная система может получить доступ к 264 адресам памяти, то есть фактически к 18 квинтиллионам байт ОЗУ. Короче говоря, он легко обрабатывает любой объем памяти, превышающий 4 ГБ. Большинство компьютеров, выпущенных в 1990-х и начале 2000-х годов, были 32-битными.
Как узнать, 32-разрядная игра или 64-разрядная?
Щелкните правой кнопкой мыши исполняемый файл в системе или процесс в диспетчере задач и выберите «Свойства» в контекстном меню. Сторонние программы, такие как Process Explorer, также могут использоваться для определения того, является ли процесс 32-битным или 64-битным. Это работает аналогично тому, как это делается в диспетчере задач.
Переход Android на 64-битную систему
Объявление Google о том, что Google Play store потребует новых приложений и обновлений приложений. Для обеспечения 64-разрядных версий, запустило всю экосистему Android в направлении разработки приложений для 64-разрядной системы. Хотя маловероятно, что это приведет к огромным сбоям. Этот шаг требует от экосистемы учитывать ряд элементов при разработке новых приложений и обновлении текущих приложений. В период с настоящего времени по август 2019 года, когда 64-разрядные версии станут требованием. Все эти соображения изложены в новом техническом документе, подготовленном Arm. Который содержит дополнительные сведения о 64-разрядных вычислениях для мобильных устройств. Несмотря на некоторые проблемы, Arm поддерживает 64-битный ход, полагая, что он обеспечит ряд преимуществ во всей экосистеме Android.
64-разрядный ЦП может обрабатывать больший набор данных по сравнению с 32-разрядным процессором. Но при этом работать быстрее и быстрее. Использование 32-разрядной архитектуры накладывает ограничения на будущие инновации. А 32-разрядные энергоэффективные возможности и производительность становятся все более сложными для улучшения. Однако 64-разрядная архитектура обеспечивает непрерывные и будущие инновации, особенно в энергоэффективных мобильных приложениях. Кроме того, шаг до 64-разрядной версии обеспечивает более широкие вычислительные возможности, необходимые для удовлетворения потребностей новых рабочих нагрузок. Таких как искусственный интеллект (AI), машинное обучение (ML), захватывающие Мобильные игры и дисплеи 4k. Другие преимущества включают улучшенные функции безопасности, доступ к большему объему памяти устройства, большую точность в 64-разрядных числах и более богатый набор инструкций.
Несмотря на переход Android на 64-битную версию, важно отметить, что 32-битные приложения не исчезнут в одночасье. Если 32-разрядное приложение в настоящее время доступно в Google Play, оно может оставаться таким же. Переход на 64-разрядную версию применяется только к новым и обновленным приложениям.
Большинство смартфонов Android поддерживают 32-и 64-разрядные приложения. Однако переход на 64-битные устройства кажется неизбежным. Так как экосистема Android начинает поддерживать все большее число 64-битных приложений. В настоящее время около 36 процентов топ 40 Приложения для Android являются 64-разрядным. Но мы ожидаем ускорения в ближайшие девять месяцев как осведомленность о 64-битной перейти на Android растет. Хотя многие считают, что разработка как 32 -, так и 64-разрядных приложений позволяет разработчикам охватить потенциально более широкую аудиторию. Есть существенные преимущества сосредоточения внимания исключительно на 64-разрядных устройствах.
64-разрядные возможности были доступны в течение многих лет. Поэтому этот шаг, вероятно, будет относительно несложным для разработчиков.
Тем не менее, некоторые разработчики могут столкнуться с проблемами существующих приложений. Если приложение использует собственные библиотеки, то в зависимости от того, насколько хорошо оно было изначально написано-это может потребовать дополнительной разработки. Кроме того, повторная компиляция приложений, даже хорошо закодированных, может потребовать некоторого переписывания кода. Разработчики должны проверить сейчас, чтобы избежать больших проблем в будущем, когда переход на 64-разрядную начинает разгоняться.
Кроме того, поскольку Google напрямую не влияет на экосистему Android-приложений в Азии и не предлагает Play store в Китае. Его 64-битный мандат не оказывает такого влияния на эти рынки. К счастью, большинство ведущих магазинов приложений и влиятельных сторонников экосистемы Android на этих рынках поддерживают переход на 64-разрядные приложения.
Сосредоточив внимание на более широкой экосистеме Android, Arm взаимодействует с ведущими поставщиками игровых движков Android. Которые предоставляют свои технологии тысячам разработчиков игр. Игры составляют значительный процент загрузок и доходов, получаемых от магазина Google Play. Поэтому очень важно, чтобы эти поставщики успели подстроить, протестировать и выпустить свои игры для Android до августа 2019 года.
Как заставить приложение Android использовать 32-битные или 64-битные библиотеки
на устройстве Android с 64-битной ARM будет иметь два варианта многих библиотек, 32-бит и 64-бит, и их производительность может быть разной. Я хочу знать, есть ли способ заставить приложение использовать 32-битные или 64-битные библиотеки.
3 ответов
ABI можно указать, когда установлен apk.
adb install —abi <path to apk>
в случае устройства ARM,
для запуска в 32-битном режиме установите с помощью,
adb install —abi armeabi-v7a <path to apk>
для работы в 64-битном режиме установите с помощью,
adb install —abi arm64-v8a <path to apk>
если ваш apk написан на чистой java (без jni), на 64-разрядной/32-разрядной вторичной ОС Android, ваше приложение всегда будет работать в 64-разрядном режиме по умолчанию, но если вы хотите, чтобы ваше приложение работало в 32-разрядном режиме, вы можете создать манекен *.so файл и поместите его под <your apk name>/libs/armeabi/ чтобы заставить AndroidRuntime создать 32-битную виртуальную машину для вашего приложения
если какая-то функция вашего apk написана в jni (есть любой на <your apk name>/libs/ папка), вы можете использовать следующее команда, чтобы заставить его работать в 64 или 32 бит VM:
Каждый разработчик Android должен запомнить определенные шаги, чтобы перейти с 32-битной на 64-битную версию.
- Изучите свои наборы приложений или APK на предмет наличия нативного кода. …
- Разрешить 64-битные архитектуры и перестроить собственный код, т.е. …
- При необходимости обновите все SDK и библиотеки до 64-разрядных версий.
1 февраля. 2019 г.
Могу ли я изменить свою систему с 32-битной на 64-битную?
Microsoft предоставляет вам 32-разрядную версию Windows 10 при обновлении с 32-разрядной версии Windows 7 или 8.1. Но вы можете переключиться на 64-битную версию, если ваше оборудование поддерживает ее. … Но если ваше оборудование поддерживает использование 64-разрядной операционной системы, вы можете бесплатно перейти на 64-разрядную версию Windows.
Могу ли я изменить свой телефон на 64-битный?
1) Вы можете преобразовать 32-битную ОС в 64-битную, только если у вас есть необходимое оборудование. Что касается 64-битной ОС, многие OEM-производители, такие как OnePlus, Motorola (только флагманская линейка), Samsung (только флагманская линейка), Nokia, Google и т. Д., Предоставляют 64-битную ОС.
Как изменить Android Stackoverflow с 32-разрядной на 64-разрядную?
- Вариант 1 — удалить lib из APK. Шаг 1 — конвертируйте APK в ZIP и найдите папку lib; если у вас есть папка lib, см. зависимость библиотеки.
- Вариант 2 — Загрузите 64-разрядный и 32-разрядный файл JAR и добавьте его в папку lib в приложении и сборке.
1 февраля. 2018 г.
Мой телефон 32 или 64-битный?
Вы можете попробовать AnTuTu Benchmark или AIDA64. Перейдите в «Настройки»> «Система» и проверьте «Версия ядра». Если код внутри содержит строку «x64», на вашем устройстве установлена 64-разрядная ОС; если вы не можете найти эту строку, то 32-битная.
32-битный вместо 64-битного андроида?
Нашел объяснение: 64-битный Android может использовать 32-битные собственные библиотеки в качестве запасного варианта, только если System. … Вы получите ошибку UnsatisfiedLinkError, если вы заставите систему загрузить 32-битную библиотеку с помощью System.
В чем разница между 32-битной и 64-битной?
32-разрядная система может получить доступ к 232 адресам памяти, то есть к 4 ГБ ОЗУ или в идеале к физической памяти, она также может получить доступ к более чем 4 ГБ ОЗУ. 64-битная система может получить доступ к 264 адресам памяти, то есть фактически к 18 квинтиллионам байт ОЗУ. Короче говоря, он легко обрабатывает любой объем памяти, превышающий 4 ГБ.
Возможно ли изменение 64-битного ARMv8 с 32-битного режима на 64-битный?
Поскольку это 64-битный набор инструкций, он может запускать старый 32-битный код. Чтобы усложнить ситуацию, ARMv8-R (для реального времени, например, в автомобилях) такие микроконтроллеры имеют часть архитектуры ARMv8, но только со старым 32-битным набором инструкций и, вероятно, никогда не получат 64-битную версию, поскольку в ней нет необходимости.
Как я могу изменить 32 бит на 64 бит без форматирования?
Обновление 7-разрядной версии Windows 32 до 64-разрядной без потери данных
- Можно ли обновить 7-разрядную версию Windows 32 до 64-разрядной?
- Шаг 1. Проверьте совместимость текущего оборудования.
- Шаг 2: Сделайте резервную копию вашего компьютера, чтобы защитить данные и систему.
- Шаг 3. Обновите 7-разрядную версию Windows 32 до 64-разрядной версии бесплатно (чистая установка)
- Шаг 4. Активируйте 7-разрядную версию Windows 64, чтобы повторно использовать ключ продукта.
25 колода 2020 г.
Как мне изменить мою BIOS с 32-битной на 64-битную?
Зайдите в Настройки> Система> Обновление и безопасность> Активация. На этом экране указан тип вашей системы. Если вы видите «32-разрядная операционная система, процессор на базе x64», вы сможете завершить обновление.
Как мне перейти на 64-битную версию без потери файлов?
Вы не можете изменить «разрядность» любой версии Windows с 32-битной на 64-битную или наоборот. Единственный способ добиться этого — выполнить чистую установку. Чтобы не потерять данные, сделайте резервную копию на внешний носитель перед началом чистой установки.
Как узнать, какой у меня Android — 64 или 32 бит?
Вы можете открыть его и проверить каталог lib, чтобы узнать, какие архитектуры поддерживаются. Если каталога lib нет, он поддерживает все архитектуры. 64-разрядная версия Android имеет обратную совместимость и может запускать 32-разрядные приложения.
Что такое 64-битное устройство?
Вообще говоря, если устройство имеет более 4 ГБ ОЗУ, это 64-разрядное устройство.
Какие телефоны Android 64-битные?
Телефоны Android с 64-битным чипсетом
- Гугл пиксель С.
- Google Pixel.
- Google Pixel XL.
- Google Pixel 2.
- Google Pixel 2 XL
- Google Pixel 3.
- Google Pixel 3 XL
- Гугл пиксель 3а.
19 июн. 2020 г.
ARM или X86 как узнать
Привет, друзья! Давайте разберемся что такое ARM, X86 и какой файл нужен именно вам и вашему смартфону/планшету.
СОВЕТ! Если не хотите выяснять какая архитектура процессора у вашего устройства ARM или X86, то смело качайте обе версии и поочередно устанавливайте, какая-то точно успешно инсталлируется.
Файл с расширением APK (например avito_2020_lalala.apk) — это установочный файл (приложение или игра) для системы Андроид. Это как EXE файл для ОС Windows.
Если хотите разобраться какой файл качать ARM или X86, то инструкция ниже для вас. Всего бывают три типа установочных файлов для Android:
- APK универсальные: ставятся на любые устройства;
- APK для процессоров с архитектурой ARM;
- APK для процессоров с архитектурой X86.
Если на нашем сайте не предлагается отдельно выбрать ARM или x86, то значит APK универсальный и подойдет для любых процессоров.
Узнать тип архитектуры ядра процессора можно только с помощью стороннего приложения:
1) Telegram. Да, да, установите этот мессенджер, откройте приложение и нажмите Меню (три полоски сверху) — Настройки и пролистайте вниз. В конце будет указан тип архитектуры ARM или X86.
2) Установить специализированное бесплатное программное приложение для определения ARM или X86, например CPU-Z.
В некоторых операционных системах Anroid в Настройках — Об устройстве можно также найти тип CPU, но это либо модифицированные сборки либо специализированные лаунчеры. В целом самый простой и удобный способ как определить ARM или X86 был описан выше.
Источник
Как реализовать чистую архитектуру на Android?
Что вы найдёте в этой статье?
В 2016 году я начал изучать Java, а в начале 2017 года — Android. С самого начала я уже знал, что существует понятие архитектуры приложений, но не знал, как это применить в своём коде. Я находил много разных гайдов, но понятнее от этого мне не становилось.
Эта статья — именно та, которую мне хотелось бы прочитать в начале своего пути.
Важность архитектуры приложений
Многие компании проводят технические тесты для кандидатов, которые проходят отбор. Тесты могут отличаться, но есть то, что их объединяет. Все они требуют понимания и умения применения хорошей программной архитектуры.
Хорошая программная архитектура позволяет легко понимать, разрабатывать, поддерживать и внедрять систему [Книга «Чистая архитектура», глава 15]
Цель этой статьи — научить того, кто никогда не использовал архитектуру для разработки приложений на Android, делать это. Для этого мы рассмотрим практический пример приложения, при создании которого реализуем наименее гибкое решение и более оптимальное решение с использованием архитектуры.
Пример
Элементы в RecyclerView:
- Мы будем получать данные из API и показывать результаты пользователю.
- Результатом будет список пива с названием, описанием, изображением и содержанием алкоголя для каждого.
- Пиво должно быть упорядочено по градусу крепости.
Для решения этой задачи:
- Мы должны получить данные из API.
- Упорядочить элементы от самого низкого до самого высокого градуса крепости.
- Если содержание алкоголя меньше 5%, будет нарисован зелёный кружок, если оно находится между 5% и 8% — кружок будет оранжевым, а выше 8% — красный кружок.
- Наконец, мы должны показать список элементов.
Какое наименее гибкое решение?
Наименее гибким решением является создание одного класса, который будет выполнять четыре предыдущих пункта. Это то решение, которое любой из нас делал бы, если бы не знал, что такое архитектура приложений.
Результат для пользователя будет приемлемым: он увидит упорядоченный список на экране. Но если нам понадобится масштабировать эту систему, мы поймём, что структуру нелегко понять, разрабатывать дальше, поддерживать и внедрять.
Как понять архитектуру приложений в Android?
Я приведу очень простой пример. Представьте себе автомобильный завод с пятью зонами:
- Первая зона создает шасси.
- Вторая зона соединяет механические части.
- Третья зона собирает электронную схему.
- Четвертая область — покрасочная.
- И последняя область добавляет эстетические детали.
Это означает, что у каждой зоны есть своя ответственность, и они работают в цепочке с первой зоны по пятую для достижения результата.
У такой системы есть определённое преимущество. Если автомобиль выдаст ошибку после того, как он будет закончен, то в зависимости от его поведения мы будем знать, какой отдел должен её исправить, не беспокоя других.
Если мы захотим добавить больше эстетических деталей, мы обратимся непосредственно к пятому отделу. А если мы захотим изменить цвет, мы обратимся к четвёртому. И если мы изменим шасси, это никак не изменит способ работы покрасочной области. То есть мы можем точечно модифицировать нашу машину, не беспокоя при этом всю фабрику.
Кроме того, если со временем мы захотим открыть вторую фабрику для создания новой модели автомобиля, будет легче разделить рабочие зоны.
Применение архитектуры в Android
Мы собираемся добиться того, чтобы не было класса, который выполнял бы всю работу в одиночку: запрос данных от API, их сортировка и отображение. Всё это будет распределено по нескольким областям, которые называются слоями.
Что это за слои?
Для этого примера мы собираемся создать чистую архитектуру, которая состоит из трёх уровней, которые в свою очередь будут подразделяться на пять:
- Уровень представления.
- Уровень бизнес-логики.
- И уровень данных.
1. Уровень представления
Уровень представления — это пользовательский уровень, графический интерфейс, который фиксирует события пользователя и показывает ему результаты. Он также выполняет проверку того, что во введённых пользователем данных нет ошибок форматирования, а отображаемые данные отображаются корректно.
В нашем примере эти операции разделены между уровнем пользовательского интерфейса и уровнем ViewModel:
- Уровень пользовательского интерфейса содержит Activity и фрагменты, фиксирующие пользовательские события и отображающие данные.
- Уровень ViewModel форматирует данные так, что пользовательский интерфейс показывает их определённым образом.
Вместо использования ViewModel мы можем использовать другой слой, который выполняет эту функцию, просто важно понять обязанности каждого слоя.
В нашем примере слой пользовательского интерфейса отображает список пива, а слой ViewModel сообщает цвет, который вы должны использовать в зависимости от алкогольного диапазона.
2. Уровень бизнес-логики
На этом уровне находятся все бизнес-требования, которым должно соответствовать приложение. Для этого здесь выполняются необходимые операции. В нашем примере это сортировка сортов пива от самой низкой до самой высокой крепости.
3. Уровень данных
На этом уровне находятся данные и способ доступа к ним.
Эти операции разделены между уровнем репозитория и уровнем источника данных:
- Уровень репозитория реализует логику доступа к данным. Его ответственность заключается в том, чтобы получить данные. Необходимо проверить, где искать их в определённый момент. Например, вы можете сначала проверить локальную базу данных и, если там данных нет, сделать запрос к API и сохранить данные в базу данных. То есть он определяет способ доступа к данным. В нашем примере он запрашивает данные о пиве непосредственно у уровня, который взаимодействует с API.
- Уровень источника данных отвечает непосредственно за получение данных. В нашем примере он реализует логику доступа к API для получения данных о пиве.
Как слои взаимодействуют?
Давайте посмотрим на теоретический и практический подходы взаимодействия.
В теории:
Каждый слой должен общаться только со своими непосредственными соседями. В этом случае, если мы посмотрим на схему архитектуры программного обеспечения:
- Пользовательский интерфейс может общаться только с ViewModel.
- ViewModel может общаться только с уровнем бизнес-логики.
- Уровень бизнес-логики может общаться только с уровнем репозитория.
- И репозиторий может общаться только с источником данных.
На практике:
Структура пакетов в IDE Android Studio при чистой архитектуре:
У нас есть структура пакетов, в которой создаются классы, каждый из которых имеет свою зону ответственности.
Заключительные замечания по архитектуре приложений
Мы увидели, что каждый уровень архитектуры программного обеспечения имеет свою зону ответственности и все они связаны между собой.
Важно подчеркнуть, что ни разу не говорилось об используемых библиотеках или языках программирования, поскольку архитектура ориентирована на правильное структурирование кода, чтобы он был масштабируемым. Со временем библиотеки меняются, но принципы архитектуры сохраняются.
Дальше рекомендуется почитать о внедрении зависимостей, чтобы избежать создания экземпляров объектов непосредственно в классах архитектуры и, таким образом, иметь возможность выполнить модульное тестирование с помощью Mockito и JUnit.
Я делюсь репозиторием, где вы можете увидеть:
- Пример чистой архитектуры на Android с Kotlin.
- Использование LiveData для связи пользовательского интерфейса с ViewModel.
- Использование корутин.
- Kodein для внедрения зависимостей.
- JUnit и Mockito для тестирования бизнес-логики.
Источник
Конец эпохи ARMv7 или же немного о портировании игр
Вступление
Разбор apk
Итак, что такое .apk? APK файл представляет из себя немного модифицированный ZIP архив, который содержит ресурсы игры и игровой движок. Выглядит он примерно так:
Папка lib — ключевая точка при переносе между архитектурами. Она содержит библиотеки движка нашей игры.
* armeabi — armv6 библиотеки (не актуально)
* armeabi-v7a — armv7 библиотеки (при отсутствии папки — отсутствует и поддержка архитектуры)
* arm64-v8a — armv8 x64 библиотеки
Перенос
Шаг #1
Первым делом нам нужно узнать, возможно ли портировать игру. Для этого нужно определить движок игры. К примеру, файл lib/libunity.so — принадлежит Unity Engine, а по наличию папки assets/x-renpy можно догадаться, что игра разработана на RenPy Engine. Если у игры движок не является собственным, то переходим к шагу два.
Шаг #2
Итак, мы определили движок игры. Теперь нам нужно найти подходящего донора. Если эта игра раньше поддерживалась вашим аппаратом, а после обновления перестала — то можно попробовать вскрыть ресурсы прошлых версий. Если этот вариант не подошёл, то можно поискать игры, базирующиеся на этом же движке. Иногда разработчики просто не добавляют поддержку armv7, так что есть вероятность найти нужные компоненты.
Шаг #3
Мы нашли подходящего донора, теперь нам нужно добавить папку lib/armeabi-v7a в наш (name).apk. Добавляем и видим следующее:
В самом начале, как я уже сказал, APK файл представляет из себя немного модифицированный ZIP архив, а после изменения его содержимого он становится обычным ZIP’ом.
Шаг #4
Для того, чтобы ваше устройство могло установить ваш (name).apk файл, его нужно «подписать». Для этого есть несколько различных утилит, к примеру apk-signer.
Устанавливаем утилиту на свой девайс, открываем, переходим в раздел Signing, нажимаем на карандаш снизу и выбираем наш (name).apk. После чего программа предложит вам выбрать, куда сохранить «подписанный файл». Выбираем и ждём. . PROFIT.
Шаг #5
Будь добрым человеком, выложи свой порт для общего пользования, к примеру, в топик игры на том же 4PDA.
Источник
Русские Блоги
Android про ARM64-v8a, armeabi-v7a, armeabi, so86 проблемы совместимости под x86
Тип процессора устройства Android (широко известный как «ABI»)
- armeabiv-v7a: процессоры ARM 7-го поколения и выше. Он используется большинством устройств Android, выпущенных после 15/2011.
- arm64-v8a: 8-е поколение, 64-битный процессор ARM, очень мало устройств, Samsung Galaxy S6 является одним из них.
- armeabi: ARM-процессоры 5-го и 6-го поколения, раньше использовались мобильные телефоны.
- x86: планшеты и эмуляторы используются очень часто.
- x86_64: 64-битный планшет
Описание проблемы
Сегодняшние тестеры протестировали интегрированную версию за исключением ошибки: о телефонах Huawei Mate 8AndroidКогда в системе 6.0 запущена только что протестированная версия, возникают ошибки флэшбэка, но в системе Android 6.0 мобильного телефона Xiaomi Mi 4 ошибок нет, и она работает хорошо. Позже я проверил код моего связанного модуля и обнаружил, что код моего интегрированного модуля, связанного с версией, и код модуля, связанного с версией филиала, в точности совпадают, то есть у меня нет проблем с объединением кода ветки в код соединительной линии, поэтому я должен проверить проблему кода соединительной линии ,
Изучив журнал отправки, я обнаружил, что коллега отправил запись файла so-файла, переданного УНИТА до слияния кода, и обнаружил, что он добавил папку arm64-v8a с ARM64-v8a, выдвинутым УНИТА. Итак, файл библиотеки. Другие тексты библиотеки не имеют соответствующей версии arm64-v8a.
Я обнаружил, что есть объяснение относительно arm64-v8a через Baidu:
arm64-v8a имеет обратную совместимость, но только если в вашем проекте нет папки arm64-v8a.Если у вас есть две папки armeabi и arm64-v8a, две папки, есть a.so b.so, arm64-v8a имеет только a.so, затем, когда arm64-v8a использует b, он находит папку arm64-v8a и обнаруживает, что b.so нет, сообщает об ошибке, поэтому удалите ее в это время Папка arm64-v8a. В настоящее время мобильный телефон обнаруживает, что адаптация к arm64-v8a отсутствует, он непосредственно найдет библиотеку arm armeabi, поэтому либо вы не добавляете arm64-v8a, либо библиотека arm, существующая в armeabi, также должна быть в arm64-v8a. имеют
Автор: зеленый джим
Ссылка :Установочный пакет WeChat только скомпилировал armeabi, без x86, как arm64-v8a работает на мобильных телефонах с различными процессорами? -Ответ зелёным джимом
Источник: Жиху
Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.
Установлено, что оригинальный телефон Huawei Mate 8 является 64-битнымОперационная системаТем не менее, мобильный телефон Xiaomi Mi 4 представляет собой 32-разрядную операционную систему, поэтому мобильный телефон Xiaomi Mi 4 запускает приложение без ошибок, в то время как мобильное приложение Huawei Mate 8 запускает флэш-ошибку.
Решения
1. Решите предыдущий скриншот:
Из скриншота видно, что первый проект имеетarm64-v8aбезx86Каталог, а не во втором проектеarm64-v8aИмеяx86Справочник. Первый проект импортируется во второй проект в качестве ссылки на проект.
2. Скриншот после решения:
Из скриншота видно, что каталог libs в первом и втором проектах — это каталоги armeabi-v7a, armeabi и x86, которые являются согласованными. Первый проект импортируется во второй проект в качестве ссылки на проект.
3. Решение:
Решение состоит в том, чтобы загрузить соответствующие файлы x86 so из официального Альянса, поместить их в каталог x86 и удалить каталог arm64-v8a. Сохраняйте согласованность всех файлов so, а именно: если вы хотите добавить каталог armeabi-v8a и поместить файлы сторонних файлов, связанные с armeabi-v8a, так, чтобы файлы ниже, то другие ваши файлы так должны иметь соответствующий armeabi-v8a Версия, в противном случае будет сообщено об ошибке.
4. Предложения
- Чтобы уменьшить размер apk, сохраняются только две папки armeabi и armeabi-v7a, и количество .so в этих двух папках является постоянным
- Для стороннего .so, который предоставляет только версию armeabi, сделайте копию в папку armeabi-v7a как есть
Следующая статья воспроизводится в asce1885 (упрощенный автор книги):Что нужно знать о файлах Android .so
(Исходная ссылка:Что нужно знать о файлах Android .so)
Авторские права принадлежат автору, пожалуйста, свяжитесь с автором для перепечатки и отметьте «Упрощенный автор книги».
Ранние системы Android почти поддерживали только процессоры ARMv5архитектураВы знаете, сколько видов он поддерживает сейчас? 7 видов!
В настоящее время система Android поддерживает следующие семь различных архитектур ЦП: ARMv5, ARMv7 (с 2010 года), x86 (с 2011 года), MIPS (с 2012 года), ARMv8, MIPS64 и x86_64 (с 2014 года), Каждый связан с соответствующим ABI.
Двоичный интерфейс приложения определяет, как двоичные файлы (особенно файлы .so) выполняются на соответствующей системной платформе, от используемого набора команд, выравнивания памяти до доступных библиотек системных функций. В системе Android каждая архитектура процессора соответствует ABI: armeabi, armeabi-v7a, x86, mips, arm64-v8a, mips64, x86_64.
Почему вам нужно сосредоточиться на .so файлах
Если в проекте используется NDK, он сгенерирует файл .so, поэтому, очевидно, вы уже обращаете на него внимание. Если просто использоватьJavaПри языковом кодировании вы можете подумать о том, что вам не нужно обращать внимание на файл .so, поскольку Java является кроссплатформенным. Но на самом деле, даже если вы используете в своем проекте только язык Java, во многих случаях вы можете не осознавать, что библиотека функций или библиотека механизма, от которой зависит проект, имеет встроенные файлы .so и зависит от различных ABI.
Например, проект использует библиотеку поддержки RenderScript,OpenCVUnity, android-gif-drawable, SQLCipher и т. Д., Вы включили файл .so в сгенерированный файл APK, и вам нужно обратить внимание на файл .so.
ABI, поддерживаемый приложением Android, зависит от .so файла в APK, расположенном в каталоге lib / ABI, где ABI может быть одним из семи ABI, упомянутых выше.
Native Libs MonitorЭто приложение может помочь нам понять, какие файлы .so используются APK, установленным на телефоне, и из каких библиотек функций или сред приходят файлы .so.
Конечно, мы также можем декомпилировать приложение, чтобы получить эту информацию, но это довольно хлопотно.
Многие устройства поддерживают более одного ABI. Например, устройства ARM64 и x86 также могут одновременно запускать двоичные пакеты armeabi-v7a и armeabi. Но лучше предоставить бинарный пакет соответствующей платформы для конкретной платформы.В этом случае при запуске имеется на один уровень имитации меньше (например, виртуальный слой, который имитирует руку на устройстве x86), чтобы получить лучшую производительность (благодаря новейшей архитектуре Обновления, такие как аппаратное обеспечение, больше регистров, улучшенная векторизация и т. Д.).
Мы можем использовать Build.SUPPORTED_ABIS, чтобы получить список ABI, поддерживаемых устройствами, отсортированными по предпочтениям. Но вы не должны читать его из своего приложения, потому что, когда менеджер пакетов Android устанавливает APK, он автоматически выберет .so файл, предварительно скомпилированный для соответствующего системного ABI в пакете APK, если он находится в соответствующем каталоге lib / ABI. Если есть файл .so.
Что может пойти не так в приложении
Есть важное правило, которое является простым, но не очень известным при работе с файлами .so.
Вы должны предоставить .so файлы, оптимизированные для каждого ABI, насколько это возможно, но поддерживаются либо все, либо ни один из них: вам не следует смешивать их. Вы должны предоставить соответствующий файл .so для каждого каталога ABI.
Когда приложение установлено на устройстве, будет установлен только файл .so, соответствующий архитектуре ЦП, поддерживаемой устройством. На устройствах x86, если файл .so существует в каталоге libs / x86, он будет установлен. Если он не существует, будет выбран файл .so в armeabi-v7a. Если он не существует, будет выбран файл .so в каталоге armeabi. Файлы (поскольку устройства x86 также поддерживают armeabi-v7a и armeabi).
Другие места могут пойти не так
Когда вы вводите .so-файл, он влияет не только на архитектуру процессора. Я вижу ряд распространенных ошибок от других разработчиков, большинство из которых «UnsatisfiedLinkError», «dlopen: fail» и другие типы сбоев или низкой производительности:
Файлы .So, скомпилированные с версией платформы Android-21, работают на устройствах Android-15
При использовании NDK вы можете использовать последнюю платформу компиляции, но на самом деле это неправильно, потому что платформа NDK не имеет обратной совместимости, но совместима с прямой. Рекомендуется использовать платформу компиляции, соответствующую minSdkVersion приложения.
Это также означает, что когда вы импортируете предварительно скомпилированный файл .so, вам необходимо проверить версию платформы, на которой он был скомпилирован.
Смешивание .so файлов, скомпилированных с разными средами исполнения C ++
Файлы .so могут зависеть от времени выполнения C ++, статической компиляции или динамической загрузки. Смешивание разных версий среды выполнения C ++ может вызвать много странных сбоев, и их следует избегать. Как правило, когда имеется только один файл .so, статическая компиляция среды выполнения C ++ — это нормально, в противном случае, когда имеется несколько файлов .so, все файлы .so должны быть динамически связаны с одной и той же средой выполнения C ++.
Это означает, что когда вводится новый предварительно скомпилированный файл .so, и в проекте есть другие файлы .so, нам нужно сначала проверить, соответствует ли среда выполнения C ++, используемая вновь введенным файлом .so, существующему файлу .so. ,
Для каждой поддерживаемой архитектуры ЦП нет соответствующего файла .so
Это было упомянуто ранее, но вы должны действительно обратить на это особое внимание, потому что это может произойти, даже не осознавая этого.
Например: ваше приложение поддерживает архитектуры armeabi-v7a и x86, а затем использует Android Studio для добавления зависимости библиотеки функций. Эта библиотека функций содержит файлы .so и поддерживает больше архитектур ЦП. :
После запуска нашего приложения мы обнаружим, что оно будет зависать на некоторых устройствах, таких как Galaxy S6, и, в конце концов, вы обнаружите, что в телефоне установлены только файлы .so из 64-разрядного каталога.
Решение: Перекомпилируйте наш .so-файл для поддержки отсутствующих ABI или установите
Отображает указанные поддерживаемые ABI.
Последний пункт:Если вы являетесь поставщиком SDK, но предоставленная библиотека не поддерживает все ABI, то вы запутаете своих пользователей, потому что они могут поддерживать только меньше, чем вы предоставляете ABI.
Поместите файл .so в неправильное место
Легко запутаться в том, где .so файлы должны быть размещены или сгенерированы. Вот резюме:
- Проект Android Studio находится в каталоге jniLibs / ABI (конечно, его также можно указать, установив свойство jniLibs.srcDir в файле build.gradle).
- Проект Eclipse находится в каталоге libs / ABI (это также каталог, в котором команда ndk-build по умолчанию создает файл .so)
- Архив AAR находится в каталоге jni / ABI (файл .so будет автоматически включен в APK, который ссылается на архив AAR)
- В конечном файле APK в каталоге lib / ABI
- После установки через PackageManager в системах, меньших Android 5.0, файл .so находится в каталоге nativeLibraryPath приложения, а в системах, больших или равных Android 5.0, файл .so находится в каталоге nativeLibraryRootDir / CPU_ARCH приложения.
Предоставляйте только файлы .me с архитектурой armeabi и игнорируйте другие ABI
Все устройства x86 / x86_64 / armeabi-v7a / arm64-v8a поддерживают .so-файлы архитектуры armeabi, поэтому удаление .so-файлов из других ABI кажется хорошим способом уменьшить размер APK. Но на самом деле это не так: это влияет не только на производительность и совместимость библиотеки функций.
Устройства x86 могут очень хорошо работать с библиотеками ARM-типа, но нет гарантии, что 100% из них не потерпят крах, особенно на старых устройствах. 64-разрядные устройства (arm64-v8a, x86_64, mips64) могут запускать 32-разрядные библиотеки, но работать в 32-разрядном режиме и запускать 32-разрядные версии компонентов ART и Android на 64-разрядных платформах. Вы потеряете оптимизированную 64-разрядную версию. Перформанс (АРТ, веб-просмотр, медиа и др.).
Источник
Время прочтения
2 мин
Просмотры 11K
Вступление
Пару недель назад я столкнулся с проблемой отсутствия у игры поддержки архитектуры моего процессора в телефоне. Конечно, я знал, что ARMv7 устареет, но не ожидал, что это случится так быстро. В сети особо информации по downgrade приложения не было, поэтому пришлось немного импровизировать, вспоминая времена, когда пропала поддержка ARMv6. Так что, в данной статье речь пойдёт о переносе приложений с архитектуры ARMv8 на ARMv7, на основе моего опыта.
Тема с портированием андроид игр с одной архитектуры на другую весьма неновая. Изначально я столкнулся с этим ещё в 2015 году, только речь шла о портировании под ARMv6. С тех пор принцип переноса не поменялся, и перенести игру с одной архитектуры на другую может любой, если имеет необходимые библиотеки.
Разбор apk
Итак, что такое .apk? APK файл представляет из себя немного модифицированный ZIP архив, который содержит ресурсы игры и игровой движок. Выглядит он примерно так:
Папка lib — ключевая точка при переносе между архитектурами. Она содержит библиотеки движка нашей игры.
*
armeabi — armv6 библиотеки
(не актуально)
* armeabi-v7a — armv7 библиотеки (при отсутствии папки — отсутствует и поддержка архитектуры)
* arm64-v8a — armv8 x64 библиотеки
Перенос
Шаг #1
Первым делом нам нужно узнать, возможно ли портировать игру. Для этого нужно определить движок игры. К примеру, файл lib/libunity.so — принадлежит Unity Engine, а по наличию папки assets/x-renpy можно догадаться, что игра разработана на RenPy Engine. Если у игры движок не является собственным, то переходим к шагу два.
Шаг #2
Итак, мы определили движок игры. Теперь нам нужно найти подходящего донора. Если эта игра раньше поддерживалась вашим аппаратом, а после обновления перестала — то можно попробовать вскрыть ресурсы прошлых версий. Если этот вариант не подошёл, то можно поискать игры, базирующиеся на этом же движке. Иногда разработчики просто не добавляют поддержку armv7, так что есть вероятность найти нужные компоненты.
Шаг #3
Мы нашли подходящего донора, теперь нам нужно добавить папку lib/armeabi-v7a в наш
(name).apk
. Добавляем и видим следующее:
В самом начале, как я уже сказал,
APK файл представляет из себя немного модифицированный ZIP архив
, а после изменения его содержимого он становится обычным ZIP’ом.
Шаг #4
Для того, чтобы ваше устройство могло установить ваш (name).apk файл, его нужно «подписать». Для этого есть несколько различных утилит, к примеру apk-signer.
Устанавливаем утилиту на свой девайс, открываем, переходим в раздел Signing, нажимаем на карандаш снизу и выбираем наш (name).apk. После чего программа предложит вам выбрать, куда сохранить «подписанный файл». Выбираем и ждём. ??? PROFIT!!!
Шаг #5
Будь добрым человеком, выложи свой порт для общего пользования, к примеру, в топик игры на том же 4PDA.
Некоторые lib’ы
Unity 3.* for ARMv6: yadi.sk/d/XGHn309ORuPgeg
RenPy ARMv7: yadi.sk/d/_U-hnz8D-J7D-Q
Кастомные ядра — настоящее раздолье для юзера. С их помощью вы можете полностью настроить смарт под себя — что вам нужно? Невероятная скорость и плавность или максимальная экономия энергии? Конечно, на первых порах прошить ядро довольно сложно, хотя что там — даже поставить рекавери очень непростая задача для новоиспеченного андроид-юзера. Думаю, многие интересовались тем, как делают такие ядра, да и как вообще самому сделать нечто похожее? Если вы относитесь к этому числу — эта статья для вас!
Внимание! Статься содержит зубодробительное кол-во картинок и мозговзрывающий контент!
Если вы все-таки решились попробовать себя в шкуре ядродела, то наверняка будете озадачены кол-вом подобных инструкций. Многие из них написаны на английском, да и процесс компилирования ядра проходит с помощью Google NDK (в том числе инструкция на 4PDA). В моей же статье описано все о сборке и компилировании ядра с помощью довольно популярного тулчейна — Linaro 4.9.1. На самом деле уже давно как в свет вышел новый Linaro 4.9.2, но он довольно сырой(по крайней мере отвратительно работает на Nexus 5)
Все что нам потребуется для сборки ядра:
- Исходники стокового ядра
- Стоковый рамдиск
- Любой Linux дистрибутив(рекомендую Ubuntu 14.04LTS)
- Тулчейн(Linaro)
- Желание и стремление к созданию ядра
Итак, первым делом нужно установить необходимые для сборки пакеты:
Запускаем терминал(Ctrl+Alt+T)
Чтобы получить необходимые пакеты прописываем следующие комманды(просто скопируйте весь список и вставьте в терминал с помощью комбинации Shift+Ins) —
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libreadline-gplv2-dev gcc-multilib g++-multilib libc6-dev x11proto-core-dev libx11-dev gawk texinfo automake libtool cvs
Как видим, все необходимые пакеты установлены. Настройка ОС завершена — переходим к следующему пункту — скачивание исходников.
Исходники моего устройства находятся по адресу android.googlesource.com/kernel/msm
Здесь также находятся исходники для N4, N7 2013. Если у вас устройство линейки Nexus — смотрите таблицу выше. Если же у вас другое устройство — ищите исходники на соответствующих ресурсах производителя.
Чтобы получить исходники достаточно прописать комманду
git clone https://android.googlesource.com/kernel/msm
После того как вы скачали исходники нужно взять необходимый бранч. Для этого заходим в папку с исходниками
Проверить список бранчей можно коммандой
git branch -a
Для моего устройства необходим бранч origin/android-msm-hammerhead-3.4-kitkat-mr2. Чтобы получить данный бранч пишем
git checkout origin/android-msm-hammerhead-3.4-kitkat-mr2
Начнется проверка файлов
После окончания проверки вы увидите папку с исходниками в той директории, в которой их скачали
Остался последний пункт и можно начинать разработку ядра! Необходимо скачать тулчейн. Получить его можно коммандой
git clone https://github.com/anarkia1976/AK-linaro.git
После этого в вашей директории появится папка AK-linaro. Из этой папки достаем нужный тулчейн. Я использую Linaro 4.9.1-2014.07.20140718.CR83
Кидаем папку с тулчейном в домашнюю директорию и переименовываем в «linaro» для удобства
Итак, подготовка завершена, теперь переходим к самому процессу создания ядра. Ах да, чуть не забыл — нам потребуется рамдиск, достать его из стокового ядра можно с помощью Android IMAGE Kitchen, всю инфу и инструкции найдете по этой ссылке — forum.xda-developers.com/showthread.php?t=2073775
После того как достали рамдиск кидаем его в домашнюю директорию, опять же, так намного удобнее. Теперь нам потребуются специальные скрипты для того, чтобы скомпилировать ядро. Ссылка на скрипты — yadi.sk/d/vN0KCGF8bB9gV
Эти скрипты необходимо распаковать в папку с исходниками
Также вам понадобится конфиг, обычно название конфига совпадает с кодовым названием вашего устройства, например у меня это «hammerhead_defconfig»
Название конфига следует написать в 29 строку в файле «env_setup.sh»
Сам же конфиг находится по пути «arch/arm/configs»
Завершающим шагом является адаптация главного Makefile под Linaro. Для этого находим строчку
REAL_CC = $(CROSS_COMPILE)gcc
и заменяем на
CC = $(CROSS_COMPILE)gcc
Теперь найдите эти строчки:
# Use the wrapper for the compiler. This wrapper scans for new # warnings and causes the build to stop upon encountering them. CC = $(srctree)/scripts/gcc-wrapper.py $(REAL_CC)
И удалите. Все готово для первой компиляции!
Открываем терминал, переходим к папке с исходниками и прописываем следующую комманду:
./build_kernel.sh
Начнется компиляция. На варнинги(Warning) не обращайте внимание! Главное, чтобы не было ошибок! Большинство ошибок подробно опысываются, т.е. решить их довольно легко, но если же вы словите ошибку после VMLINUX, то тут придется попотеть, так как в гугле вы вряд ли что-то найдете, придется сидеть на Гитхабе и искать что-то подобное у других энтузиастов-ядроделов
Если ядро скомпилировалось правильно и без ошибок, то вы увидите подобное окно
Если все в порядке, то советую забекапить текущие исходники, мало ли что может случиться. Собственно вы только что собрали свое первое ядро, пусть оно и отличается от стокового одним лишь использованием Linaro
Теперь я расскажу про патчи — это то, чем мы будет «тюнинговать» ядро. Для примера я приведу патч, благодаря которому вы можете разогнать свой MSM8974 — github.com/franciscofranco/hammerhead/commit/104890313a73dae0e7d7a13975801cc568d231ad
Этим патчем мы повышаем максимальный вольтаж и, соответственно, частоты до 3GHz. Этот способ предназначен ТОЛЬКО для устройств на базе чипа MSM8974(Snapdragon 800(801)) Чтобы пропатчить ядро достаточно привести свои файлы в такое-же состояние, что и в патче. Проще говоря — добавить/удалить/заменить строки. Обязательно удаляйте плюсики! Для тех кто не понял, про какие плюсы я говорю:
+ { 1, { 3014400, HFPLL, 1, 157 }, L2(21), 1100000, 957 },
Как видим, в начале стоит + Это означает, что эту строку надо добавить в ваш файл. Сам + добавлять нельзя!
После применение данного патча(изменения своих исходников под данный комент) максимальная частота повысится с 2.3GHz до 3GHz. На разных чипах это реализовано по разному!
Теперь вновь запускаем компиляцию, дожидаемся ее окончания и получаем ядро. Оно лежит в папке «Out»
Не забывайте делать «./clean_kernel.sh» перед началом компиляции!
Теперь прошиваем ядро на устройство. Если оно запустится, то поздравляю — вы только что сделали свое первое, по настоящему кастомное ядро с разгоном!
Удачи вам и не стоит отчаиваться если что-то идет не так, нельзя создать суперядро за несколько дней — на это уходят недели, а то и месяцы.
Делитесь своим опытом в комментариях!