スマートフォン・ジン | Smartphone-Zine

引っ越し先→ https://smartphone-zine.com/

特別セール開催中!限定クーポンでお得にAndroidアプリ開発を学ぶ

「Kotlin知識ゼロOK!Composeで始めるプロのAndroid開発者になるためのマスターコース」は、新しくリリースされたばかりのコースで、Androidアプリ開発に興味を持っている方に最適です。このコースでは、Jetpack Composeを使ってAndroidアプリを作成する方法を学ぶことができます。

以下は、コースの概要です:

  1. Kotlinプログラミングの基本: まずはKotlinの基本からスタートしましょう。シンプルなKotlinプログラムを記述して実行する方法を学びます

  2. Composeを用いたAndroidアプリ開発の基礎: Jetpack Composeを使って簡単なAndroidアプリを作成する方法を学びます

  3. サンプルアプリを作りながらJetpack Composeを学ぶ: じゃんけんアプリ、タイマーアプリ、インスタ風アプリ、カメラアプリなどを作りながら、Jetpack ComposeでのAndroidアプリ開発方法を実践的に学びます

クーポンは以下のサイトで配布中です!

smartphone-zine.com

 

Kotlin知識ゼロOK!Composeで始めるプロのAndroid開発者になるためのマスターコース | Udemy

Scrcpy: Android 開発で便利なツール

Android開発時に重宝するツールの一つにscrcpyがあります。Android端末の画面をパソコン上にミラーしてパソコンから操作できるソフトウェアです。WindowsLinuxMacに対応しています。

github.com

Macの場合、

brew install scrcpy 

でインストールできます。私の環境だと

Error: gcc: the bottle needs the Apple Command Line Tools to be installed. You can install them, if desired, with: xcode-select --install

というエラーになってしましました。素直に

 xcode-select --install

を実行してから再びインストール。ダウンロードとインストールには数分かかりましたが今度はうまくいきました。

実行する前に、adbへのパスを通します。

export PATH=$PATH:/Users/$USER/Library/Android/sdk/platform-tools

実行します。

scrcpy

同様の機能がAndroid Studioに搭載されている

さて、ここまでインストールして気がついたのですが、実はAndroid Studioに同様の機能が搭載されています。

Running Devicesを開き、+ボタンからConnected Devicesより端末を選択するだけ。

これで、ミラーリングしてデバッグすることが可能です。

以上、とっても遠回りしてしまった実機ミラーリングでした。

こちらの記事もどうぞ

smartphone-zine.hatenablog.com

android studio assets folderは何が違うの?resとの違いは?

android studio assets folderは何が違うの?resとの違いは?

なんとなく、resフォルダは画像とテキストを置く場所、という理解で勧めていると、ふとassetsフォルダとの違いってなんだったっけ、となってしまいます。せっかくなので改めて整理します。

assets フォルダと res フォルダは、Android Studio プロジェクト内で異なる役割を果たします。

res フォルダ (リソースフォルダ):

  • res フォルダは、アプリのリソースを格納する場所です。
    • 画像、レイアウト、文字列、アイコン、色などのリソースはここに配置されます。
    • リソースID が自動的に生成され、アプリ内でこれらのリソースにアクセスできます。
      • 例えば、R.drawable.icon のようにリソースを参照できます。

assets フォルダ:

  • assets フォルダは、未加工のファイルを格納する場所です。
    • テキストファイル、音声ファイル、ビデオファイルなどがここに配置されます。
    • リソースIDは付与されません。代わりに AssetManager を使用してファイルにアクセスします。

つまり、アプリで画一的に使用するようなリソースはルールに基づいてresに入れておけば自動的にアプリで使えるようになるという点が便利である。resが対応していないデータについてはassetsにおいておいて、自身のプログラムで利用する。という感じでしょうか。

memo

ansibleでLinuxコマンドの「patch」をインストールするスクリプトを書いてください。redhad系、Debian系両方対応するようにお願いします。

  • name: Install patch command hosts: all become: true tasks:
      - name: Install patch on Red Hat based systems
          yum:
              name: patch
              state: present
          when: ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
    
      - name: Install patch on Debian based systems
          apt:
              name: patch
              state: present
          when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
    
# ログイン
az acr login --name <acr-name>

# レポジトリの一覧を取得
repositories=$(az acr repository list --name <acr-name> --output tsv)

# 各レポジトリのイメージのダイジェストを取得
for repo in $repositories
do
  echo "Repository: $repo"
  az acr repository show-manifests --name <acr-name> --repository $repo --query "[].digest" --output tsv
done
# Azureにログイン
az login

# ACR_NAMEにはあなたのACRの名前を設定してください
ACR_NAME="your_acr_name"

# リポジトリ一覧を取得
REPOSITORIES=$(az acr repository list --name $ACR_NAME --output tsv)

# 各リポジトリについて、イメージのタグとダイジェストを取得
for REPO in $REPOSITORIES
do
  echo "Repository: $REPO"
  TAGS=$(az acr repository show-tags --name $ACR_NAME --repository $REPO --output tsv)
  for TAG in $TAGS
  do
    DIGEST=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO --query "[?tags[? @ == '$TAG']].digest" --output tsv)
    echo "Tag: $TAG, Digest: $DIGEST"
  done
done
#!/bin/bash

# Azure ACR name
ACR_NAME="<your-acr-name>"

# Output file path
OUTPUT_FILE="acr_images.csv"

# Get all repository names
REPO_NAMES=$(az acr repository list --name $ACR_NAME --output tsv)

# Create the output file with headers
echo "Repository Name,Image Digest,Tag" > $OUTPUT_FILE

# Loop through each repository
for REPO_NAME in $REPO_NAMES; do
    # Get all image manifests for the repository
    MANIFESTS=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO_NAME --output tsv)

    # Loop through each image manifest
    while IFS=$'\t' read -r DIGEST TAG; do
        # Append the repository name, image digest, and tag to the output file
        echo "$REPO_NAME,$DIGEST,$TAG" >> $OUTPUT_FILE
    done <<< "$MANIFESTS"
done

echo "CSV file with repository names, image digests, and tags has been created: $OUTPUT_FILE"

#!/bin/bash

# Check if ACR name is provided as an argument
if [ $# -eq 0 ]; then
  echo "ACR name is required."
  exit 1
fi

# Set ACR name from the argument
ACR_NAME=$1

# Get the list of repositories in the ACR
REPOSITORIES=$(az acr repository list --name $ACR_NAME --output tsv)

# Create a CSV file to store the output
OUTPUT_FILE="acr_images.csv"
echo "Repository,Image Digest,Tags" > $OUTPUT_FILE

# Iterate over each repository
for REPO in $REPOSITORIES; do
  # Get the list of images and their digests
  IMAGES=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO --orderby time_desc --output tsv --query "[].{Digest: digest, Tags: tags[0]}")

  # Iterate over each image
  while IFS=$'\t' read -r DIGEST TAG; do
    # Append the repository, image digest, and tags to the CSV file
    echo "$REPO,$DIGEST,$TAG" >> $OUTPUT_FILE
  done <<< "$IMAGES"
done

echo "Output saved to $OUTPUT_FILE"

Android Studio GiraffeでRealmプラグインの設定エラーを解決する方法

最新バージョンのAndroid Studio GiraffeAndroid Studio Giraffe | 2022.3.1 Patch)を使用中にRealmを導入しようとしたところ、ビルドエラーに遭遇しました。以下はその問題と解決策についてのメモです。

エラーメッセージ

ビルド時に以下のエラーが発生し、ビルドが成功しません。

Build file '/Users/hiro/AndroidStudioProjects/MyApplication10/app/build.gradle' line: 6

An exception occurred applying plugin request [id: 'realm-android']
> Failed to apply plugin 'realm-android'.
   > API 'android.registerTransform' is removed.

背景

Android Studio Giraffeでは、Gradleというツールを使用してAndroidアプリケーションをビルドします。新しいAndroid Gradle Plugin(バージョン8以降)が導入され、その結果、以前のバージョンで使用されていた 'android.registerTransform' API が削除されました。この変更により、Realmプラグインが正常に動作しなくなりました。

解決策

以下の手順に従って、Realmプラグインの問題を解決できます。

  1. 以下の説明はGroovy DSLを採用しているプロジェクトが前提です。プロジェクトがGroovy DSLを採用していることを確認してください。Groovyを使用するには、プロジェクトを作成する際に "Build configuration language" で "Groovy DSL" を選択します。もしsettings.gradleの拡張子が.ktsである場合、Garoovyではありません。

  2. 次の手順を実行します。

    • settings.gradle(Project Settings)を開きます。
    • dependencyResolutionManagement内のrepositoriesに、jcenter()を追加します。
     dependencyResolutionManagement {
         repositories {
             google()
             mavenCentral()
             jcenter() // これを追加
         }
     }
    
  3. build.gradle(Project: プロジェクト名)を開き、以下の行を追加します。

     buildscript {
         dependencies {
             classpath "io.realm:realm-gradle-plugin:10.13.3-transformer-api"
         }
     }
    
  4. build.gradle(Module: app)を開き、以下の行を追加します。

     plugins {
         id 'kotlin-kapt'
         id 'realm-android'
     }
    
     dependencies {
         // 他の依存関係
         implementation 'io.realm:android-adapters:2.1.1'
     }
    

これらのステップに従うことで、Realmプラグインの設定エラーを解決し、ビルドが正常に通るはずです。

Hyper-V仮想マシンへのCPU割り当てを変更する

Hyper-V仮想マシンへのCPU割り当てを変更する方法

Windowsメニューより「Hyper-Vマネージャー」を起動する

設定を変更するため、仮想マシンを「シャットダウン」した状態にする

仮想マシンが実行中の場合、設定を開き手も仮想プロセッサの数は変更できない

仮想マシンの「設定...」を開き、「プロセッサ」の項目から使用プロセッサ数を変更する。

設定したら「OK」を押す。

仮想マシンを「起動」する。

【ドラレコ】メモリを読み取り専用にして完成とする。ラズパイをリードオンリー化する方法【ラズパイ】

Raspberry Pi Zero 2 Wをリードオンリー化する

電源が急に切れた場合など、まれにSDカードのデータが破損してラズパイが起動しなくなることがあります。Read Onlyでマウントしておくことで、安定運用ができそうです。

リードオンリー化

設定画面を開きます

sudo raspi-config

4 Performance Optionsを選択します

P3 Overlay File Systemを選択します

Overlay File System(リードオンリー化)を有効にする画面です。を選択します

Overlay File System(リードオンリー化)が有効になりました。を選択します。

ブートパーティーションのリードオンリーを有効にする画面です。を選択します

ブートパーティションの読み取り専用化が完了しました。を選択します。

再起動するか聞かれるのでを選択します

リードオンリー化の確認

overlayとして214M確保されています。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            178M     0  178M   0% /dev
tmpfs            43M  2.1M   41M   5% /run
overlay         214M  214M     0 100% /
tmpfs           214M     0  214M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
/dev/mmcblk0p1  255M   60M  196M  24% /boot
/dev/sda1       119G   38G   82G  32% /media/usb0
tmpfs            43M     0   43M   0% /run/user/1000

メモリが足りなくなり、ffmpegが動作しなくなったので残念ながら今回のシステムには向いていませんでした。