Сборка / компиляция с SDK более высокого уровня - PullRequest
3 голосов
/ 07 октября 2011

Я немного запутался с одной вещью, посмотрите:

  1. Допустим, у нас есть дерево исходников с <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10"/>, объявленным в манифесте
  2. Я компилирую эти источники сУровень 3 SDK (SDK3.apk)
  3. Затем я создаю источники с уровнем SDK 10 (SDK10.apk)

Какая разница между этими двумя APK?(SDK3.apk и SDK10.apk) Я имею в виду, я спрашиваю не о технических деталях, какие библиотеки будут использовать эти APK, я спрашиваю о поведении APK на разных устройствах с разными ОС '.А какой из них лучше использовать?

Обновление Мой проект не содержит ничего особенного: используйте SQLite, отключение экрана и SD, отключите широковещательный перехват, использование некоторых функций телефонии.Все находится в пределах функций / методов уровня 3 SDK.Я тестировал SDK3.APK и SDK10.APK на разных устройствах (старых и новых) - выглядит работоспособно, но все же есть вопрос.

Ответы [ 3 ]

1 голос
/ 14 октября 2011

С учетом предоставленной вами информации, независимо от классов пользовательского интерфейса, лицензирования (если есть) и классов раскладки, может быть предоставлена ​​следующая информация.

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

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

Инструкции SD со временем становились все менее строгими, и хотя запись и чтение стали легче, они также казались чуть более неисправен (в зависимости от телефона).Однако, если вы следовали инструкциям, у вас все будет хорошо.Документация по Android довольно хороша для того, чтобы рассказать вам, как вам следует обращаться с вашими данными.

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

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

Очевидно, Googleне думал обо всех классных вещах, которые мы можем сделать.В противном случае им не нужно было бы делать платформу самой крутой (ИМХО).Тем не менее, они говорят вам, как правильно использовать их Классы и интерфейсы.Следуйте этим рекомендациям и делайте ваши аккуратные вещи «между ними», и ваши приложения будут работать хорошо, независимо от того, какой API вы используете.

Некоторые другие вещи Некоторые из действий Activity и View являютсязначительно улучшен в API 10, но большая часть этого касается самой обработки событий, а не инфраструктуры.Преимущества использования API 10 здесь не закреплены, если вы не обрабатываете конкретные события или не привязываете данные определенным образом.


В ответ на ваш комментарий "Почему нет четкого ответа?" Причина, по которой это всегда зависит от проекта и вашего использования, - это та же самая причина, по которой он всегда был.ООП позволяет вам переопределять и перепрограммировать практически любой аспект любой платформы, с которой вы работаете.Кроме того, вы можете легко создавать свои собственные реализации вещей.Ваше воображение и инновации являются ключом здесь.

Когда-либо использовал два компонента программного обеспечения, которые делали одно и то же и думали: «Это лучшее из двух?»Вы только что испытали то, что я описал.Это может быть лучше, потому что вы более знакомы с его стандартами.Тем не менее, это также может быть лучше, потому что это нарушает эти соглашения более интуитивным способом.

То же самое может проявиться, когда понравившееся вам программное обеспечение работает на одном устройстве / компьютере, но не на другом по непонятной причине.Ключ к отличному программному обеспечению - это ваше понимание решения, независимо от того, на каких устройствах оно работает.Ключом к успешной части программного обеспечения (с точки зрения клиента) является то, насколько последовательным является опыт.Другими словами, на скольких устройствах он работает и на скольких людей он работает.Лично я выбираю что-то среднее, хотя я люблю супер блестящие решения.Тот факт, что я считаю решение блестящим, не означает, что все мои клиенты могут использовать мое решение, и я должен поддерживать столько, сколько смогу.

В ответ на вопрос: «Как это связано?на minSDKLevel? Поскольку выбор уровней ОС Android, которые вы собираетесь поддерживать, остается за вами, ответ должен быть очевидным. Вы говорите, что ваше приложение может быть установлено на API 4 на всем пути через API 10, и вы будете поддерживатьВСЕ из них. Это означает, что ваш APK по умолчанию будет иметь решение для всех из них (если вы его запрограммируете).

Если, однако, вы создаете для определенных версий (как многие делают с различными APK),тогда у каждого есть свои проблемы и собственная поддержка. Они могут даже (на самом деле, во многих случаях) иметь свой собственный выход на рынок. НО, вы ДОЛЖНЫ настроить свой манифест для каждой отдельной сборки, если вы выберете эту модель так, чтобы API 4Устройство не видит API 10 APK, если у вас есть определенный API APK 4.


Заключение В заключение, что вы можете ожидатьво многом зависит от того, насколько хорошо вы придерживаетесь руководящих принципов Google по программированию для Android, и от того, насколько изобретательно вы пытаетесь изменить правила, но не нарушать их.В целом, большинство может ожидать более согласованного взаимодействия с API 10, чем с API 3. С этим опытом часто получается более плавный отклик с эквивалентно устойчивым механизмом данных.Внешний вид вашего пользовательского интерфейса сильно зависит от настроек каждого Layout и View и может радикально меняться между устройствами, особенно если вы динамически создаете все свои View.API 3 определенно является более последовательным из двух, когда дело доходит до обработки пользовательского интерфейса, так как API 10 имеет еще несколько вариантов.Я думаю большинство людей согласятся, что API 10, вероятно, будет более удовлетворительным для ваших пользователей в целом.

FuzzicalLogic

PS Как примечание, яразрабатывать в API 7, поскольку он имеет самый широкий спектр поддерживаемых устройств с сопоставимым набором опций.Все, что не реализовано в 7, но есть в 10, я могу переопределить, чтобы имитировать.Это, однако, мое предпочтение.

0 голосов
/ 07 октября 2011

Sdk level 10 не может быть установлен на устройстве с уровнем API ниже 10. SDK уровня 4 не может быть установлен на устройстве с уровнем API ниже 4. Оба apk будут вести себя одинаково на разных устройствах с разными уровнями API, если только вы не использовали устаревший материал. Например, если метод m1 устарел после уровня SDK 5, и вы все еще используете его на уровне SDK 10, то поведение приложения будет неопределенным, когда выполнение доходит до вызова метода m1.

0 голосов
/ 07 октября 2011

Разница в том, что android.jar поставляется при создании вашего файла apk. Когда вы создаете исходный код с уровнем SDK 4, тогда для создания вашего apk-файла используется android.jar для уровня 4 SDK, как и в случае с уровнем SDK 10.

...