【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を確認できる。