カテゴリー: Android Studio

最近、適当にやって、色々やらかしたミスや雑多な作業の記録(ノ∀`)

各項目、がっつりと掘れば、エントリ化の意義も出てこなくもないが、そこまで興味がなかったり、面倒くさいので、適当な羅列と雑記で済ます(ノ∀`)

そのまま忘却の彼方に追いやるのも悪くはないが、雑多なことと軽んじて記録しておかないと後で苦労することが多いのでw


  • セマンティックの観点からブログ内のタグの書き換えをしようと思う( ゜σ・゚)ホジホジ 意味はよくわかっていない。
     
    => "Search Regex"プラグインで<hr/>とか<br/>の最後のスラッシュを取り除いたり、<strong>を<b>に書き換えた。
  • php7.2だと古いとかどうとか言うメッセージが出ていたので、適当にPHPの新しいのを入れようとする( ゜σ・゚)ホジホジ
     
    => なんか知らんけどPHP8.0が入る。
  • なんかよくわからないが、WordPressがエラーで表示されなくなる…(ヽ'ω`)
     
    => "WP Multibyte"プラグインでエラーが起きてるみたいだが、以前の方法ではエラーが解決しない。 よくわからないので取り敢えず"WP Multibyte"プラグインを削除して、何も見なかったことにする。
  • 何も考えなしにGCP上にUbuntuを18.04 LTSから20.04 LTSにアップグレードをしてしまう( ゜σ・゚)ホジホジ
     
    => 気のせいか、なんかサーバのレスポンスが悪くなった気がする…(ノ∀`)
    お金がなくて最低スペックで運用してるのがいけないんだけどもw
  • 久しくバックアップを取っていなかったので、"BackWPup"プラグインで適当にバックアップを取ろうとする( ゜σ・゚)ホジホジ
     
    => プラグインがフリーズしてしまい、致し方なく、GCPでリブートする。
  • リブート後、復旧したかに見えたがアクセスに著しく時間がかかるようになり、ほとんど実用に耐えなくなる…(ヽ'ω`)

    サーバというよりもネットワークに問題が発生しているような感じだった。
     
    => 一応、文字データのバックアップは取ってあったものの、「もう、このブログは閉じて、Googleサイトとかで何とかしようかな…(´・ω・`)」と言う気になってくる。駄目元でリブートではなく、インスタンスを停止して、ちょっと経ってから起動し直す。
     
    => よくわからないが復活キタ━━ヽ( ゚∀゚)ノヽ(゚∀゚ )ノ━━ !!!!!
     
    => 尚もバックアップを取ろうとしてまたフリーズして同じ手順を繰り返したりする(ノ∀`)

    最終的に"BackWPup"プラグインを削除した後に、何故か上手く行ったバックアップが残っていたみたいだったのでダウンロードする。念の為、画像ファイル等も手動でダウンロードする。

  • ちょっと前に古いArrowsタブレットをセットアップし直したが、ユーザー名もパスワードも秘密の質問も忘れてしまい、お手上げになる ∩( ・ω・)∩ バンジャーイ
     
    => しょうがないので20H2のイメージでリカバリしようとするも上手く行かず…_| ̄|○
     
    => 古いタブレットPCだと8GB以下のUSBメモリでないとリカバリ出来ない場合があるとかいう情報を見て絶望するガ━━(゚Д゚;)━━━ン!! うちには16GB以上のUSBメモリしかなかった…
     
    => 8GBのUSBメモリは安いけれども、無駄金は出せない状況で21H1がリリースが近いということで取り敢えず放置する。
     
    => ようやく21H1がリリースされたので、駄目元で16GBのUSBメモリにイメージをダウンロードしようとする。
     
    => その段になって、ようやく持っているArrowsタブレットが32bit CPUであることを思い出す(ノ∀`)

    32bit/64bit両用でセットアップ用USBメモリを作成して、クリーンインストールを無事に終わらせた。本当はメインPCもクリーンインストールをそろそろしたいけれども…

  • そう言えばなんでWordpressのクラシックエディタって、bボタンを押すと<strong>タグが挿入されるんじゃろうかと悩む(´・ω・`)
     
    => 自分で変更したのかなと思ったのだが、何処で変更したのかが思い出せない……デフォルトでもそうじゃなくてもいいから、とにかくボタンをカスタマイズしたくなる。

    => プラグインもあったが、取り敢えずfunction.phpに直接入れる方法でカスタマイズした。スタイルやクラスを最初から指定したタグや、一連のタグをそのままボタン登録出来て便利だな、これ(・∀・)
    【WordPress】投稿する時に便利!h2,h3,br,p等の基本タグをボタン1つで挿入できるようにしよう


Linkedinラーニングの「Androidアプリ開発基本講座:Kotlinで初めてのアプリを作る」の動画を観る。

うーん(´・ω・`)
まあ以下にメモ書きの羅列をベースに、感想的なものを残す。


AndroidXってJetpackのことだったのか Σ(゚∀゚;)
つーか元々のサポートライブラリのことか Σ(゚∀゚;) ← 余りにもAndroidから離れていて隔世の感が酷いw

フォントサイズの設定で、うちの環境では34spしか出て来ない。なぜ36spがないんだろうか?


jcenter()絡みでエラーが出た。
build.gradleのrepositoriesから除去すればいいんか。
jcenter, bintray 廃止で自分のAndroidアプリに対応したことのメモ

インテントでアクティビティにアクションを送る
ぼーっと観ていたら、いきなり変更後のコードになってる?
もしかして動画を一本くらい見逃しちゃったのか、俺(´・ω・`)?

取り敢えずダウンロードしておいた完成プロジェクトからactivity_main.xml,activity_detail.xml,string.xmlの内容をコピペして、
drawable02から04のwebpファイルをdrawableフォルダにコピペした。

MainActivity.ktでのimageView絡みのコードを削除。

monster01で補完が出ない…?

"kotlinx.android.synthetic.main.activity_main.*"でsyntheticが解決出来ないみたい(´・ω・`)

ぐぐったら、

Android Studio 4.1を用いているなら、build.gradle(Module:<プロジェクト名>.app)に記述の追加が必要です。
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
kotlinxが未解決の参照になってしまう

とあった。

ここに至る手順で俺氏が飛ばしてしまったのか、バージョン4.21なのが原因なのか不明だが、取り敢えず追加してみた。

って、pluginsに一番下の"id 'kotlin-android-extensions'"を追加すればいいのか。

でもエラーのまんま…(´・ω・`)

ああ、単純にビルドすれば解決されるわけじゃないのか。
Gradle Syncがどうとか…

右上辺りにある象さんがパオーンしてるアイコンをクリックしたら解決したわ(・∀・)
Android StudioでGradle syncボタンが見つからない


いきなりメモ帳かなんかから文字列を共有するのは観ている人間にはわからんだろw

メモ帳系はインストールしてなかったので、入れてたGoogle Keepに"Monster03"とか入力して、共有で自分の作ってるアプリを選択すると無事DetailActivityに文字列で指定したモンスターが表示された。

動画系で技術的な部分の説明を丁寧にしない/できないのは百歩譲って良いかもしれないが、何の脈絡もなく、手順をかっ飛ばしちゃうのは酷すぎだろw

どのくらいのレベルの人に対して、どのくらいのレベルの内容を教えたいのかがわからんw

例えば俺氏みたいにJavaでAndroidプラグラミングの触りくらいまでをやっている人ならば何とか対応できるけど、そうでない人には( ゚Д゚)ポカーンだし、対応できる人ならば、この講座の内容は余りにも初歩的で物足りないというか時間の無駄に近いw

どうも元は海外の人の作ったものを翻訳というか流用しているみたいだが、元もこのレベルの内容なんだろうか…(ヽ'ω`) 


色々言いたいことはあるが…うーんw
取り敢えず環境構築のところでMacとWinの両方の説明してるのは良心的であったとは思う。

ただ、はっきりと言えることは、この動画ではkotlinの説明らしい説明は大してしてないw

確かにkotlinで初めてのアプリを作ってると言えば作ってると言えなくもないが、動画の大半はAndroid Studioの環境構築や説明であり、作成したものはアプリと言えるレベルのものではないw

何はともあれLinkedinラーニングは購読キャンセルした。
キャンセルを忘れて課金されても困るし(ノ∀`)オカネナイ
Linkedinのアカウントも特に使い道はないので、そのうち消してしまうかもしれない…


最近動画の講座を観始めて思ったが、巣ごもりDXステップ講座情報ナビでもそうだったが、環境構築の部分と言語や機械学習の説明の部分が分離されていないのはどうかなと思った。

プログラミング学習とは明確に分離された、最低でも2大プラットフォームをカバーした環境構築・使用法講座を新設し適宜更新し続けるべきだと思う。出来れば各講座共通のものとして。

それをしないと、各企業の講座で同じような環境構築の内容を入れて全体が長くなりすぎてしまったり、長さは変わらないが本編である内容の説明が疎かになったり、或いは中途半端な環境構築の内容(Win/Macの片方しか説明しない、内容が古い、使用するツールが異なる・存在しなくなっている等)が配信されたりする現状が続いてしまい、それらはあらゆる学習者を疲弊損耗させる障壁として聳え続けることになるだろう(´・ω・`)


取り敢えず動画系はひとまずやめて、ごっぐるのhttps://developer.android.com/codelabs/のkotlinのやつをやり始めた。初心者向けコースから始めたので、今のところ、基本的な内容でアレである。

でもなんか知らんけど、無茶苦茶ログインに時間がかかって中々先に進めない(´・ω・`)
うちのネットワークが遅いからなのかな?

テストの解答を送信してもエラーになる。
なんじゃこりゃ(´・ω・`)

と思ったらAM8:00近くになったら急につながるようになった。
メンテナンスとかしてたのか、あるいは他の国のユーザー達のせいで重かったのか…?
でもやっぱりまた重たくなったような…

まあどうでもいいや(ノ∀`)

うにのトゲは刺さると痛い(´・ω・`)-40 : Javaプラグインの利用 (Java側)

きっと他のことをやって全てを忘れてしまう未来の俺氏へのUnityで自作Javaプラグインを利用する時のJava側手順。

何故か他の人のコードを実行しようとすると上手く行かなかったので、Unity側から文字列を渡して、それにJava側が文字列を付加して返すという簡単なものにした(´・ω・`)

面倒だったのでAndroid10決め打ちにした。
日本語化が上手く行ってないのか、メニュー等がなんか中途半端な状態になっているw

参考サイトというか目を通したり試したエントリはたくさんあるのだが、ブックマークに残っていたのは下の3つくらいだった(ノ∀`)マタヤラカシタ
Unityのプラグインを作るAndroid/iOS
[Android]Unityへ組み込むAndroidライブラリビルド手順解説
突然仕事でUnity向けのSDKやPluginを作ることになった人向け資料<Android実践編>


他の人のエントリを色々読み、理解せずにやっていたから気が付かなかったが、手順8~11のUnityのClass.jarのコピーにまつわる作業は、Java側でUnityPlayerActivity等をいじったりしない場合は必要ない気がする…( ・´ω・`)トバシテイイ


  1. Android Studioを起動し、[Create New Project]をクリック。
  2. [No Activity]を選択し<次へ>をクリック。
    ※目的はモジュール作成の為、実際にはActivityは何を選んでも問題はない筈。

  3. 任意のプロジェクト名を指定し、[Minimum SDK]で"API 29 Android 10.0"を選択し、<終了>をクリック。
    ※うちの実機はAndroid10なのでこの選択をしているが、必ずしも10でなければならないわけではない。但し、他のバージョンでは動作確認をしていない。
  4. プロジェクトの作成が終わったら、[ファイル]-[New]-[New Module]の順に選択。
  5. [Android Library]を選択し、<次へ>をクリック。
  6. [Module Name]に任意の名前を指定、[Minimum SDK]で"API 29 Android 10.0"を選択し、<終了>をクリック。
    ※この例では[Module Name]を"UniAndLib"に指定。
  7. <プロジェクト>プルダウンをクリックし、"プロジェクト"をクリック。
  8. 使用する予定のバージョンのUnityのフォルダで"Class.jar"をコピー。
    この例ではUnity Hubを使用し、バージョン 2020.2.4f1 を使用。かつmonoではなくil2cppでビルド。
    "C:\Program Files\Unity\Hub\Editor\2020.2.4f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes"

    カスタムインストール時は当然のことながら、Class.jarの在り処は変わってくる。

  9. Android Studioのプロジェクトの新しく追加したモジュール配下のlibsフォルダに貼り付け。
  10. ダイアログが表示されたら、<リファクタリング>をクリック。
  11. 新しく追加したモジュール配下のbuild.gradleをダブルクリック。
  12. build.gradleが表示されたら、dependenciesの箇所に
    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
    compile 'androidx.appcompat:appcompat:1.1.0'
    

    を追加。

    これを追加しておかないと、"Execution failed for task ':launcher:checkDebugDuplicateClasses'"とかいうエラーが出る筈。Android Studioで作ったライブラリ側とUnity側にUnityのClass.jarが存在しちゃって、その辺がいけないらしい…

    ※compileのところに打ち消し線が出るのでDeprecatedかなにかなのかもしれないがキニシナイ( ゚ 3 ゚)
    もしかしたらそもそも必要ないのかな? よくよく見ると下の行で"appcompat:1.2.0"をimplementationしてるから要らないか?

  13. 新しく追加したモジュール配下の[src]-[main]--[パッケージ名]のフォルダを右クリックし、コンテキストメニューが表示されたら、[新規]-[クラス]の順に選択。

  14. 「New Java Class」ダイアログが表示されたら、クラス名を指定し、"Class"をクリック。
    ※この例ではクラス名に"ReturnString"を指定。
  15. 作成したクラスがエディタに表示されたら、以下の内容を入力して保存。
    package com.example.uniandlib;
    
    public class ReturnString {
        public String returnResult(String fromUnity) {
            return "Via Java Lib:\n" + fromUnity;
        }
    }
    

    (パッケージ名やクラス名を任意の値を指定している場合は適宜書き換える。)

  16. メニューで[ビルド]-[Rebuild Project]の順に選択。
  17. ビルドが終了するまで待つ。
    (ウィンドウ下のステータスバーで以下のようなの表示がされている間はビルド実行中。)

以上がUnityで使用できるJavaプラグインの作成方法。

画像を入れたら長くなりすぎたので、Unity側は次のエントリで…(ヽ'ω`)


CommandInvokationFailure: Gradle build failed.

このエラーが出た場合は、一回エクスポートして、Android Studio側でインポートしてGradleをアップグレードしないといけないとかどうとか。

参考:
Gradle build failedが出る(Unity2019から)

うにのトゲは刺さると痛い(´・ω・`)-41 : Java プラグインの利用 (Unity側)

前回のエントリに続き、Unity側の手順。
尚、今回の設定値等は前回の設定値と対応している。


  1. Unity Hubを起動し、任意のバージョンのUnityでプロジェクトを作成する。
    ※この例では"2020.2.4f1"
  2. [2D]を選択、任意のプロジェクト名を指定し、<作成>をクリック。
    ※この例では"UniAndLink"。ちなみになんでネーミングにブレがあるかというと、それほど深く考えて作らなかったから(ノ∀`)
  3. Unityが起動したら、[ファイル]-[ビルド設定]の順に選択。
  4. 「Build Setting」タブが表示されたら、[App Bundleをビルド]、[開発ビルド]、[スクリプトデバッグ]を有効にし、 をクリック。

    ※ここは実機デバッグをしない場合は必要ないかも(ノ∀`) [App Bundleをビルド]はそもそもこんな実験プログラムでは必要ないか。

  5. プラットフォームの切り替え処理が終了したら、<プレイヤー設定>をクリック。
  6. 「Project Settings」タブが表示されたら、[企業名]に任意の値を指定。

    ※今もDefaultCompanyだとビルド出来ないのかどうか不明(ノ∀`) もしかしたら変えなくてもいいかも。

  7. [最低 API レベル]を"Android 10.0(API level 29)"、[スクリプティングバックエンド]を"IL2CPP"、[API 互換性レベル]を".NET 4.x"にそれれぞれ設定し、[ARM64]を有効にする。
  8. 「ゲーム」タブに切り替え、画面アスペクト比を"1920x1080 Portrait"を選択。
    ※尚、この辺の手順は実機デバッグでLogを確認する場合には必須ではない(ノ∀`)
  9. 「ヒエラルキー」タブ上で右クリックし、コンテキストメニューが表示されたら、[UI]-[テキスト]を選択。
    ※この例では作成されたTextコンポーネントを持つゲームオブジェクト名を"result"に指定。
  10. 「ヒエラルキー」タブ上で右クリックし、コンテキストメニューが表示されたら、[UI]-[ボタン]を選択。
  11. 「ヒエラルキー」タブ上で"Canvas"を選択し、インスペクターで、
    Canvasコンポーネントの[レンダーモード]で"スクリーンスペース - カメラ"を選択し、[レンダーカメラ]に「ヒエラルキー」タブ上の"Main Camera"をドラッグ&ドロップ。

    Canvas Scalerコンポーネントの[UI スケールモード]を"画面サイズに拡大"、[参照解像度]の[X]と[Y]にそれぞれ"1080"と"1920"を指定。[マッチ]の値を"1"に。

  12. 「プロジェクト」タブ上でAssetsフォルダ以下にPluginsフォルダ、Pluginsフォルダ内にAndroidフォルダを作成し、そこにAndroid Studioでビルドしたプラグイン(ライブラリ)をドラッグ&ドロップ。

  13. 「プロジェクト」タブ上でAssetsフォルダ以下にScriptsフォルダを作成し、Scriptsフォルダ内に"C#スクリプト"を任意の名前で作成。
    ※この例では"CallJavaLib"

  14. 前項で作成したスクリプトファイルをダブルクリックし、Visual Studioが起動したら、以下の内容を入力し、保存。
    ※余り深く考えずに人のコードを切った貼ったしてて気が付かなかったが、これjavalibがstaticである必要もないし、PushButton()メソッドのローカル変数で良かったな(ノ∀`)

    (パッケージ名やクラス名を任意の値を指定している場合は適宜書き換える。特にAndroidJavaObjectをNewする際のパッケージ名を間違えないこと。)

    using UnityEngine;
    using System.Collections.Generic;
    using UnityEngine.UI;
    
    public class CallJavaLib: MonoBehaviour
    {
        static AndroidJavaObject javalib = null;
    
        public static void PushButton()
        {
            Debug.Log("Pushed");
            javalib = new AndroidJavaObject("com.example.uniandlib.ReturnString");
    #if UNITY_ANDROID && !UNITY_EDITOR
            GameObject.Find("result").GetComponent<Text>().text = javalib.Call<string>("returnResult","From Unity");
    #endif
        }
    }
    

  15. Textコンポーネントを持つゲームオブジェクトとButtonコンポーネントを持つゲームオブジェクトのサイズの位置を任意で変更する。
    ※この辺は正直適当で良い(ノ∀`)
  16. Textコンポーネントの[フォントサイズ]を"50"、[色]を黄色に指定する。
  17. 作成したスクリプトをButtonコンポーネントを持つゲームオブジェクトにドラッグ&ドロップ。
  18. ドラッグ&ドロップしたスクリプトが追加されていることを確認し、Buttonコンポーネントの[クリック時]の<+>をクリック。
  19. Buttonコンポーネントの[クリック時]のオブジェクト欄に「ヒエラルキー」タブ上のButtonをドラッグ&ドロップ。

  20. Buttonコンポーネントの[クリック時]の関数欄から[追加したスクリプトファイル]-[ボタン押下時に実行させたいメソッド]の順で選択。
    ※この例では"CallJavaLib"の"PushButton()"。
  21. 実機に接続し、「Build Settings」タブの<ビルドして実行>をクリック。
  22. aabの名前を指定して<保存>をクリック。
  23. 問題がなければ、実機上で以下のように表示され、ボタンをクリックすると、Javaライブラリ上で指定した文字列が追加されTextコンポーネント上で表示される。

内容的に大したことをしていないが、取り敢えず、Javaプラグインの初歩の使い方は理解出来たので良しとしよう(・∀・)

久しぶりに手順みたいなのを作ったから、色々と瑕疵がある(ノ∀`)