長野エンジニアライフ

東京から長野に移住したエンジニアのブログです。🦒🗻⛰

Cordovaで作成したandroidアプリのアイコン設定をした時のメモ

デフォルトのアイコンが表示される

以下、Cordovaで作成したandroidアプリのアイコンが未設定の場合 f:id:kawakeee:20200813023019p:plain

アイコン設定手順

cordova create hogehogeのコマンド実行後に作成される、config.xmlでの設定が必要。

config.xml内の<platform name="android">タグ内に以下を追加

<icon src="res/android/ldpi.png" density="ldpi" />
<icon src="res/android/mdpi.png" density="mdpi" />
<icon src="res/android/hdpi.png" density="hdpi" />
<icon src="res/android/xhdpi.png" density="xhdpi" /

src-cordova/res配下に該当メニューアイコンを作成して置いておく。

再度デバッグして確認して、アイコンが指定したものが表示されていればok f:id:kawakeee:20200813024424p:plain

粗いけどok。笑

参考記事

cordova.apache.org

メニューアイコンサイズのガイドラインについて
blog.excite.co.jp

cordovaの導入メモ

cordovaのどおうにゅう

node環境 v12.10.0

対象プロジェクト配下にて

npm install -g @vue/cli
vue add cordova

vue add cordovaにてsrc-cordovaが作成されず、エラーが発生する場合がある

error: ENOENT: no such file or directory, open '/Users/hogehoge.../src-cordova/www/.gitignore'

ビルド手順

対象プロジェクト配下にて

cordova create src-cordva
npm run cordova-build-android

警告が出力される

No platforms added to this project. Please use cordova platform add <platform>.

src-cordova配下で

cordova platform add android

再度、対象プロジェクト配下にて

npm run cordova-build-android

ビルド完了時にapkファイルが作成される

BUILD SUCCESSFUL in 30s 43 actionable tasks: 43 executed Built the following apk(s): ...

デバック手順

実機をUSB接続した状態で以下のコマンドを実施

npm run cordova-serve-android

アイコンはcordovaのマークだが実機にandroidアプリとしてインストールできた。

参考記事

vuetifyjs.com

qiita.com

【Firebase】Functionからstorageの署名付きURLを取得しようとしたらError: 7 PERMISSION_DENIED: Missing or insufficient permissions.

事象

[Firebase] Functionからstorageの署名付きURLを取得しようとしたら 以下のエラーが発生(コンソール画面からIAM APIは有効に設定済み かつ トークン作成者の権限も付与済)

Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.

原因

IAM有効にすると、この辺りの認証情報の初期設定が必要になるっぽい? firebase.google.com

対応方針

  • GCPのコンソール画面からfirebase-adminsdkの鍵をJSON形式で作成
    f:id:kawakeee:20200610013009p:plain

  • functionのソース配下に鍵を配置

  • initializeAppを以下のように呼び出して初期化
const serviceAccount = require('<鍵を配置した階層>')
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://<project-name>.firebaseio.com',
  storageBucket: '<project-name>.appspot.com''
})

以上で、storageの署名付きURLを取得ができた。

参考記事

qiita.com

node.jsからサービスアカウント使ってFirebaseへ接続する時のメモ · GitHub

【Firebase】Functionからstorageの署名付きURLを取得しようとしたら Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects

事象

[Firebase] Functionからstorageの署名付きURLを取得しようとしたら 以下のエラーが発生(コンソール画面からIAM APIは有効に設定済み)

Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects

原因

対象projectに対するservice accountが未設定のため上記エラーが発生

対応方針

コンソール画面にて、対象プロジェクトに対してサービスアカウントトークン作成者の権限を付与する

参考記事

cheerio-the-bear.hatenablog.com

【Firebase】Functionからstorageの署名付きURLを取得しようとしたら Error: Identity and Access Management (IAM) API has not been used in project XXXXX

事象

Functionからstorageの署名付きURLを取得しようとしたら以下のエラーが発生した。

Error: Identity and Access Management (IAM) API has not been used in project

原因

GCPのコンソールにて、Management (IAM) APIが無効になっていたことが原因。

f:id:kawakeee:20200610002950p:plain

対応方針

エラー全文を読むとコンソール画面のURLが記載されているのでコンソール画面から有効にしてあげると上記エラーが消えた。

参考記事

cheerio-the-bear.hatenablog.com

Error: @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0の対応

起こったこと

firebaseのfunctionをデプロイしたら以下のエラーが発生

✔  functions: Finished running predeploy script.
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

Error: Error occurred while parsing your function triggers.

Error: @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0

原因

nodenvでバージョンが* 9.10.1を使用していた

対応

node環境8.13.0に合わせてデプロイを行う

  • 8.13.0をインストール
nodenv install 8.13.0
  • バージョンの切り替え
nodenv global 8.13.0

切り替え後、本エラーが吐かれずにdeployできた。

参考記事

github.com

firebase.google.com

joppot.info