カテゴリーアーカイブ OS

asaba 著者:asaba

【android Java】初心者向け・Linearlayoutの使い方

今日は、androidstudioのレイアウトについて気づいたことを備忘録に残したいと思います。

今回はLinearlayoutの使い方をメインに綴ります。

お題の主役であるLinearLayoutは、ある部品を等しく一直線に並べたいと思ったときによく用いられます。Layoutの中でも最も使用頻度が高く汎用性のあるレイアウトといっていいでしょう。htmlでいうdivの役割と似ていますね。

使い方は、シンプルで一直線に並べたい部品を中に囲むだけ。下記のように書くだけです。

例えば、ボタン三つを横一列で中心に表示したい時は
android:orientation="horizontal"
android:layout_gravity="center"

と<Linearlayout内でプロパティを決めます。
Designタグを見て下記のようになっていれば成功です。

これだけならすごく簡単ですね。

複数の部品を決まった場所にそれぞれ配置したいとなってくるとRalativelayoutを使う必要がありますが、簡単なアプリを作ってみたいというかたはまずはLinearlayoutから触ってみてください。他にもTablelayoutやGridlayoutなど様々な特徴を持ったレイアウトがありますが、使う機会があったらまたやんわりと紹介していきたいと思います。

 

 

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

【android Java】document already exists at the specified project location

また新規プロジェクトを作る時のネタになります。

最近あるアプリを作りたくて新しくemptyのアクティビティを作った時のお話です。かなり初歩的なエラーを踏んでしまい、その戒めを込めて綴っていきます。

その時のエラー時の画像です。

黄色い三角マークで、document already exists at the specified project locationと表記されているエラー。これは新しくプロジェクトを作る時に、ディレクトリのフォルダ名を明記していないときに起こります。

後ろに/(スラッシュ)とフォルダ名(何でもいい)をつければ正常にプロジェクトが出来上がります。いじるところは赤く囲ってあるところだけ。

原因は、document直下でgradleやideaなどがまとまったフォルダにないと後にビルドするときに見つけることができずnot foundになってしまうためです。

新しいプロジェクトを作る時は、必ずひとまとめにできるようにディレクトリ作成時にフォルダを付け足してあげましょう。

 

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

【Windows10】拡張子が「.rar」のファイルを解凍するソフト「RAR Opener」

今日メールで受け取ったファイルが「.rar」というあまり見慣れない拡張子だったので、備忘録もかねてこのファイルの開き方についてです。

まず、rar拡張子について簡単にまとめ。
この「rar」は圧縮ファイル形式の一つで、Windowsでよく使われる「zip」よりも高い圧縮率をほこるとのこと。
圧縮・解凍が高難度であるため、海外では使われることもあるそうですが、日本ではまず使われていないようです。

 

さて、肝心のファイルの解凍方法ですが、私はこちらの「RAR Opener」というソフトを使用しました。
こちらは下記の Microsoft の公式サイトからインストールすることができます。

RAR Opener を入手 – Microsoft Store ja-JP
https://www.microsoft.com/ja-jp/p/rar-opener/9wzdncrdhktr

使い方はとても簡単で、まずソフトを起動すると、下記のようなウィンドウが表示されます。

4つボタンがありますが、主に使うのは上の2つ、「Open RAR」と「RAR → ZIP」くらいだと思います。

Open RAR:RARファイルを解凍する
RAR → ZIP:RARファイルをZIPファイルに変換する

私は今回はファイルの解凍を行いました。
「Open RAR」を押すと、エクスプローラが起動するので、解凍したいRARファイルを選択します。
あとは、解凍が終わるのを待つだけです。
が、ちょっと広告が紛らわしかったりするので、うっかりキャンセルを行わないようにご注意ください。

 

以上、RARファイルの開き方・解凍方法でした。
とりあえず、見慣れないファイル拡張子は調べれば確実に判明するので、遭遇したら調べるくせをつけましょう。

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

SystemctlでSoftEtherVPNをデーモン化する

SoftEtherVPNはたくさんの接続オプションを持っていて、無料のVPNサーバーソフトの中ではおそらく”最もつなげやすい”ソフトではないかなと思います。

そんなSoftEtherVPNですが、Linux版の場合はソースの状態で配布されており、各マシンにダウンロードしてからmakeでビルドする形になっています。
なのでmakeに必要なライブラリさえOS側で用意されていれば、ディストリビューションやアーキテクチャ関係なく使用することができるようになっています。

その関係か、パッケージにはデーモン化のスクリプトは含まれておらず、自力でデーモン化する必要があります。

といっても、作業自体は起動スクリプトを/etc/init.dに置いてchkconfigやsystemctlで有効化すだけです。
起動スクリプトはSoftEtherVPNの公式ドキュメントに記載されています。

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

ところが、今回Ubuntu 18.04のサーバーに組み込んだ所、うまく動作せず。
いろいろ調べたところ、SystemdのUnitファイルで動作させる方法があったのでこちらを試してみました。
(※管理者権限が必要です。)

Ubuntu上でSoftEther VPN Server構築 – Qiita

[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=vpnserverがインストールされているパス/vpnserver start
ExecStop=vpnserverがインストールされているパス/vpnserver stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

上記の内容でUnitファイルを作り、下記の場所に保存します。
/etc/systemd/system/vpnserver.service

保存したら次のコマンドを実行します。

systemctl daemon-reload

これで準備は完了いつも通りに起動します。

systemctl start vpnserver

これで起動したかと思います。
自動起動する場合は

systemctl enable vpnserver

も実行しておきます。

Systemdがいまいちわかりづらいのでinit.dを使っていましたが、これならsystemdネイティブでも使えそうです。
init.dスクリプトでうまく起動できない、という方はぜひ試してみてください。

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

【Android Studio】「Compilation failed to complete」エラーの対処法

今回は、Android Studioでアプリ開発時に発生した「Compilation failed to complete」というエラーの対処法です。
対処法といっても、今回のエラー文は「コンパイルが完了しなかった」という、何が原因なのかが全く分からないようなものだったので、具体的なエラー内容を表示させる方法です。

 

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

Android Studioでエラーログを詳細表示する – RE:ENGINES
https://re-engines.com/2017/05/17/android-studioでエラーログを詳細表示する/

詳細なエラー内容の表示方法ですが、まずAndroid Studioの設定を開きます。

で、サイドメニューの Build, Execution, Deployment > Compiler を選択します。
そしてウィンドウの中央辺りにある Command-line Options に「–info」や「–debug」などのオプションを指定します。

記事内で紹介したサイトでは「–debug」と入力していましたが、それ以外で参考にしたサイトでは「–info」と指定していました。
表示内容を見比べていないので分かりませんが、個人的には「–info」を使っています。

 

以上、Android Studioで詳細なエラー内容を表示する方法でした。
今回ご紹介した「Compilation failed to complete」のエラーのように、それ単体ではエラーの内容が分からない時などにご活用ください。

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

【android Java】Binary XML file line #8: You must supply a layout_width attribute.

android studioで新しくプロジェクトを作ってrayout.xmlを少しいじった後に試しにビルドをしてみたらいきなりエラーがでました。以下がLogcatで出たエラーです。

 

layout_widthと書いてあるので、一番上のschemeが書いてある下あたりでandroid:layout_width=”match_parent”が抜けていて横幅が不明になっているのだと思われます。一緒にheightの方もつけてあげれば無事動くと思います。

少し昔の参考書にありがちなのですが、layout_xml部分が意外と何も書かれていないことが多く、見逃してエラーを出してしまいがちです。一応gitにも出版元のコードが置いてありますが、ほとんど更新されていなく結局自分で手直しせざるを得ません。バージョン変更に伴いandroid studioやgradleの扱いも少し変わってきてるのでこれから勉強する方はできれば2018出版の参考書を購入することをお勧めします。

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

Ubuntu 16.04 でLivePatch を有効化してみた。

Ubuntu 18.04 でGUI操作が可能になったCaconical LivePatchですが、コマンドラインであればUbuntu 16.04でも適用が可能になっています。
結構手間がかかるかなーという印象だったのですが、やってみたところとても簡単でした。

コマンドラインでLivePatchを有効化するには、UbuntuOneで発行できる専用のトークンが必要になります。

まず、Canonical Livepatch Serviceサイトにアクセスして、トークンを取得します。

サイトにアクセスしたら、無料ユーザーの場合は”Ubuntu User”を選択し、”Get Your LivePatch token”をクリックします。

ログイン画面が出てくるので、自分のUbuntuOneアカウント情報を入力してログイン。
UbuntuOneアカウントを持っていない場合は
”I don’t have an Ubuntu One account”
からアカウントを作成できます。

LivePatchは1アカウントにつき、3台のマシンまで無料利用可能となっているため、注意してください。

LivePatchのページでログインすると、こんな表示が出てきます。

一つ目の欄にあるランダムな文字列がトークンになります。

まず、LivePatchパッケージをインストールします。
端末(Terminal)で次のコマンドを入力します。

sudo snap install canonical-livepatch

LivePatchパッケージのインストールが始まるので、暫く待ちます。
完了したら次のようにコマンドを入力します。

sudo canonical-livepatch enable 先程のトークン

これでLivePatchが有効になるはずです。
念のため、ちゃんと動作しているか確認します。

出力された情報の中に

running: true

と表示されていれば有効になっています。

Ubuntu 16.04でもLivePatchを使用したいという方は、是非参考にしてみてください。

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

Ubuntu 16.04 apt update で noappstreamcliエラーが出たときの対策

久々にubuntu 16.04をマシンにインストールしていたのですが、パッケージの最新版を取るため apt update コマンドを管理者権限で実行したところ下記のエラーが…

# sudo apt update
ヒット:1 http://archive.ubuntulinux.jp/ubuntu xenial InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial InRelease                  
無視:3 http://archive.ubuntulinux.jp/ubuntu-ja-non-free xenial InRelease       
ヒット:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease          
ヒット:5 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease        
ヒット:6 http://archive.ubuntulinux.jp/ubuntu-ja-non-free xenial Release       
ヒット:8 http://security.ubuntu.com/ubuntu xenial-security InRelease           
*** Error in `appstreamcli': double free or corruption (fasttop): 0x00000000010f7960 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7f9809af1725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7f9809af9f4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f9809afdabc]
...

どうやら、”appstreamcli”というプログラムのバグが原因なようです。

Ubuntu 16.04のapt updateでappstreamcliがクラッシュする – グレインの備忘録

ちなみにこれ、自分が持っているLiveDVDでも同様の現象が起こるため、どうやら初期状態ですでに存在しているバグのようでした。
対処方法は上記の記事に記載されている方法をそのまま実行することで解消できました。

#appstreamを無効化
sudo killall -KILL apt.systemd.daily
sudo mv /etc/apt/apt.conf.d/50appstream /etc/apt/apt.conf.d/50appstream.disable
#apt update/upgrade
sudo apt update -y
sudo apt upgrade -y
#appstreamを有効化して再度update
sudo mv /etc/apt/apt.conf.d/50appstream.disable /etc/apt/apt.conf.d/50appstream
sudo apt update -y

実行結果

# sudo apt update

ヒット:1 http://archive.ubuntulinux.jp/ubuntu xenial InRelease
無視:2 http://archive.ubuntulinux.jp/ubuntu-ja-non-free xenial InRelease                                                                                                         
ヒット:3 http://archive.ubuntulinux.jp/ubuntu-ja-non-free xenial Release                                                                                                         
ヒット:5 http://security.ubuntu.com/ubuntu xenial-security InRelease                                                      
取得:6 http://security.ubuntu.com/ubuntu xenial-security/main amd64 DEP-11 Metadata [67.7 kB]  
取得:7 http://security.ubuntu.com/ubuntu xenial-security/main DEP-11 64x64 Icons [68.0 kB]   
取得:8 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 DEP-11 Metadata [200 B]
取得:9 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 DEP-11 Metadata [107 kB]
取得:10 http://security.ubuntu.com/ubuntu xenial-security/universe DEP-11 64x64 Icons [142 kB]        
取得:11 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 DEP-11 Metadata [212 B]
取得:12 http://security.ubuntu.com/ubuntu xenial-security/multiverse DEP-11 64x64 Icons [29 B]
ヒット:13 http://jp.archive.ubuntu.com/ubuntu xenial InRelease  
ヒット:14 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease
ヒット:15 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease
取得:16 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 DEP-11 Metadata [733 kB]
取得:17 http://jp.archive.ubuntu.com/ubuntu xenial/main DEP-11 64x64 Icons [409 kB]
取得:18 http://jp.archive.ubuntu.com/ubuntu xenial/restricted amd64 DEP-11 Metadata [186 B]
取得:19 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 DEP-11 Metadata [3,410 kB]
取得:20 http://jp.archive.ubuntu.com/ubuntu xenial/universe DEP-11 64x64 Icons [7,448 kB]
取得:21 http://jp.archive.ubuntu.com/ubuntu xenial/multiverse amd64 DEP-11 Metadata [63.8 kB]
取得:22 http://jp.archive.ubuntu.com/ubuntu xenial/multiverse DEP-11 64x64 Icons [230 kB]
取得:23 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 DEP-11 Metadata [320 kB]
取得:24 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main DEP-11 64x64 Icons [231 kB]
取得:25 http://jp.archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 DEP-11 Metadata [157 B]
取得:26 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 DEP-11 Metadata [247 kB]
取得:27 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe DEP-11 64x64 Icons [333 kB]
取得:28 http://jp.archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 DEP-11 Metadata [5,964 B]
取得:29 http://jp.archive.ubuntu.com/ubuntu xenial-updates/multiverse DEP-11 64x64 Icons [14.3 kB]
取得:30 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main amd64 DEP-11 Metadata [3,328 B]
取得:31 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main DEP-11 64x64 Icons [29 B]
取得:32 http://jp.archive.ubuntu.com/ubuntu xenial-backports/restricted amd64 DEP-11 Metadata [194 B]
取得:33 http://jp.archive.ubuntu.com/ubuntu xenial-backports/universe amd64 DEP-11 Metadata [5,100 B]
取得:34 http://jp.archive.ubuntu.com/ubuntu xenial-backports/universe DEP-11 64x64 Icons [1,789 B]
取得:35 http://jp.archive.ubuntu.com/ubuntu xenial-backports/multiverse amd64 DEP-11 Metadata [216 B]
取得:36 http://jp.archive.ubuntu.com/ubuntu xenial-backports/multiverse DEP-11 64x64 Icons [29 B]
13.8 MB を 5秒 で取得しました (2,654 kB/s)                    
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています       
状態情報を読み取っています... 完了
パッケージはすべて最新です。
  • この記事いいね! (0)
asaba 著者:asaba

【iponeアプリ】日本全国AEDマップ

gpsで許可さえすれば近くのAEDをすぐに探せるというアプリを見つけたので使ってみました。

アプリをっダウンロードしてgpsを許可するだけで自分がいる地点のAEDがある施設をアイコンで示してくれます。

地点投稿機能もついており、利用時間の情報の追加もできます。知らない土地でAEDが必要になった時に非常に重宝されるのでこういう機能はいいなと感じました。

心臓の弱い方と一緒にいてもし万が一必要になった時はこれを使えば早い段階で救助ができるのでとても利用価値の高いアプリだと思います。これからもこのようなアプリが増えていってほしいですね~。

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

【Android】「Cannot add task ‘:processDebugGoogleServices’ as a task with that name already exists.」エラーの対処法

本日遭遇したエラーの対処法です。
状況はというと、Cordovaでアプリを開発中、プラグインの追加・削除のため、どうしてもブラウザやAndroidなどのプラットフォームを削除しなくてはならなくなり、削除 → 再インストールを実行したところ、Androidで上記エラーが発生しました。
なお、build.gradle ファイル内で発生したエラーです。

 

エラー文を色々検索し、ヒットした解決策を試したのですが、状況に一致しなかったり、解決しなかったり…。
で、エラー文に戻って、「already exists(=もう存在している)」とあったので、なら Google Services という名前のものを削除すればいいのか?と安直に試したところ…なんとビンゴでした。

具体的には、下記の記述をコメントアウトし、「Try again」を実行しました。

apply from: "cordova-support-google-services/[プロジェクト名]-build.gradle"

こんなに単純なことだったとは…ちょっと拍子抜けでした。
でも、解決できたので良しとします!

 

以上、Cordovaのプラグインの影響で発生した(と思われる)Android Studio のエラーの対処法でした。
なお、今回のエラーは Firebase関連のプラグインが原因のようでした。
もし同じことにお困りの方は、参考にしていただければ幸いです。

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