takek1990 日記

気張らずに考えたことや学んだことなどを書くブログ。

cordova androidと firebaseのバージョンアップで 急にビルドできなくなった。

ブログもアプリも放置してましたが久しぶりに少し手を入れようとしたらビルドエラーで半日ハマったのでメモ。

まとめ:

・現象
cordova androidのバージョンが古かったのと、
2019/6/17にgoogleがfirebaseのメジャーバージョンを変えたらしく、cordova android
プラグインcordova-plugin-firebaseでビルドできなくなった。
firebase.google.com

・解決策
https://github.com/arnesson/cordova-plugin-firebase/issues/1081
dpa99cさんのおかげで何とかなった。以下で解決。

cordova platform rm android
cordova plugin rm cordova-plugin-firebase
cordova plugin add cordova-plugin-firebasex
cordova plugin add cordova-plugin-androidx-adapter
cordova platform add android@8.0.0

以下詳細(ハマった手順)

いつものように

cordova run android

したら長々とエラーが出てきて、よく見たら以下のようなエラーがあった。
他にもaapt2のエラーと書かれてた気がする。

resource android:attr/ttcIndex not found. 
resource android:attr/fontVariationSettings not found.

早速ググると、SDKのバージョンを28にするように書かれている。それか27で無理やり頑張るか。
error: resource android:attr/fontVariationSettings not found - Stack Overflow

build.gradleを編集するなどしてどちらも試したが駄目だった。


◇cordova androidのバージョンアップ問題
cordova android のバージョンが古いのでは?と思って調べてみると自分のは7.11だったが
8.00が出ている模様。ここでSDK28がサポートされるようになった?っぽい。
Cordova Android 8.0.0 Released! - Apache Cordova
とりあえず入れた。

◇firebaseの問題
すると今度はfirebase絡みのエラーが発生。
色々サイトを回った挙句、firebaseのバージョンアップの情報に行きついた。
https://github.com/arnesson/cordova-plugin-firebase/issues/1081

ちなみにこんな感じのエラーが出てた。

Task :app:fabricGenerateResourcesDebug FAILED
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics found an invalid API key: null.
Check the Crashlytics plugin to make sure that the application has been added successfully!
とか
What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'. 
とか


疲れた。今後ゆっくり更新していきたい。

個人でandroidアプリを作って公開した話 第3話「初心者向け、アプリ作りの基礎知識①」

 

このページから、何回かに分けて、
何も知らなかった5年前の自分に向けて、なるべく簡単な言葉で
アプリの構造から作り方までをざっくり今の知識で簡単に説明してみます。
ムラはありますが、アプリ作りやITに関する勉強を始めるときに、
自分がこういうことを最初に知ってたかったなということを書いてます。

 

今回は「初心者向け、アプリ作りの基礎知識①」ということで、
アプリって何?プログラミングって何?ということを書いています。

会話っぽく進めてみます。

―アプリって何?

パソコンやスマートフォンのような機械の中で動く、
ツールやソフトのことです。メモ帳やラインやyoutubeなどもアプリです。
機械の中にソフトをダウンロード・インストールすることで
そのアプリを使えるようになります。

ーどうやってできてるの?できあがるの?

知らない誰かが頑張って作った結果、できます。
(大抵のアプリは情熱と努力と涙と根性でできてるのだろうと思います。
頑張れば、一人でも作ることができます。
→凡人でも頑張れば作れる!!という認識を持ちましょう。)

―よくわからない精神論はいいんだけど、もう少し具体的には?

プログラミング言語というものを使ってプログラミングをします。

―プログラミングって何?

プログラミングは、パソコンに向かってなにやら文字を打ち込むことです。
というと語弊がありますが、
少なくとも外からプログラミングをしている人を見るとそのように見えます。

 

―プログラミングでは具体的には何をしているの?

人間が読むことが可能な「コンピュータへの指示書」を書いています。
例えばこんな感じ:

  1. アプリを起動したら「ようこそ」と画面に文字を表示してください。
  2. 「ようこそ」と文字を表示したら、20秒何もしないで待機してください。
  3. 20秒待機し終わったら、画面の「ようこそ」の文字を消してください。
  4. 「ようこそ」の文字を消したら、
    あらかじめ用意しておいた絵を画面に表示してください。
  5. 絵を表示するのとほぼ同時に、
    あらかじめ用意しておいた音楽を流してください。

この指示書のことを、「ソースコード」とか「コード」とか言います。
また、この指示書に使う言葉として、
プログラミング言語」というものがあります。

プログラミング言語

そう。
まず、言語といいますが、「日本語」、「英語」、「中国語」のような
人が日常的に使うようなものをイメージするのはやめましょう。
読み書きができるだけの指示書作成ツールだと思った方が良いです。

コンピュータへの指示・命令に簡潔な名前付けをしたり、
人間が指示・命令がしやすいような仕組みを組み込んだものです。
例えば、「文字を表示してください」という指示には
「print」という名前が付いてたりします。
また、100回連続でprintという動作を行ってください。
という命令をしたい場合には、100回「print」と書かなくて済むような
ループという仕組みが備わっていたりします。
他にもいろいろな仕組みがあります。
多くのプログラミング言語では、英単語が多く使われています。

プログラミング言語はたくさんあるの?

たくさんあります。
プログラミング言語」=「指示書作成ツール」も、人が頑張って作ったものです。
色々な人が、「書きやすい」「読みやすい」「後で変更しやすい」
「コンピュータの処理が速い」など、特徴や機能を色々考えて作ってます。
また、「iphoneアプリ作成に特化」、「androidアプリ作成に特化」など、
何らかの用途や専門性に特化したプログラミング言語もあります。

―でも、アプリを使っていて「コンピュータへの指示書」なんて見たことがないけど、それを見ることはできるの?

実は、多くのプログラミング言語では見ることができません。
「コンピュータへの指示書」は、
実はそのままではコンピュータは理解不可能なのです。
どちらかというと人間がコンピュータに指示を書きやすいように
作られたのがプログラミング言語です。

―???!プログラミング言語をコンピュータは理解できないの?

その通りです。「プログラミング言語で書かれたコンピュータへの指示書」は
そのままでは理解不能なのですが、これをもとに
また別のツールを使って、コンピュータが理解可能なように
変換してあげることでソフトウェア、アプリが出来上がるのです。
この変換のことを「コンパイル」と言います。
なので、人が直接書いた「コンピュータへの指示書」を
そのまま見ることはできないのです。

―最初からコンピュータが理解可能なように指示書を書けばよいのに。

コンピュータが理解できる指示書というのは、
人間には読みづらく、すごく理解しにくいのです。
だから、まずは人間に理解しやすい指示書を書いて、
それを変換ツールを使って変換するというやり方が主流です。
変換前の指示書のことを「ソースコード」と言いますが、
「ソース」には「元」とか「源泉」といった意味があります。
ちなみに、変換前の指示書を見ることができるプログラミング言語もあります。
例えばホームページで使われている「htmlやjavascript」というのは、
ソースコードを直接見ることが可能です。やり方は調べてみてください。

―そうなんだ。そのうちいつかきっと調べてみるよ。(続く)

個人でandroidアプリを作って公開した話 第2話「自己紹介とアプリ作りを通して大切だと思ったこと」

このページでは、自作アプリ
「Fun Topics ☆会話ネタ・話題提供アプリ☆」を作った人(私)の紹介と、
アプリ作りを通じて自分が大切だなと思ったことを書きます。

 

どんな人がどれくらいの労力・コスト・技術で作ったの?

  • どんなひと:
    • 院卒新卒5年目(アラサー)のSE。
      普段は主にRやPythonでデータ分析的なことをしてます。
    • Web系・アプリ開発未経験。
      このアプリ作りを始めるために、
      ドットインストールでhtmlとcssjavascriptのお勉強をするところから
      始めました。
    • がっつり開発案件を経験したこともないです。
    • もともとは文系(経済系)です。
      プログラミングをきちんと学び始めたのは社会人になってから。
    • (基本休日暇で孤独なので友達が欲しい。。。と思ってます。)
  • どれくらいの労力で :
    • 土日と平日の業後使って3か月ぐらい。(2019/1月中旬~2019/4月初旬)
      コンテンツ自体と多言語化対応に半分ぐらいの労力を使った。
  • コスト :
    • 25ドル (androidアプリをgoogle playに公開するのに必要。)
    • 通信代
    • コーヒー代(家ではやる気の問題があり開発できないので
      近くのカフェで作業。1日300円だと考えると結構かかった。。。)
    • (本を買ったり勉強会・セミナーに参加するとかは一切してないです。)
  • 技術:
    • クライアントサイドで完結するアプリ。
      サーバとの通信は(広告とか以外)ない。
    • DBも使っていない。データはCSV, JSONファイルとのやり取りだけ。 
    • cordova + jquery mobileで構築。
    • admobを入れたついでにおまけ程度にfirebaseと連携。

個人でアプリを作るうえでの自分の考え方とか、大切だと思ったこと

英語は重要。

 ITで技術的にいろいろ知りたいと思ったら、
まず英語を勉強するのが大切だと思います。
公式リファレンスはたいてい英語なので、
全然読めないとつらいと思いました。
また、外国の頭良い人がyoutubeなどで
無料でツールの解説をしたりしてくれています。
情報が日本語だけだとそれだけでかなり制限されると思いました。
何について書いてあるかは想像できることが多いので、
苦手意識をなくすことが重要かなと思います。  

とにかく形にすることを目指す。

自分ができることを使ってとにかく形にするのが大切。
途中まで作って技術的に難しくてあきらめるとか、
本を読んで理解して、頭の中でロジック作って満足とか、
人のアプリをみて自分ならもっとうまくできると思うだけとか、
そういうことはやめたい、楽しくない。と思って作りました。
とにかく最低限のもので良いから、手を動かして、形にして、
製品として出すというところにこだわりました。
(例えば今回「DBやサーバ使えばもっと色々できるかも」、
「もっとうまいコードの書き方あるかも」とか思ったけど、
自分のレベルに合わせて最低限の機能・書き方にしました。)


全体を見渡したうえでの判断は無理だから、
とにかくやってみるのが良い 。

基本的にITのことは知らないことや選択肢がたくさんあって、
全部を学ぼうと思ったらそれだけで一生が終わりそうだし、
読んで学ぶのと実際にやってみるのは全く別。
なので、少し調べて、「できるかな」って気持ちになったら
あとは実践して、必要になったらそのたびに学ぶぐらいが
自分には良いかなと思いました。
やりたいことでググれば大抵は逆引きで先人たちの
サイト・記事に引っかかるので、非常に参考にしました。

人に見てもらって意見をもらう。独りよがりにならないこと。

一人だけで開発してると、「これくらいわかるだろ?」とか
「これ面白いだろ?」とか、勝手に思い込んで開発を進めてしまいがち。
家族でも友達でも、公開前に信頼できる人に見てもらって意見をもらえると
気づきがあって良いし、何より人を巻き込んでいる感があって楽しいです。
特にITにあまり興味ない人の意見の方が役に立つと思いました。

 

以上です。
次回から、「アプリ作り興味あるなぁ」って思っている
初心者の方(過去の自分)に向けて、
アプリ作りってこういう感じだよ!というのを紹介していきたいと思います。
(ちょっと空くかもしれません)

個人でandroidアプリを作って公開した話 第1話「アプリの宣伝」

アプリを作ってみました!このページではアプリの宣伝をします。

 

 

どんなアプリを作ったのか:

「Fun Topics ☆会話ネタ・話題提供アプリ☆」

 ※英語っぽいですがクリックすると日本語のページに飛びます。

play.google.com

会話ネタに困ったときに会話ネタをランダムで出してくれるアプリです。
某すべらない話みたいなのを、いろんなジャンルでできたら面白いのでは?と思ったので作成しました。
カフェでの会話や飲み会、パーティ、合コン、デート、修学旅行なんかで使ってくれたらうれしいです。

 

どんな人に使ってほしい?:

会話が下手で話題が見つからない、話題がマンネリ化してきた、
誰かのもっと違う一面を見てみたい、もっと仲良くなりたい人がいる

っていう人にピッタリだと思います。

使い方:

  1. 誰かに「暇だしおしゃべりしない?」と言います。
  2. おもむろに携帯を取り出し、「こんなアプリがあるからやろうよ」と言います。
  3. 一緒に画面を見ながら、自分と遊ぶ人の名前を入力します。
  4. スタートボタンとストップボタンを押してランダムに話題を決定します。
  5. 盛り上がりそうだったらおしゃべりしましょう!ゲームっぽくやると良いです。

工夫したこと:

  • シンプルでわかりやすい画面!
  • ジャンルごとの話題でおしゃべりできる!
  • 5か国語対応!(日本語、英語、中国語、フランス語、スペイン語)

良かったら、ぜひ使ってみてください!
ご意見等も頂けると幸いです。よろしくお願いします。

個人でandroidアプリを作って公開した話 第0話「はじめに」

アプリを作ってみました!

このブログでこれからやりたいことは以下です!

  • アプリの宣伝をしたい(せっかく作ったので)。
  • アプリを作るうえでの自分の考え方を書いてみたい。
  • 初心者だった自分に向けて、アプリの開発手順を簡単に説明したい。
  • 個人的にハマったこと・学んだことを共有したい。

主に、アプリを作ったことはないけど興味がある人・初心者向けの記事を書きます。
誰かの背中を押すきっかけになれば良いなと思います。
あとはcordovaやjquery mobile、androidアプリ開発
同じようなことでハマってる人には役立つかもしれません。
詳しい人は生暖かく見守ってください。
明らかな間違いがあればご指摘いただけると幸いです。
(1つ作っただけで偉そうにするのは微妙なのですが、
 個人のブログで自由にやりたいだけなので許してください。)

 

個人的には、他のアプリを作るモチベーションにしたいです。
また、ゆくゆくは他のジャンルや、普通の日記をつけたり
していければ良いと思っています。

 

よろしくお願いします。

 

※予告なく休眠した場合はお察しください。