Какое влияние на конечный APK влияет на цель сборки Android?

Мой вопрос вызвал очень похожий вопрос, этот . Но принятый ответ (единственный) указывает на другой вопрос, этот , который на самом деле не отвечает на исходный вопрос.

В документации на Android указано:

Цель сборки указывает, на какую платформу Android вы хотите создать свое приложение.

Но что это значит на самом деле?

Как я вижу это, я могу иметь minSdkVersion=4 и targetSdkVersion=10 но установить цель сборки для уровня API 4. Что произойдет? Eclipse предполагает, что я разрабатываю для уровня API 4, и любой метод, постоянный или любой, определенный на Уровнях API выше 4, не будет доступен мне. Если я попытаюсь их использовать, приложение не будет компилироваться. Я знаю об этом.

Но позвольте мне сказать иначе.

Предположим, что я установил только minSdkVersion=4 , targetSdkVersion не определен. Я также не использую какой-либо метод или константу, доступные только на Уровнях API выше 4. В этой ситуации действительно ли имеет значение цель сборки, которую я выбираю? Будет ли это иметь какое-либо влияние в финале APK?

Solutions Collecting From Web of "Какое влияние на конечный APK влияет на цель сборки Android?"

Создать цель

Цель сборки – уровень API Eclipse / IntelliJ / независимо от того, какая среда IDE вы используете против. Это просто используется системой IDE / build, чтобы узнать, какие API вам предложить. Если вы создадите против уровня API 14, приложение все равно сможет работать на уровне API 7, если вы не вызываете никаких API, которые недоступны на уровне API 7.

Обычно я устанавливаю цель сборки так же, как android: targetSdkVersion, хотя это не требуется.

Источник: http://simonvt.net/2012/02/07/what-api-level-should-i-target/

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

Пример таргетинга предыдущих уровней api при компиляции для более высокого уровня вы можете посмотреть на этот вопрос:

Android: как закодировать в зависимости от версии API?

The way I see it, I can have the minSdkVersion=4 and targetSdkVersion=10 but set the build target to API Level 4. What will happen? Eclipse assumes I'm developing for API Level 4 and any method, constant or whatever defined on API Levels above 4 will not be available to me. If I try to use them, the application will not compile.

Когда вы устанавливаете цель сборки на уровень API 4, Eclipse не позволит вам скомпилировать какие-либо методы, которые вы используете выше, потому что он строго использует уровень API 4. Однако, когда вы ставите цель сборки на более высокий уровень API, в вашем случае API 10, ваш APK доступен для использования с телефонами с уровня API от 4 до 10.

Ответ на второй вопрос отвечает на ваш вопрос, то есть цель сборки Android, как minSdkVersion и targetSdkVersion влияет на диапазон пользователей, которые могут использовать ваше приложение.

РЕДАКТИРОВАТЬ:

Поскольку вы не собираетесь определять targetSdkVersion и вы не используете какие-либо функции, которые выше уровня API 4, targetSdkVersion будет таким же, как и minSdkVersion . Независимо от того, какая цель сборки будет выбрана, будет автоматически указана. На самом деле не важно, какую цель сборки вы выберете, если она не будет ниже уровня API 4

Из документации Android targetSdkVersion :

An integer designating the API Level that the application targets. If not set, the default value equals that given to minSdkVersion. This attribute informs the system that you have tested against the target version and the system should not enable any compatibility behaviors to maintain your app's forward-compatibility with the target version. The application is still able to run on older versions (down to minSdkVersion).