2015年2月20日金曜日

[Android] apkファイルをインストールする方法

もともと行いたかったことは、家のiMacと同じ環境(Android Studio)をMacbook Airの環境にプロジェクト毎コピー(エクスポート&インポート)したかったのですが、探してもAndroid Studioにプロジェクトのインポートはあってもエクスポートがありませんでした。

そこで、apkファイルを作成して、それをインストールすればプロジェクトがインポートされるのではないか?と勝手に決めつけてアレコレやってみました。結果、プロジェクトのインポートはapkファイルでは出来ないということが解りました^^;

ただ、エミュレーターや実機にapkをインストールする、つまりアプリケーションをインストールする方法がわかりましたので、その手順を以下に書きます。

1. adbにパスを通す


2. Android Studioでエミュレーターを立ち上げる、または、実機をUSB(データ伝送できるUSBであることに注意!!)でつないで、adb installする



2015年2月17日火曜日

[Android] ホーム画面に遷移する方法

特定のActivityにではなく、ホーム画面に遷移するには以下のようにします。
通常、Activityへの遷移は二つの引数(コンテキストと起動Activityのclass属性)を取るコンストラクタを使いますが、ホーム画面に遷移する場合はIntent.ACTION_MAINのみ与えるコンストラクタを使います。

参考
 HOMEボタン押下と同じ処理をするには

[Android] ServiceからActivityを起動する

ServiceやReceiverからActivityを普通にIntentで起動しようとしてもエラーになります。起動するにはIntentにFLAG_ACTIVITY_NEW_TASKフラグを設定します。

例えば、Serviceで定期的に状態を監視し、ある条件を満たした場合にActivityを表示する、などに使えます。Intentを使ったパラメータの授受も通常通り行えます。

2015年2月15日日曜日

[MacOS X] 複数ホストへのSSL接続設定を行う

以下の様に/user/ユーザ名/.ssh/configに複数ホスト向けの設定を記述します。なお、秘密鍵のパーミッションは0600にしていないとホストに拒絶されますので、注意してください。



普通にSSLでホストに接続しようとすると、接続の度にパスワードを聞かれます。単一ホストならそれでもまだよいですが、ホストが増えてくると大変です。それでは、ということで秘密鍵を使った認証と接続を行いますが、複数のファイルにSSLの接続設定を書いて回るのも煩雑です。ですので、~/.ssh/config を上手く活用するととても楽です。活用してください。

参考
 Mac で ssh config を設定した後、 「Too many authentication failures for xxxx」エラーへの対応をして、さらに鍵使用時に毎回パスフレーズを訊かれないようにする。 - modifiedの日記

2015年2月12日木曜日

[Android] 遷移先Activityから遷移元Activityに戻る方法

[Android] 他の画面(Activity)にパラメータを渡して遷移する にてIntentを使って画面(Activity)を遷移する方法を示しました。この場合に、遷移先Activityから遷移元Activityに戻るにはfinishメソッドを使います。

Intentを使って再遷移する方法とは異なり、遷移元Activityのクラス名を遷移先Activityが知る必要がないので、finishを使う方がDRY(Don't Repeat Yourself)でおすすめです。

2015年2月10日火曜日

[Android] 他の画面(Activity)にパラメータを渡して遷移する

android.content.Intentを使います。

まず、画面遷移(他のActivity)に遷移するなら次の通りです。

この際に、パラメータ(任意のオブジェクトも可)を渡すならintent.putExtraを使います。
putExtraの第一引数はパラメータのキーで、第二 引数が渡したいパラメータそのものです。
遷移先Activityでのパラメータの受け取りも含めて例を示します。




2015年2月1日日曜日

[Apache] MacのApacheのSSL(自己認証CA)でFile Not Foundエラー

MacOS XにはプリインストールされているApacheがあります(と勝手に思っていますが、入っていないMacOS Xもあるかもしれません)。

このApacheにて、SSL接続(自己認証CA)を 設定した時に、http://〜では問題なくアクセスできるのに、https://〜ではNot Foundになってアクセスできないという障害に遭遇しました。

注:自己認証CAと書いていますが、特に自己に拘る必要はおそらくないと思います。たまたま、私の環境においては自己認証を使ったので、限定して書いています。

エラーログを見てみると

と余計なコード「\xe2\x80\x9d」がついています。これによってファイルが見つからないという事になっていました。これはMac環境では"(ダブルクォート)を示します。

解決法に飛びます。httpd-ssl.confのDocumentRootの書き方を""でパスを囲んでいたのを取り外します。これで、このコードがリクエストにつかなくなり、正常にアクセスできるようになりました。

これはSSL設定だけに限られず、VirtualHost設定をMacOS X環境で行う時に発言しうる現象のようです。

参考
 macosx - Apache not finding folder on File System; Appending "\xe2\x80\x9d" to end of File Paths - Server Fault