【Android】アンインストールしたアプリのPreferenceが復元される場合
アプリをアンインストールして再度インストールした際に、以前のアプリの設定値(Preference などの値)が復元される場合がある。
普段使いしているアプリなら助かるけど、デバッグ中に復元されると困るので、[設定]>[詳細設定]>[バックアップとリセット]>[自動復元]をオフにする。

【Android】HUAWEIのAndroid端末でLogが表示されない場合
HUAWEI の P10Lite を開発用端末として買った時に、Verbose と Debug のログが出力されなかったので、その設定方法をメモ。
1. 通話アプリに指定番号をダイヤル
まずは端末の通話アプリで以下の番号をダイヤルする。
*#*#2846579#*#*
次のような ProjectMenu が表示される。

2.LOG Setting の項目にチェック
ProjectMenu > Background Settings を選択する。

Background Settings > LOG Setting を選択し、AP Log、Charge Log、Sleep Log の全てのチェックボックスにチェックを付ける。

以上の設定で Log がちゃんと表示されるはず。なぜデフォルトでオフにしているのだろう。
同じところではまった方もいるみたいです。
Android HUAWEI端末P8Liteで Logcatを動かす方法 【AndroidStudio】Log.dとLog.vが出力されない
【Android Studio】プロローグにはコンテンツを指定できません
たまに新しいプロジェクト作ってる時に出て戸惑う次のエラー。
プロローグにはコンテンツを指定できません
大体は、新規プロジェクト作成時に自動生成されない assets ディレクトリを手動で作ろうとした際に、ディレクトリの場所を間違えているというクソしょうもないミス。
本来は、以下のように/assets は /java とか /res と同じ階層。
.
├── assets
├── java
│ └── com
│ └── hoge
│ └── hogeapp
└── res
├── drawable
├── layout
├── mipmap-hdpi
├── mipmap-mdpi
├── mipmap-xhdpi
├── mipmap-xxhdpi
├── mipmap-xxxhdpi
├── values
└── values-w820dp
このエラーに悩まされている場合は、なぜか /res の下に作ってしまっている。2度もこれをやってしまったので、アホな自分への戒め備忘録。
【Android】ProductFlaver で起動アクティビティーを代えるに際しやったこと
やりたいこと
2つの productFlavor で起動アクティビティーを代える。
- first -> FirstMainActivity
- second -> SecondMainActivity
なお、first のマニュフェストにおいて LAUNCHER は指定済みの状況下で、second で別のアクティビティーを起動させたい。そのまま second のマニュフェストに SecondMainActivity を LAUNCHER 指定しても、2つ起動してしまう(アイコンが2つできる等)。
失敗した方法
オーバーライドさせたい方のマニュフェストに、
<category android:name="android.intent.category.DEFAULT" />
を入れれば良いみたいな話が stackoverflow にあったけど、うまくいかなかった(以下のリンク)。
エイリアスを作って対応する方法もあるみたいだけど、あんまりシンプルじゃない気がする。
成功した対応
要は、LAUNCHER の指定をしているアクティビティーは1つにしたいので、オーバーライドさせたいマニュフェストでメインの LAUNCHER の指定を削除すればよい。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.yourpackage">
<activity
android:name=".FirstMainActivity"
android:label="@string/app_name">
<intent-filter tools:node="remove">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".SecondMainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</manifest>
インテントフィルターで tools:node="remove" をしている。ベストプラクティスかは不明。以下の stackoverflow を参考にした。
【iOS-Swift】UIActivity で共有モーダルを表示する

ざっと次のような感じ。
let text:String = "この内容をシェア!"
let items = [text]
// 初期化
let activityVC = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
// UIViewを出すViewを指定:iPadでは以下を入れないと落ちる
activityVC.popoverPresentationController?.sourceView = self.view
// 共有で使用しないタイプを指定
let excludedActivityTypes = [
UIActivityTypePostToWeibo,
UIActivityTypeSaveToCameraRoll,
UIActivityTypePrint
]
// タイプを登録
activityVC.excludedActivityTypes = excludedActivityTypes
// UIActivityViewControllerを表示
self.presentViewController(activityVC, animated: true, completion: nil)
以下の部分がないと iPadで落ちるので注意が必要。
activityVC.popoverPresentationController?.sourceView = self.view
【PHP】laravel の導入
laravelのインストール
composerを使って、laravelをインストールしてプロジェクトを作る。ちょい時間が掛かる。
composer create-project laravel/laravel ${プロジェクト名} --prefer-dist
laravelのバージョンは、以下で確認できる。
php artisan --version
サーバーを立てる
laravelの簡易サーバーを立てるなら、作成したプロジェクトディレクトリへ移動し、
php artisan serve
なお、artisan は「職工」という意味で、ipa表記を見る限り、アメリカ発音だと「アーティズン」って感じ。localhost:8000でデモページが開く。
MacのApacheでサーバーを立てるなら、次のようにlaravelプロジェクトのpublic以下をドキュメントルートにして、サブドメインとかを用意。
127.0.0.1 laravel-test.localhost
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/${プロジェクト名}/public"
ServerName laravel-test.localhost
<Directory "/Library/WebServer/Documents/${プロジェクト名}/public">
AllowOverride All
</Directory>
</VirtualHost>
laravel-test.localhostでデモページが開く。デプロイする本番のサーバーでも、ドキュメントルートをpublic/以下に設定する必要がある。
MacのlocalhostをiPhoneで確認する方法
バーチャルホストなしの場合
システム環境設定 > 共有で、インターネット共有を有効にする。「ローカルネットワーク上のコンピュータから、次のアドレスでこのコンピュータにアクセスできます:xxx.xxx」などと書かれた箇所のxxx.xxxに他の端末からアクセスすれば、localhostが表示できる。
バーチャルホストありの場合
バーチャルホストを設定していると、他の端末でサブドメインなどの名前解決ができないので、ApacheのProxyを使って共有する。
proxyを有効にする
/etc/apache2/httpd.conf の以下の項目を有効にする。コメントアウトされていたら、#を取り除く。
LoadModule proxy_html_module libexec/apache2/mod_proxy_html.so LoadModule proxy_module libexec/apache2/mod_proxy.so <IfModule proxy_html_module> Include /private/etc/apache2/extra/proxy-html.conf </IfModule>
/etc/apache2/extra/proxy-html.conf の末尾に以下を追加する。
<IfModule mod_proxy.c>
ProxyRequests On
ProxyVia On
Listen 8080
<Proxy *>
Order deny,allow
Deny from all
Allow from all
</Proxy>
</IfModule>
Apacheを再起動すれば、pc側の設定は終了。
iPhoneのHTTPプロキシを設定
設定 > Wi-Fi で使用しているネットワークを選択し、HTTPプロキシの項目を「手動」に選択する。「サーバー」にpcのローカルip、「ポート」に8080を指定する。これで、iPhoneからも、バーチャルホストを使用したlocalhostを確認できる。