Sign inSign up

ygoamaral/ionic

By ygoamaral

•Updated almost 2 years ago

Desenvolva aplicativos para dispositivos móveis com Ionic (Capacitor/Cordova)

Image
1

5.0K

ygoamaral/ionic repository overview

⁠Docker - Ionic

Badge Badge Badge Badge Badge Badge Badge

⁠Sobre

Imagem para criação de container para criar aplicativos para dispositivos móveis com Ionic, usando Capacitor ou Cordova.

⁠Criando um projeto

Por padrão, o projeto é feito em Capacitor, mas para fazer um projeto em Cordova, adicione a opção --cordova no fim do comando abaixo:

docker container run -ti --rm -v $PWD:/projeto ygoamaral/ionic:latest ionic start <nome-app>

Obs1: depois de executar esse comando, a pasta "<nome-app>" será automaticamente criada.

Dica: antes de adicionar as plataformas Android e/ou IOS, defina o nomes do app e pacote de compilação em capacitor.config.ts, nas propriedades appName e appId respectivamente.

⁠Criando container para o projeto

1 - Habilitando todas as permissão para o projeto:

chmod 777 -R <nome-app>

2 - Acessando o projeto:

cd <nome-app>

3 - Criando o container que será usado para gerenciar instalações de pacotes e geração de instaladores:

docker container run -ti --name <nome-container> --privileged --net host -v $PWD:/projeto -v /dev/bus/usb/:/dev/bus/usb ygoamaral/ionic:latest bash

4 - Execute o comando abaixo, para o projeto ser executado no navegador http://localhost:8100⁠:

ionic serve

⁠Cordova

⁠Execuntando o app em um dispositivo com atualização automática

1 - Adicione a plataforma alvo (android e/ou ios). Esse comando deve ser executado, pelo menos, uma vez no projeto:

ionic cordova platform add <plataforma>

2 - Adicione a coleção de builders para @ionic/angular, caso use o Angular:

ng add @ionic/cordova-builders

3 - Depois de conectar seu dispositivo via cabo USB, encontre o ID do dispositivo:

adb devices

4 - Com esse ID, execute o projeto no dispositivo:

ionic cordova run android --target=<id-dispositivo> -l

Obs: Em alguns casos, a instalação do app no dispositivo pode demorar cerca de 5 minutos na primeira vez que o comando acima é executado.

⁠Capacitor

⁠Execuntando app em um dispositivo com atualização automática

1 - Execute o comando de construção (adicione --prod no final do comando, para construir para ambiente de produção):

ionic build

A pasta /www estará atualizada. Se o passo 2 já foi realizado, copie as mudanças no fonte para os projetos nativos (Android e/ou IOS):

ionic cap copy

obs: Depois de fazer atualizações na parte nativa do código (como adicionar um novo plugin), use o comando sync:

ionic cap sync

2 - Adicione a plataforma alvo (android e/ou ios). Esse comando deve ser executado, pelo menos, uma vez no projeto:

ionic cap add <plataforma>

3 - Android: Depois de conectar seu dispositivo via cabo USB, encontre o ID do dispositivo:

adb devices

4 - Android: Com o ID do dispositivo, e o ip do seu ambiente de desenvolvimento (ip-host-dev), execute o app diretamente do seu dispositivo:

ionic cap run android --target=<id-dispositivo> --host=<ip-host-dev> -l

Obs 1: O comando acima, além de executar no dispositivo, também será executado no navegador do host em http://localhost:8100⁠.

Obs 2: A instalação do app no dispositivo pode demorar cerca de 3 minutos na primeira vez que esse comando for executado.

Obs 3: O dispositivo e o ambiente de desenvolvimento (host) devem está na mesma rede.

Obs 4: Se no dispositivo aparecer a mensagem: Página da Web não disponível. net::ERR_ADDRESS_UNREACHABLE. Pode ser um bloqueio de firewall de seu ambiente de desenvolvimento. Verifique se a porta 8100, está liberada para acesso externo..

⁠Gerando instalador Android

1 - Gerando chave de assinatura. Atenção! Guarde a localização da chave, seu apelido (alias) e a senha para assinar os apps! Caso tenha uma chave, ignore esse passo.

keytool -genkey -v -keystore <nome-chave>.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <alias-chave>

2 - Execute os comandos de construção e copia de recursos:

ionic build --prod && ionic cap copy && ionic cap sync && cd android

3 - Gerando arquivo apk:

./gradlew assembleRelease && cd app/build/outputs/apk/release

4 - Compactando o app (dica: use o autocompletar do terminal para visualizar versões do SDK disponíveis):

/opt/android-sdk-linux/build-tools/<versao-sdk>/zipalign -v -p 4 app-release-unsigned.apk app-unsigned-aligned.apk

5 - Assinando o app. Aqui será solicitado a localização, o apelido e a senha da assinatura do passo 1:

/opt/android-sdk-linux/build-tools/<versao-sdk>/apksigner sign --ks <caminho-chave>.jks --out <nome-arquivo>.apk app-unsigned-aligned.apk

6 - Agora instale o <nome-arquivo>.apk em seu dispositivo.

⁠Gerando projeto IOS

Obs: Obrigatório o uso de Mac OS e Xcode.

1 - Execute os comandos:

ionic build --prod && ionic cap copy && ionic cap sync

2 - Abra o arquivo <projeto>/ios/App/App.xcworkspace com o Xcode para acessar o projeto nativo para IOS.

Obs: A pasta /ios depende da pasta /node_modules.

3 - Escolha um emulador e clique em Run para visualizar a aplicação.

⁠Ícone e Splash Screen

1 - Crie uma pasta na raiz do projeto chamada "resources".

2 - Adicione as imagens "icon.png" e "splash.png" nessa pasta.

2.1 - Dimensões:

  • Ícone: 1024×1024px
  • Splash screen: 2732×2732px

Obs: No caso do splash screen, recomenda-se que a imagem fique centralizada em uma área de 1200x1200px.

3 - Execute os comandos para gerar as imagens:

cordova-res android --skip-config --copy
cordova-res ios --skip-config --copy

4 - Logo em seguida, faça a copia e sincronização do projeto (Capacitor):

ionic cap copy
ionic cap sync

⁠Visualizar Logs no Google Chrome

Quando o projeto estiver sendo executado em um dispositivo em modo de desenvolvimento, é possível visualizar os logs acessando, chrome://inspect (digite na barra de busca/endereço). Localize seu dispositivo e clique em no link: inspect.

⁠Retornando para o projeto

1 - Inicie o container:

docker container start <nome-container>

2 - Acesse o projeto por esse container:

docker exec -it <nome-container> bash

⁠Falha em requisições http

Poderá ocorrer falhas de requisições http em dispositivos Android 9 ou superior. Adicione a linha abaixo para fazer o ajuste no arquivo nome-projeto/android/app/src/main/AndroidManifest.xml:

  <manifest>
    <application
      ...
      android:usesCleartextTraffic="true" // <-- adicione essa linha
      ...>
      ...
    </application>
  </manifest>

Obs: Atenção! Isso irá remover a restrição: requição somente em https.

⁠Dicas

⁠Alterar nome do pacote de compilação

Acesse o arquivo ./capacitor.config.ts e altere a propriedade appId:

const config: CapacitorConfig = {
  appId: 'com.meu-app.app', // <-- altere aqui
  ...
}

Caso esteja desenvolvendo para Android, acesse o arquivo ./android/app/build.gradle e altere a propriedade applicationId:

android {
    ...
    defaultConfig {
        applicationId "com.meu-app.app" // <-- altere aqui
        ...
    }
}
⁠Alterando versão do app

Acesse o arquivo ./package.json e altere a propriedade version:

{
  "name": "meu-app",
  "version": "0.0.1", // <-- altere aqui
  ...
}

No Android acesse o arquivo ./android/app/build.gradle e altere as propriedades versionCode e versionName:

android {
    ...
    defaultConfig {
        ...
        versionCode 6 // <-- altere aqui
        versionName "0.0.6" // <-- e aqui
        ...
    }
}

No Ios, o arquivo será ./ios/App/App.xcodeproj/project.pbxproj e altere os seguintes campos:

  • Código da versão: CURRENT_PROJECT_VERSION

  • Nome da Versão: MARKETING_VERSION

  • Nome do app (PGP): INFOPLIST_KEY_CFBundleDisplayName

Obs: Em alguns casos a propriedade "INFOPLIST_KEY_CFBundleDisplayName" não aparece, bastando somente adiciona-la.

Tag summary

Content type

Image

Digest

sha256:988a4ee16…

Size

3.5 GB

Last updated

almost 2 years ago

docker pull ygoamaral/ionic