2012-03-27 9 views
6

La mia domanda ha fatto apparire una domanda molto simile, this one. Ma la risposta accettata (quella singola) rimanda a un'altra domanda, this one, che in realtà non risponde alla domanda originale.Che impatto ha il target di build Android nell'APK finale?

La documentazione Android:

La build target specifica quale piattaforma Android vuoi l'applicazione costruito contro.

Ma cosa significa veramente?

Il modo in cui lo vedo, posso avere il minSdkVersion=4 e targetSdkVersion=10 ma impostare il target di build su API Livello 4. Cosa accadrà? Eclipse presuppone che io stia sviluppando per l'API Livello 4 e qualsiasi metodo, costante o qualsiasi cosa definita nei livelli API superiori a 4 non sarà disponibile per me. Se provo a usarli, l'applicazione non verrà compilata. Ne sono consapevole.

Ma mettiamola in modo diverso ...

Diciamo che io ho posto solo minSdkVersion=4, targetSdkVersionnon è definito. Sono anche non utilizzando alcun metodo o costante disponibile solo su livelli API superiori a 4. In questa situazione, importa davvero il target di build che seleziono? Avrà qualche impatto nell'APK finale?

risposta

6

obiettivo Corporatura

bersaglio build è il livello API Eclipse/IntelliJ/qualsiasi IDE si sta utilizzando contro. Questo viene semplicemente utilizzato dal sistema IDE/build per sapere quali API offrire a . Se si costruisce contro livello di API 14, l'applicazione sarà ancora in grado di funzionare a livello di API 7, fornendo non si chiama qualsiasi API che sono non sono disponibili a livello di API 7.

Io per lo più impostato il target di compilazione allo stesso Android: targetSdkVersion, anche se questo non è richiesto.

Fonte: http://simonvt.net/2012/02/07/what-api-level-should-i-target/

2

Se si utilizza un target di build superiore, è possibile scrivere codice che funzionerà su versioni precedenti utilizzando la reflection, ad esempio. Se vuoi essere limitato solo all'API 4, non preoccuparti del target di costruzione.

Per un esempio di mira i livelli di api precedenti durante la compilazione di un una più alta si può guardare a questa domanda:

Android: how to code depending on the version of the API?

+0

Che ancora in realtà non rispondere alla mia domanda. –

+0

Ho già detto che se si desidera solo essere limitato all'API 4, nessun obiettivo va bene, ma se si seleziona un target di build più elevato e non si utilizza nessuna delle nuove funzionalità, è possibile che funzioni su un'API più elevata, usando quelle funzioni, ma dal momento che non le usi, non importa. Mi aspetto che ci sia una differenza nel codice byte in modo che possa utilizzare un'API diversa. –

2

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.

Quando si imposta l'obiettivo build per livello di API 4, Eclipse non ti consente di compilare alcun metodo che usi più alto di quello, perché utilizza rigorosamente il livello 4 dell'API. Tuttavia, quando inserisci il target di build su un livello API più alto, nel tuo caso il livello API 10, l'APK è disponibile per l'uso telefoni dal livello API 4 a 10.

La risposta della seconda domanda risponde alla tua domanda, ovvero il target di build Android, sia minSdkVersion che targetSdkVersion influisce sul numero di utenti che sono in grado di utilizzare l'applicazione.

EDIT:

Dal momento che non hai intenzione di definire targetSdkVersion e non si sta usando tutte le funzioni che è sopra il livello API 4, il targetSdkVersion sarà lo stesso di minSdkVersion. Qualunque build target scelto verrà automaticamente specificato.Non ha molta importanza quale costruire bersaglio si prende meno che non sia sotto il livello di API 4

dalla documentazione Android di 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).

+1

Nessuno di questi risponde alla mia domanda perché la mia domanda non riguarda i parametri manifest, qualcosa su cui tutti sembrano concentrarsi. So cosa fanno e come funzionano. Non è quello che voglio sapere. –

+0

La risposta di Steve Haley afferma pienamente come funziona e ha fornito un esempio. La comunità pensa che sia la risposta corretta alla seconda domanda, che è ciò a cui mi riferisco. Scusa se ti fuorvio. – androidnoob

+1

La domanda di Steve Haley descrive completamente come funzionano gli attributi minSdk/targetSdk. Ma la mia domanda ** non riguarda ** quelle. –

Problemi correlati