2017/01/16

drawable-nodpi と drawable-anydpi と drawable の違い


[Android Drawable Importer](https://github.com/winterDroid/android-drawable-importer-intellij-plugin) というプラグイン一般的によく使われるようなアイコンを一発で追加できるプラグインです。結構便利。を使って Vector Drawable を追加すると、`drawable-anydpi` というディレクトリに追加されます。 前々から気になっていた `drawable-nodpi` との違いを調べてみたところ、意外と情報が少なかったのですが、こちらのブログに情報がありました。 - [The CommonsBlog — -nodpi, -anydpi, and WTF?](https://commonsware.com/blog/2015/12/21/nodpi-anydpi-wtf.html) 以下、まとめようと思ったのですが、原文がすばらしかったので、ほぼ翻訳です。

2017/01/08

通知を出しているアプリを確認する方法 (Android)

Android 5.0 lollipop 以降、通知を出しているアプリが簡単にわかるようになりました。

やり方は簡単。
まず、通知を**長押し**します。
すると、以下のように通知を出しているアプリ名が表示されます。 ちなみに、右端の「i」ボタンをクリックすると、通知設定画面に飛びます。

2016/12/28

Android Studio でモジュールを削除する方法

Android Studioチェックしたバージョンは 2.2.3 でモジュールを削除しようとする時、
モジュールを右クリックしてコンテキストメニューを探してしまったことが一度くらいあるはず。
ところが、コンテキストメニューには "Delete" という項目はないのです。

では、どう削除するのかというと、"Project Structure..." メニューから削除できます。

File → Project Structure...
Modules で 対象のモジュールを選択し、"Delete" ボタン(マイナスのアイコン) を押す。
知っていれば何てこと無いのだけど、ちょっと直感的ではないです。 > 参考 > - [ide - How to delete a module in Android Studio - Stack Overflow](http://stackoverflow.com/questions/16710290/how-to-delete-a-module-in-android-studio) 参考リンクを見るとわかるように、仕様がどんどん変わっているようなので、そのうちコンテキストメニューに入るかもしれません。

2016/12/27

apk の署名を確認する方法2種

基本的には `keytool` を使っておけば良いと思うのですが、 `apksigner` でも確認出来たのでメモ。

署名済みの apk から署名を削除する方法

Debug Keystore で署名済みの apk が送られてきちゃった。みたいな事は時々あると思うのですが、そういう時は署名を削除して再署名すれば良いのです。

### apk の署名とは
apk の署名は以下の 3つのファイルで構成されています各ファイルの役割については参考リンクが詳しいので、そちらを参照してください。
そのため、これらのファイルを削除すれば、未署名の apk になります。

- META-INF/MANIFEST.MF
- META-INF/CERT.RSA
- META-INF/CERT.SF

注: CERT.RSA と CERT.SF は別の名前(ANDROID.RSA 等)になっている場合があります。

> 参考
> - [APK ファイルの署名の仕様 - urandroid](http://d.hatena.ne.jp/urandroid/20110818/1313656536)


### 署名を削除する
コマンドラインだと以下のようにすると良いでしょう。

```console
$ zip -d app-debug.apk "META-INF/*"
deleting: META-INF/CERT.RSA
deleting: META-INF/CERT.SF
deleting: META-INF/MANIFEST.MF
```

この方法だと `META-INF` ディレクトリ自体を削除してしまうのですが、apk の場合 `META-INF` にこれ以外のファイルが入ることは無さそうなのであくまで経験則。要確認。、これで大丈夫だと思われます。

以下のように `apksigner verify` をするとエラーが出ます。

```console
$ apksigner verify app-debug.apk
DOES NOT VERIFY
ERROR: Missing META-INF/MANIFEST.MF
```

> 参考
> - [apksigner | Android Studio](https://developer.android.com/studio/command-line/apksigner.html)

### 再署名する
未署名の apk に後から署名する方法がそのまま使えます。
`zipalign` を忘れないようにしましょう。

[未署名の apk に後から署名する方法 | 穀風](https://kokufu.blogspot.jp/2016/12/apk.html)