August 6, 2018 · ionic build iOS Android macOS

Configs para o build de um app no Ionic

Instala a base

npm install -g npm@latest
npm install -g cordova ionic

Instala o Android Studio (usei o Android 7.1.1 API level 25) e Xcode com o command line tools.

Dependencias do iOS

npm install -g ios-deploy
npm install -g ios-sim  
sudo gem install -n /usr/local/bin cocoapods

No Mac precisa do gradle (Android)

brew install gradle

Adiciona as plataformas

ionic cordova platform add android
ionic cordova platform add ios

Todos os resources devem ser inclusos, mas se precisar:

ionic cordova resources --icon
ionic cordova resources --splash

Às vezes o Ionic pira e não gera, então re-adiciona as plataformas:

ionic cordova platform rm android
ionic cordova platform rm ios

ionic cordova platform add android
ionic cordova platform add ios

Build iOS

ionic cordova build ios

Abra na pasta platforms/ios o arquivo Seuapp.xcworkspace no Xcode e confere em Seuapp > Resources > Images.xcassets > AppIcon o icone "App Store iOS". Se não existir nada nele irá chiar na hora de enviar pra AppStore. Então coloca o arquivo que tu gerou via pasta do projeto platforms/ios/icon e usa o de 1024x1024px..

No Xcode, vai no menu "Product > Clean", depois "Product > Archive" e segue o barco. Precisa do certificado, obviamente..

Build Android

Pra gerar keystore (gerou uma vez, guarde à 7 chaves e use ele sempre pra buildar novo apk), rode o comando, coloque uma senha e não esqueça dela:

keytool -genkey -v -keystore release.keystore -alias MEU_APP_TOPPER -keyalg RSA -keysize 2048 -validity 10000

Agora gere o build

ionic cordova build android --release

Anote o caminho da pasta onde vai ser gerado o apk pra ser assinado..

Coloca o arquivo release.keystore gerado dentro dessa pasta junto com o .apk que foi gerado e rode o comando (pedirá a senha):

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release.keystore app-release-unsigned.apk MEU_APP_TOPPER

Agora através do build-tools do seu Android Studio use o zipalign pra rodar o comando (ainda dentro da pasta que tu entrou anteriormente):

~/Library/Android/sdk/build-tools/28.0.1/zipalign -v 4 app-release-unsigned.apk app.apk

OBS: Usei/uso a versão 28.0.1 pra esse ambiente.

Pronto. "Só" isso..esse muito provavelmente não é o melhor approach mas funcionou nos build pra iOS e Android.

--

Tentando corrigir uns bugs...

Se você usa Maps ou Location no app vai dar um pau maluco na hora de buildar, verifica essa config em platforms/android/project.properties:

cordova.system.library.<NUMERO>=com.google.android.gms:play-services-maps:+  
cordova.system.library.=com.google.android.gms:play-services-location:+

Se tiver no final :11+ ou algo assim, troque pra config acima e teste o build. Comigo só funciona assim...

Se usar Firebase e der erro em alguma lib, teste essa config no arquivo plugins\cordova-plugin-firebase\scripts\after_prepare.js:

stringsXml: ANDROID_DIR + '/res/values/strings.xml

e troque para

stringsXml: ANDROID_DIR + '/app/src/main/res/values/strings.xml'

Meu Ionic Info quando escrevi esse post e com app publicado na AppStore e Google Play:

Ionic:

   ionic (Ionic CLI)  : 4.0.3 (/usr/local/lib/node_modules/ionic)
   Ionic Framework    : ionic-angular 2.2.0
   @ionic/app-scripts : 1.1.4

Cordova:

   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 7.0.0, ios 4.4.0

System:

   ios-deploy : 2.0.0
   ios-sim    : 7.0.0
   NodeJS     : v10.3.0 (/usr/local/Cellar/node/10.3.0/bin/node)
   npm        : 6.3.0
   OS         : macOS High Sierra
   Xcode      : Xcode 9.4.1 Build version 9F2000

Environment:

   ANDROID_HOME : not set
Comments powered by Disqus