A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Desenvolvimento de dispositivo personalizado
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Esta página explica várias tarefas que podem ser necessárias se você estiver
configurando um build para seu próprio dispositivo.
Criar uma configuração de atualização personalizada
As instruções do fastboot são definidas em um artefato chamado fastboot-info.txt
. Se
você criar vários destinos, terá vários arquivos fastboot-info.txt
no
$OUT_DIR. E $ANDROID_PRODUCT_OUT
apontará para o
destino mais atual que você criar. Esta página contém uma lista de tarefas para o fastboot executar
e pode ser gerada novamente usando m fastboot_info
. Uma lógica de atualização personalizada pode ser introduzida
ao modificar o arquivo fastboot-info.txt
.
O arquivo fastboot-info.txt
oferece suporte a estes comandos:
flash %s
: atualiza uma partição específica. Argumentos opcionais incluem
--slot-other,
filename_path, and
--apply-vbmeta`.
update-super
: atualiza a super partição.
if-wipe
: executa condicionalmente algum outro componente se uma exclusão permanente for especificada.
erase %s
: apaga uma partição específica e só pode ser usado em conjunto
com if-wipe
. Por exemplo, if-wipe erase cache
.
Determinar o estado de bloqueio de atualização
Se você estiver criando um daemon de flashboot personalizado (flashbootd) para um dispositivo, é preciso
ter acesso ao carregador de inicialização e ao estado de bloqueio dele. O
getFlashLockState()
@SystemApi
transmite o estado do carregador de inicialização
e a API do sistema PersistentDataBlockManager.getFlashLockState()
retorna o status de bloqueio do carregador de inicialização em dispositivos compatíveis.
Valor de retorno |
Condições |
FLASH_LOCK_UNKNOWN |
Retornado apenas por dispositivos que passaram por upgrade para o Android 7.x ou versões mais recentes e que
não suportavam anteriormente as mudanças do carregador de inicialização necessárias para receber o status de bloqueio de atualização,
caso oferecessem suporte à capability de bloqueio/desbloqueio dessa atualização.
- Dispositivos novos com o Android 7.x ou versões mais recentes precisam ter um
estado
FLASH_LOCK_LOCKED ou FLASH_LOCK_UNLOCKED .
- Dispositivos que passaram por upgrade para o Android 7.x ou versões mais recentes e que não oferecem suporte à capability de desbloqueio/bloqueio de atualização
precisam retornar o estado
FLASH_LOCK_LOCKED .
|
FLASH_LOCK_LOCKED |
Retornado por qualquer dispositivo que não oferece suporte ao bloqueio/desbloqueio de atualização
(ou seja, um dispositivo que esteja sempre bloqueado) ou qualquer dispositivo com suporte ao
bloqueio/desbloqueio de atualização e que esteja no estado bloqueado. |
FLASH_LOCK_UNLOCKED |
Retornado por qualquer dispositivo com suporte ao bloqueio/desbloqueio de atualização flash e que
esteja no estado desbloqueado. |
Os fabricantes precisam testar os valores retornados pelos dispositivos com carregadores de inicialização bloqueados
e desbloqueados. Por exemplo, o AOSP
contém uma implementação de referência que retorna um valor baseado na
propriedade de inicialização ro.boot.flash.locked
. O código de exemplo pode ser encontrado nos
diretórios abaixo:
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-04-04 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-04-04 UTC."],[],[],null,["# Custom device development\n\nThis page explains several tasks you might need to perform if you're\nsetting up a build for your own device.\n\nCreate a custom flash configuration\n-----------------------------------\n\nFastboot instructions are defined in an artifact called `fastboot-info.txt`. If\nyou build multiple targets, you'll have multiple `fastboot-info.txt` files in\nthe \u003cvar translate=\"no\"\u003e$OUT_DIR\u003c/var\u003e. And, `$ANDROID_PRODUCT_OUT` points to the\nmost current target you built. This page list the tasks for fastboot to execute\nand can be regenerated using `m fastboot_info`. You can introduce custom\nflashing logic by modifying the `fastboot-info.txt` file.\n\nThe `fastboot-info.txt` file supports these commands:\n\n- `flash %s`: Flashes a given partition. Optional arguments include `--slot-other,`\u003cvar translate=\"no\"\u003efilename_path\u003c/var\u003e`, and`--apply-vbmeta\\`.\n- `update-super`: Updates the super partition.\n- `if-wipe`: Conditionally runs some other component if a wipe is specified.\n- `erase %s`: Erases a given partition (can only be used in conjunction with `if-wipe` -\\\u003e eg. `if-wipe erase cache`).\n\nDetermine flash lock state\n--------------------------\n\nIf you're building a custom flashboot daemon (flashbootd) for a device, you need\nto be able to obtain bootloader and bootloader lock state. The\n`getFlashLockState()` `@SystemApi` transmits the bootloader\nstate and the `PersistentDataBlockManager.getFlashLockState()` system\nAPI returns the bootloader's lock status on compliant devices.\n\n| Return value | Conditions |\n|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `FLASH_LOCK_UNKNOWN` | Returned only by devices upgrading to Android 7.x or higher that didn't previously support the bootloader changes required to get the flash lock status if they supported flashing lock/unlock capability. - New devices running Android 7.x or higher must be in either a `FLASH_LOCK_LOCKED` or `FLASH_LOCK_UNLOCKED` state. - Devices upgrading to Android 7.x or higher that don't support flashing unlock/lock capability should return a `FLASH_LOCK_LOCKED` state. |\n| `FLASH_LOCK_LOCKED` | Returned by any device that doesn't support flashing lock/unlock (that is, the device is always locked), or any device that supports flashing lock/unlock and is in the locked state. |\n| `FLASH_LOCK_UNLOCKED` | Returned by any device that supports flashing lock/unlock and is in the unlocked state. |\n\nManufacturers should test the values returned by devices with locked and\nunlocked bootloaders. For example, AOSP\ncontains a reference implementation that returns a value based on the\n`ro.boot.flash.locked` boot property. Example code is located in the\nfollowing directories:\n\n- `frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java`\n- `frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java`"]]