@vinikir1/versionamento-push
v0.1.2
Published
Biblioteca React Native para versionamento e atualizacao remota de bundle Android.
Downloads
167
Maintainers
Readme
versionamento-push
Biblioteca para React Native que faz:
- consulta de versao de bundle remoto;
- download de bundle atualizado (zip);
- extracao e substituicao do
index.android.bundle; - atualizacao de assets Android (
drawable-*); - persistencia da versao local aplicada.
Escopo atual
Implementacao atual focada em Android.
Instalacao
yarn add versionamento-pushDependencias usadas pela lib:
yarn add react-native-fs react-native-device-info react-native-restart react-native-zip-archiveConfiguracao Android
No AndroidManifest.xml, inclua:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />Crie o arquivo de configuracao no assets Android:
android/app/src/main/assets/versionamento-vktech-config.json
Conteudo minimo:
{
"app_secret": "SEU_PROJETO_ID"
}app_secret e obrigatorio e identifica o projeto no backend.
API
getVersao()
Retorna a versao local salva em DocumentDirectoryPath/db.json.
Exemplo de retorno:
{
"bundle": "1.0.0",
"versao": 12,
"titulo": "1.0.0.12"
}checkUpdate(antes?, depois?)
Fluxo:
- Le versao local.
- Consulta endpoint remoto de versao com
projetoIdeversaoBuild. - Se versao remota diferente da local, chama
atualizar(...).
Retorno esperado:
{ update: true }quando versao remota > local.{ rollback: true }quando versao remota < local.{}quando nao ha mudanca.
atualizar(versao, projetoId, antes?, depois?)
Fluxo:
- Baixa arquivo zip do bundle.
- Extrai em pasta temporaria.
- Move assets
drawable-*. - Move
temp-cdd/index.android.bundleparaDocumentDirectoryPath/index.android.bundle. - Salva versao local.
- Exibe alerta para reiniciar o app (usa
react-native-restart).
Exemplo de uso
import { checkUpdate, getVersao } from 'versionamento-push';
async function validarAtualizacao() {
const versaoAtual = await getVersao();
console.log('Versao local:', versaoAtual);
const result = await checkUpdate(
() => console.log('Iniciando atualizacao...'),
() => console.log('Atualizacao finalizada.')
);
if (result?.update) {
console.log('Nova versao aplicada.');
} else if (result?.rollback) {
console.log('Rollback aplicado.');
} else {
console.log('Sem alteracoes.');
}
}Observacoes importantes
- Os endpoints do backend estao hardcoded no codigo da lib.
- Nao ha validacao criptografica de integridade do bundle (hash/assinatura).
- Para o bundle baixado ser efetivamente usado no boot, o app React Native precisa estar configurado para carregar o JS bundle do caminho local.
- O
READMEdescreve o comportamento atual do codigo emindex.js.
