カテゴリーアーカイブ Android

著者:ym

スマホのランチャーを Microsoft Launcher へ変更

Microsoft 化する Android 。

私は Nova Launcher を使っていましたが、Microsoft launcher が逸品らしい話題なので変更してみました。

Edge 化していけば Windows PC との連携が楽になるようです。

Microsoft Launcher

しかしちょっと重いかな。私の端末では少々重たいので、そのうち Nova Launcher に戻りそうな気もしますが、しばらくこれで Windows 10 April 2018 Update を楽しもうと思います。

クラウドでは Linux にシフトするなど動きがありましたが、今後が MS製品 だけど、楽しみですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

[Google I/O] Android P のナビゲーションボタンが刷新されるらしい!

先日、Google公式の定期発表会 “Google I/O 2018″が開催されました。
このGoogle I/O内で発表されたGoogleの新サービスや新機能を各IT系メディアが報じています。

その中で、個人的に気になったものを取り上げていきたいと思います。
今回はこちら。

Androidのナビゲーションボタンが変更。iPhoneXのような操作性に

今やすっかりおなじみとなったAndroidナビゲーションボタン(ホームや戻る、アプリ一覧の表示など)がAndroidの新バージョンであるAndroid P(仮称)で刷新されることになったようです。

こちらが新しいAndroid P の画面。
ホームボタンの代わりに、何やら楕円形のバーが表示されています。

この形、どこかで見たことがあるという方も多いでしょう。


http://www.appps.jp/274114/より

そう、iPhoneXのホームボタン(?)とそっくりですよね。

iPhone Xの操作方法は?一から十までまったく違う! – カミアプ
iPhoneXはボタンを押す代わりに、この下のバーの部分を上にスワイプすることでホーム画面に戻ることができるようになっています。


http://www.appps.jp/274114/より

実は今回発表されたAndroid Pのナビゲーションボタンも、この動作を一部取り入れています。

Android Pの場合は上にスワイプすることでアプリ一覧が表示され、更にもう一度上にスワイプするとアプリドロワーが表示されます。ホームに戻る場合はこの楕円のアイコンをタップします。この操作は今までと同じですね。
横にスワイプするとアプリを簡単に切り替えることができ、アプリのマルチタスク機能がより使いやすくなっています。いままでは分かれていたホームボタンとアプリ切り替えボタンが統合され、より洗練されたような印象です。

幾つかの記事ではiPhoneXのパクリだという批評がされている記事もいくつか見かけますが、もともとiOSもAndroidも互いのいいところをパクリあっているところはあるので、さほど問題にならないのではないのかな、というのが個人的な意見です。

操作もより直感的になり、陳腐化していた操作性に新鮮さが戻ってきた気がします。

他にもいろいろ改善がされているということなので、Android Pのリリースが楽しみですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

[不具合]Android版Google Chrome 66で画像選択しようとするとクラッシュするバグが発生

本日、弊社サービスを利用しているお客様から、Android版Google Chromeを使って画像をアップロードしようとした際にエラーが発生するという問い合わせが入りました。
自分たちの環境でも試したところ、Android 6.0の端末で下記のようなエラーが出ることを確認しました。

Chromeの検証ツールではconsoleに特にエラー出力が出力されていなかったため、adb logcat コマンドでOSのログを取得。

04-26 18:58:29.812  1726  2925 I ActivityManager: Start proc 26320:com.android.chrome:decoder_service/u0i881 for service com.android.chrome/org.chromium.chrome.browser.photo_picker.DecoderService
04-26 18:58:29.885 18544 18544 W cr_Autocomplete: stopping autocomplete.
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215608): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215609): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215610): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.887 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_chrome): android.system.ErrnoException: chmod failed: EACCES (Permission denied)
04-26 18:58:29.887 26320 26320 I cr_LibraryLoader: Using linker: LegacyLinker
04-26 18:58:29.888 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_textures): android.system.ErrnoException: chmod failed: EACCES (Permission denied)
04-26 18:58:29.888 26320 26332 W ContextImpl: Unable to create files subdir /data/user/0/com.android.chrome/cache
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215611): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215612): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215613): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215614): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215615): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215616): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.912 26320 26320 D AndroidRuntime: Shutting down VM
04-26 18:58:29.912 26320 26320 E AndroidRuntime: FATAL EXCEPTION: main
04-26 18:58:29.912 26320 26320 E AndroidRuntime: Process: com.android.chrome:decoder_service, PID: 26320
04-26 18:58:29.912 26320 26320 E AndroidRuntime: java.lang.RuntimeException: Unable to create service org.chromium.chrome.browser.photo_picker.DecoderService: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.handleCreateService(ActivityThread.java:2944)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.access$1900(ActivityThread.java:154)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:224)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5526)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-26 18:58:29.912 26320 26320 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.SysUtils.isLowEndDevice(SysUtils.java:35)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LegacyLinker.ensureInitializedLocked(LegacyLinker.java:11)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LegacyLinker.prepareLibraryLoad(LegacyLinker.java:25)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LibraryLoader.loadAlreadyLocked(LibraryLoader.java:62)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LibraryLoader.ensureInitialized(LibraryLoader.java:17)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.chrome.browser.photo_picker.DecoderService.onCreate(DecoderService.java:4)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.handleCreateService(ActivityThread.java:2934)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        ... 8 more
04-26 18:58:29.914  1726  2547 D ActivityManager: New dropbox entry: com.android.chrome:decoder_service, system_app_crash, XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

詳しいことはわかりませんが、どうやら/data/user/0/com.android.chrome/app_texturesに対してchmod(読み書き権限の変更)をしようとして権限不足によりシステムから拒否されてchrome本体が落ちているようです。

問題が発生しているAndroid版Chromeのバージョンは 66.0.3359.126 で、この記事を書いた時点での最新版となっています。


なお、Android 7.0 で同じバージョンのChromeで画像アップロードした際は、問題なく画像選択可能でした。

Chromeアプリ本体の不具合ということであれば、自分以外にも不具合の報告が上がっているはず…ということで調べてみたところ、すでに数件の報告がネット上に上がっていました。

今回の場合、ほぼ間違いなくChromeアプリ本体の不具合のため、Googleがアップデートで不具合修正をするまで待つしかありません。
それまでの間、Android向けの別のブラウザアプリを利用することで、不具合を回避することができます。

自分たちの環境で確認した限りでは、Firefoxを用いると問題なくアップロード可能でした。

また、報告では、Chromeを端末出荷時にインストールされていたバージョンに戻すことで、再度画像アップロードが可能となる報告もありました。

自分の環境でも試したところ、確かに画像アップロードが可能となっていることを確認。
自分の環境の場合、バージョンダウン後のChromeのバージョンは 56.0.2924.87 となっていました。

Chromeのバージョンダウンは、アプリを一度無効化し、再度有効化することで可能です。

Androidアプリを削除(アンインストール)/無効化/非表示にする方法 – モバレコ

  • この記事いいね! (0)
村上 著者:村上

【Cordova】アプリ内にAdMobのバナー広告を導入する方法

タイトル通り、Cordovaで開発したアプリにバナー広告を入れる方法です。
ちなみに、AndroidとiOSの両方に対応しています。
本当はネイティブ広告という、Twitterのタイムラインで表示されるような、記事っぽくみえる広告を導入したかったのですが、どうやらプラグインが対応していないようです。

今回使ったのは、cordova-plugin-admob-free というプラグインです。
GitHubはこちら。

GitHub – ratson/cordova-plugin-admob-free: Cordova AdMob Plugin
https://github.com/ratson/cordova-plugin-admob-free

 

まずインストールは下記のコマンドをコマンドプロンプト等で実行します。

cordova plugin add cordova-plugin-admob-free --save

インストールが終わったら、下記のコードをプログラムに記述するだけ!
なお、私の環境では、index.js というファイルに記述しました。

// AdMob 広告ID
var admobid = {}
if (/(android)/i.test(navigator.userAgent)) {  // Android
    admobid = {
        banner: 'ca-app-pub-3940256099942544/6300978111'
    }
} else if (/(ipod|iphone|ipad)/i.test(navigator.userAgent)) {  // ios
    admobid = {
        banner: 'ca-app-pub-3940256099942544/2934735716'
    }
}

document.addEventListener('deviceready', function () {
    // バナー広告表示
    admob.banner.config({
        id: admobid.banner,
        isTesting: true,  // テスト広告
        autoShow: true,
    })
    admob.banner.prepare()
}, false);

コードの上の方で、アプリを使っている端末が Android なのか iOS なのかを取得しています。
Android と iOS では、広告のIDが異なるので、この処理も重要です。

なお、広告のIDはテスト用のものを使っています。
なんでも、動作を確認している段階のアプリで本番用の広告IDを使うと、最悪の場合アカウント停止になることもあるとのことだったので…。
絶対にそれは避けたいので、慎重に。

ちなみに、広告の種類は他に「インタースティシャル」という画面に大きく表示される広告と、あとは「動画広告」もあります。
このあたりは、お好みで使い分けてください。
…が、個人的に画面全部を覆うような広告は嫌いなので、使うとすればバナー広告かな。

 

以上、アプリ内に広告を入れる方法でした。
アプリの利用者数が増えてきたら、導入を検討していきたいと思います。

  • この記事いいね! (0)
村上 著者:村上

【Cordova】Android・iOSアプリを終了させる処理

Cordovaのアプリを開発中、プログラムからアプリを終了させる処理を行いたかったので、やり方を調べました。
が、結局アプリを終了しない処理で落ち着いたんですけどね。

今回参考にさせていただいたサイトはこちら。

monaca(cordova)でアプリを終了させる(Androidのみ)
https://blog.mitsuto.com/cordova-exit

 

で、アプリを終了させる処理は、実はこれだけ。

// アプリを終了する
navigator.app.exitApp();

アプリを終了させたいタイミングで、上記の一行を書くだけです!
思ったよりも簡単でした。

ですが、この処理は iOS では動作しません。
なので、下記のプラグインをインストールする必要があります。

GitHub – FRD49/iOS-ExitApp: navigator.app.exitApp() on iOS
https://github.com/FRD49/iOS-ExitApp

インストールするときは、下記を実行します。

// iOS-ExitApp のインストール
cordova plugin add com.frd49.cordova.exitApp

// 上のコマンドがエラーになる場合はこちらを実行
cordova plugin add https://github.com/FRD49/iOS-ExitApp.git

プラグインをインストールする時にエラーが発生した場合は、下のコマンドを実行してください。
私の環境では、上のコマンドではインストール元が見つからないとかで失敗しました。

プラグインの追加が完了したら、アプリを再ビルドして、実機で実行すればOKです。
これで、iOS でも「navigator.app.exitApp();」を使ってアプリを終了できるようになります。

 

以上、プログラムからアプリを終了させる方法でした。
が、確かにアプリは終了できるのですが、終了時の挙動が強制終了の時と似ている、というか同じなので、終了する前に「アプリを終了しますか?」の確認ダイアログは必須ですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

XperiaのBluetoothで音が途切れる・聞こえなくなる不具合を治す方法

自分はメインのスマートフォンとしてXperia Z5 を使用しています。
SONYが製造・販売するスマートフォン、Xperiaシリーズは当初からかなり人気があり、一時期自分の周りのほとんどの人が、iPhoneかXperiaのどちらかを持っている状態になりました。

そんなXperiaですが、使っていて気づいたのがBluetooth周りの不具合。
自分の使っているZ5では、Bluetoothで音楽を聴いていると頻繁に音途切れが発生する問題が起きていました。
見ている限り端末の高負荷時に起きているような印象だったので、きっとそれが原因だと考えていたのですが、Z5より前に使っていたAQUOS PHONE 303SHでは負荷がかかってもBluetoothが途切れることはかなりまれだったので、変だな、とは思っていました。

最近かなり途切れ具合が酷くなっていたので、ネットで対策方法を調べていたらこんな記事が。

Xperia Z5でBluetoothイヤフォンが音飛び、途切れる、音が出ない場合などの改善・対処方法 – スマホ評価・不具合ニュース

どうやらこれ、どうもバグだったようで…
Androidの標準機能からペアリングすると不具合が発生するので、SONY独自のファームウェアに含まれる”Throw”からペアリングすることで安定するようになるとのこと。

まず、ホーム画面内のドロワーから、”設定”を開きます。

中から”機器接続”を選択

“Throw” をタップします。

Throwについて をタップ

はじめにをタップします。

今セットアップをしようとしている機器の種類を選択

Bluetoothを選択します。

機器を追加 をタップ

この状態になったら、Bluetooth機器の方をペアリングモードにすると、Xperia側に機器が表示されるので、そこをタップすると設定完了です。

この方法でペアリングしなおしてから、音飛びや音が再生されない不具合は今のところ解消しています。
Xperiaは他のAndroid端末と比較して、かなり幅広い機器と接続できるのがとてもいいのですが、その反面Bluetooth周りに弱点が出てしまったような形です。

今後改善されることを願います。

  • この記事いいね! (0)
村上 著者:村上

【Android Studio】Gradleのバージョンを確認&アップデートする方法

今日、Cordovaアプリにプラグインを追加しようとした際、Gradleのバージョンが低すぎる!と怒られました。
で、更新方法がわからず調べたので、まとめです。

最初はアプリの build.gradle のどこかを更新するのかと思いましたが、どうやら違うみたいです。

 

今回参考にさせていただいたサイトはこちらから。

AndroidStudioのGradleのアップデートについて – Pelikan Philosophy
http://www.peliphilo.net/archives/685

バージョンの確認&アップデート方法ですが、まず Android Studioのメニューバーにある File から Project Structure をクリックします。
そうすると、下の画像のようなウィンドウが表示されるので、左側のメニューから Project を選択します。

そうすると、ウィンドウ上部に、Gradle versionを入力する欄があるので、こちらに任意のバージョンを入力します。
入力出来たら、右下にある OK を押して、ウィンドウを閉じます。
あとは、Android Studio が入力されたバージョンを自動でインストールしてくれるので、それを待てば完了です!

 

もしかしたら、インストールに少し時間がかかるかもしれませんが、それ以外はとても簡単でした。
冒頭でも書きましたが、てっきり build.gradle に記述しているのではと思い込んでいたので、少し探してしまいました。
やはりわからないことは調べるに限りますね!

  • この記事いいね! (0)
著者:ym

スマートフォン機種変

スマートフォンを機種変しました。

電池の持ちが悪くなって来てたのと。電池が 60 % 程度で突然電源が落ちる劣化電池の持病が頻発する様になったのがきっかけ。サーバ監視や、VPN、リモートSSH操作端末、SIPボタン電話、など非常に重要な端末化しているので、結構困るんですよね。

ちょうど HTC U11 の SIM フリー・Felica・NFC 対応の赤色限定モデルが予約発売開始されていたのですが、高くて手がでませんでした。

なので、ヤフオク。

IMEIだけ◯印のを確認して、8000 円で今と同じ機種の色違い中古を購入しました。

いままでは HTV31 の紺色使っていましたが、今度は HTV31 の赤です。

 

とどいたのは結局SIMロック状態品でした。こまったことに、先日から各キャリアが SIM フリー化対策で、自信の購入履歴が無いと SIM フリー化はしてくれなくなったのでね。どうにか root 化、SIM フリー化出来たので移行無事完了!

さて、古い機種側のバッテリー交換の為に、分解にはいります。

  • この記事いいね! (0)
村上 著者:村上

【Android】ビルド時の「Error:Execution failed for task ‘:processDebugGoogleServices’.」の対処法

Cordova アプリで、新しくプラグインを追加したところ、Androidでエラーが発生したので、その対処法について。
ちなみに、追加したプラグインは「cordova-plugin-admob-free」で、アプリ内に広告を入れるためです。
が、このプラグインを追加してビルドしたところ、エラーが発生しました。

 

遭遇したエラーの全文はこちら。

Error:Execution failed for task ‘:processDebugGoogleServices’.
> Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0.

Google翻訳にかけてみたところ、どうやら processDebugGoogleServices の実行に失敗しているようです。
失敗する要因は、バージョンの競合とのこと。
そのため、対処法としては、build.gradle に記述されている com.google.android.gms のバージョンを 9.0.0 に更新するのが有効なようです。

具体的には下記のとおりです。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // SUB-PROJECT DEPENDENCIES START
    compile project(":CordovaLib")
    compile "com.google.android.gms:play-services-base:9.0.0"
    compile "com.google.android.gms:play-services-ads:9.0.0"
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile "com.facebook.android:facebook-android-sdk:4.+"
    compile "com.google.firebase:firebase-core:9.0.0"
    compile "com.google.firebase:firebase-messaging:9.0.2"
    // SUB-PROJECT DEPENDENCIES END
}

上記コードの、5、6行目の com.google.android.gms:play-services-basecom.google.android.gms:play-services-ads のバージョンを 9.0.0 に変更しました。
が、これだけだとまだエラーが発生するので、9、10行目の com.google.firebase:firebase-corecom.google.firebase:firebase-messaging のバージョンも 9.0.0 に変更します。

なお、10行目の com.google.firebase:firebase-messaging だけバージョンが 9.0.2 なのは、別のエラーが発生したためです。
ついでに、7行目の com.android.support は com.android.support:support-v4:24.1.1+” から com.android.support:appcompat-v7:23.2.1 変更しており、これも別のエラーの対策のためです。

上記のコードのように build.gradle を修正したところ、問題なく実行することができました。

 

以上、ビルドエラーの対処法でした!
ちなみに、2つ目のエラーの方が、ビルドが通ってしまう分、大変でした…。
ビルドは通るのに、いざ実機で実行するとアプリが落ちるという…。
何とか解決できたので良かったです。
Codova はやっぱり難しい!

  • この記事いいね! (0)
村上 著者:村上

【Cordova】アプリのアイコンの設定方法とAndroidのアイコンサイズまとめ

マージに失敗したのか、Cordovaアプリのアイコンの設定をしている記述が掻き消えたので、備忘録を兼ねてまとめ。
これでもしもう一度コードが吹っ飛んでも大丈夫!

 

アプリのアイコンは config.xml で指定します。
まず、iOSアプリのアイコンは、下記のように記述します。

<platform name="ios">
    <icon height="180" src="res/icon/ios/icon-60@3x.png" width="180" />
    <icon height="60" src="res/icon/ios/icon-60.png" width="60" />
    <icon height="120" src="res/icon/ios/icon-60@2x.png" width="120" />
    <icon height="76" src="res/icon/ios/icon-76.png" width="76" />
    <icon height="152" src="res/icon/ios/icon-76@2x.png" width="152" />
    <icon height="40" src="res/icon/ios/icon-40.png" width="40" />
    <icon height="80" src="res/icon/ios/icon-40@2x.png" width="80" />
    <icon height="57" src="res/icon/ios/icon.png" width="57" />
    <icon height="114" src="res/icon/ios/icon@2x.png" width="114" />
    <icon height="72" src="res/icon/ios/icon-72.png" width="72" />
    <icon height="144" src="res/icon/ios/icon-72@2x.png" width="144" />
    <icon height="29" src="res/icon/ios/icon-small.png" width="29" />
    <icon height="58" src="res/icon/ios/icon-small@2x.png" width="58" />
    <icon height="50" src="res/icon/ios/icon-50.png" width="50" />
    <icon height="100" src="res/icon/ios/icon-50@2x.png" width="100" />
    <icon height="1024" src="res/icon/ios/icon-1024.png" width="1024" />
</platform>

Androidのアイコンの設定はこちら。

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

が、Androidのアイコンサイズがいまいちわからないので簡単にまとめ。
このアイコンサイズについて、毎回こういったアイコンを準備するたびに調べているので、今回まとめました。

解像度 アイコンサイズ
ldpi 36×36px
mdpi 48×48px
hdpi 72×72px
xhdpi 96×96px
xxhdpi 144×144px
xxxhdpi 192×192px

あとは、Android・iOS 共に、上の表などを参考に、それぞれの画像を用意すれば設定完了です。
(上記コードだと、res/icon ディレクトリにそれぞれ android、ios フォルダを用意し、アイコンを保存しています)
いつも通りにビルドした後、実機で実行すればアイコンが設定されています。

 

以上、Cordovaアプリ開発時に、アプリアイコンを設定する方法でした。

  • この記事いいね! (0)