it-swarm-pt.tech

Não tem como alvo as versões mais recentes do Android

Eu tenho um aviso ao tentar testar o tema no último pacote Android SDK 4.2.

Aqui está o meu arquivo de manifesto:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.themetest"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="16" />

    <application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/AppBaseTheme" >
        <activity
            Android:name="com.example.themetest.MainActivity"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Não tendo como alvo as versões mais recentes do Android; os modos de compatibilidade aplicam-se. Considere testar e atualizar esta versão. Consulte o Android.os.Build.VERSION_CODES javadoc para obter detalhes . Linha AndroidManifest.xml/ThemeTest 7 Android Lint

Eu estou usando um tema personalizado chamado 'AppBaseTheme'. Minha pergunta é o que exatamente Consulte o javadoc Android.os.Build.VERSION_CODES. . Como eu poderia resolver esse problema?

51
Edy Developer

Diz isso por causa de targetSdkVersion="16". API 16 é Jellybean 4.1 e 4.1.1, enquanto Jellybean 4.2 é API 17. 

Tente usar:

<uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="17" />

Além disso, lembre-se de que este é um aviso de Lint. Esses avisos existem para ajudar você a melhorar seu código e facilitar a manutenção, além de serem compatíveis com as últimas alterações do Android. Ignorar isso não causará nenhum problema imediato.

EDIT: Com o Android 4.3, a versão mais recente do SDK é agora 18, então você deve usar:

...
        Android:targetSdkVersion="18" />

EDIT 2: Com o Android 4.4, a versão mais recente do SDK é agora 19, então você deve usar:

...
        Android:targetSdkVersion="19" />

EDIT 3: Com o Android L, você deve usar os seguintes valores, conforme descrito aqui :

compileSdkVersion="Android-L"
minSdkVersion="L"
targetSdkVersion="L"

EDIT 4: Com o lançamento público do Android L, você deve usar 21 em vez disso:

...
        Android:targetSdkVersion="21" />

20 foi usado para 4.4W, ou para Android Wear .

EDIT 5: Com o lançamento público do Android M, você deve usar 23 em vez disso:

...
        Android:targetSdkVersion="23" />

No futuro, consulte a documentação oficial do Android para manter-se atualizado com os níveis de API do Android mais recentes.

98
Raghav Sood

Você não deve usar Android:maxSdkVersion="17" porque isso significa que se alguém usando seu aplicativo atualizar seu sistema operacional Android para uma versão maior que 17, seu aplicativo será removido.

7
ClCfe

Esta mensagem de fiapos indica que o modo de compatibilidade será automaticamente aplicado a todos os recursos que você possa ter usado e que não estão disponíveis em versões posteriores à sua targetSdkVersion de 16 declarada (e também está informando que há are posteriormente versões - por exemplo, 17).

Esses ajustes do modo de compatibilidade automática podem não ser tão ideais quanto o que você poderia realizar usando quaisquer recursos adicionados posteriormente (em vez do nível 16) para substituir a funcionalidade dos níveis 16 que você pode ter usado, que foram removidos em versões posteriores (se houver). Mas tudo ainda deve continuar a funcionar em versões posteriores (devido aos ajustes feitos pelo código de compatibilidade que é aplicado automaticamente para execução em versões superiores ao nível de API do targetSdkVersion declarado); ele pode não funcionar tão bem quanto a sua própria detecção e uso personalizado dos novos recursos (quando seu aplicativo detecta que está sendo executado nas versões posteriores que possuem esses recursos) teria funcionado.

Aqui está uma discussão, com exemplos, de minSdkLevel vs. targetSdkLevel:

Versão do Android Min SDK vs. versão do SDK de destino

Outra coisa que você deve considerar é o relacionamento do Project Build Target (o nível do SDK usado para compilar seu aplicativo) para o targetSdkLevel:

Diferença entre "Build Target SDK" no Eclipse e no Android: targetSdkVersion no AndroidManifest.xml?

3
Carl

Eu tive o mesmo problema que aconteceu comigo, acontece que agora há um novo parâmetro (geralmente não utilizado) no manifesto que você também vai querer usar. Adicione Android: maxSdkVersion = "16" ao seu uses-sdk como eu tenho abaixo:

<uses-sdk
    Android:minSdkVersion="8"
    Android:targetSdkVersion="17"
    Android:maxSdkVersion="17" />

Isso não lhe dará nenhum aviso quando salvo (já que a versão 17 é a versão máxima atual do SDK)

O maxSdkVersion não é necessário, mas ajudará no caso de algo na versão 17 ser alterado. Se você estiver usando componentes padrão da plataforma ADK, não precisará do maxSdkVersion. 

2
David D

É uma mensagem de aviso se você quiser resolvê-lo, então você pode definir Android: maxSdkVersion = "17", mas você tem que cuidar do fato de que, se alguém atualmente usando seu aplicativo e atualizar seu sistema operacional Android para versão maior que 17 então seu aplicativo irá remover automaticamente por causa da versão não suportada .. Então, cuide desse fato também .. 

0
Anil Chahal

Adicione xmlns:tools="http://schemas.Android.com/tools" tools:ignore="OldTargetApi".

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.themetest"
    Android:versionCode="1"
    Android:versionName="1.0" xmlns:tools="http://schemas.Android.com/tools" tools:ignore="OldTargetApi">

    <uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="16" />

De: Preso por que meu aplicativo Android não funciona?

0
kangear