ゆずまの○○日記がシンプルでいいと思います!

プログラミングを中心に書いていこうと思ってます。

【その1】mixiさんのAndroidTraingを元にAndroidを勉強してみよう!

「1. まえがき」あたりのメモ(mixiのAndroidTraining)

「1. まえがき」の「1.Android-OSについて」~「6.Android のビルドについて(Gradle)」のメモ

背景

  • Androidアプリ作ってみたい!
  • 素晴らしき参考ページに沿って、 Androidの初級者になろうと思って始めました。 人気な勉強会なので、実際に足を運べてません。笑 ※ 「1. まえがき」あたりのメモになります。

開発環境でAndroidプリプロジェクトの構成が違う。

Android StudioEclipseAndroidプリプロジェクトの構成が違うっぽい。

  • Android Studioプロジェクトの構成 f:id:yuzuma_yuzuma_yuzuma:20150124204808p:plain
  • .idea ディレクトリ

    • プロジェクトの設定ファイルが格納されています。
  • app ディレクトリ ( C:\android_sandbox\workspace\MyApplication\app )

    • src / main / java ディレクトリ
    • src / main / res ディレクトリ
    • assets ディレクトリについて
    • src / main / AndroidManifest.xml
    • src / proguard-rulues.txt
    • src / モジュール名.iml(上図での app.iml)
  • gradle Scripts

  • EclipseAndroidプロジェクトの構成

    • srcディレクトリ
    • genディレクトリ
    • assetsディレクトリ
    • binディレクトリ
    • libsディレクトリ
    • resディレクトリ
    • AndroidManifest.xml
    • proguard-project.txt

++ 素晴らしき参考ページ` http://mixi-inc.github.io/AndroidTraining/introductions/1.05.how-to-build-for-gradle.html

gradle.batを実行してみる

gradle.batの場所(windows)

Android Studioのインストールフォルダから、 gradleフォルダと階層を掘り下げていくと、 見つけることができると思われる。

C:\android_sandbox\AndroidStudio\gradle\gradle-2.2.1\bin\gradle.bat

署名済みアプリの作成する

※署名は、AndroidAndroidマーケットで公開するときに必要らしい。

Androidアプリに署名するには、keystoreファイルを作成するとできる。 JDKのパスが通しておくと、keytoolコマンドが実行できる。

keytool -genkey -v -keystore [ファイル名] -alias [証明書の名称] -validity [有効日数]

僕は、C:\Users\main で keytoolコマンドを実行したので、 "C:\Users\main\hoge.keystore"にできてました。

f:id:yuzuma_yuzuma_yuzuma:20150124204850p:plain

  • Android Studio で アプリに署名をするには * ツールバーの [ Build > Generate Signed APK ] から生成する。 ※ keytoolコマンドを実行してもできるし、 ※ Android Studioからでも、keystoreファイルは作成できそうだ。

以下のエラーがでた。

Generate signed APK: Errors while building apk, see messages tool window for list of errors.

んで、メッセージを見ると、Gradle Buildで失敗してた。 keystoreファイルのkeyを読むのに失敗してるらしい。

エラー :Execution failed for task ':app:packageRelease'. Failed to read key from keystore

検索してもでてこなかったから、 たぶん簡単なエラーなんだろう。 解決できないから、アプリに署名するのはあきらめることにする。 と、諦める前に、Android Studioからkeystoreファイルを作成したら、できた。

f:id:yuzuma_yuzuma_yuzuma:20150124205113p:plain

f:id:yuzuma_yuzuma_yuzuma:20150124205119p:plain

f:id:yuzuma_yuzuma_yuzuma:20150124205212p:plain

f:id:yuzuma_yuzuma_yuzuma:20150124205229p:plain

f:id:yuzuma_yuzuma_yuzuma:20150124205241p:plain

AndroidのapkファイルはZIP形式で圧縮されたファイルです。 ということらしいので、作成したapkファイルを7-zipで解凍する。

7-zipで解凍すれば、AndroidManifest.xmlの中身が文字化けしてる。 手順的に、はまった。笑

素直にapktoolを使って、解凍をすることにしました。 tarとbz2だったので、7zipで2回ずつ解凍しました。 https://code.google.com/p/android-apktool/downloads/detail?name=apktool1.5.2.tar.bz2&can=2&q=

https://code.google.com/p/android-apktool/downloads/detail?name=apktool-install-windows-r05-ibot.tar.bz2&can=2&q=

うまく行かなすぎて、吹いた。

Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c file

https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.0.0rc3.jar

apktool_2.0.0rc3.jar を apktool.jar にリネームしました。 apktoolフォルダを作成し、以下の3つを入れる。

  • apktool.bat
  • aapt.exe
  • apktool.jar

C:\android_sandbox\AndroidSDK\tools以下に置く。

解凍したいapkファイルも、apktoolフォルダに配置する。

apktool d app-release.apk

apktoolの使い方は、コマンドプロンプト上で、apktoolのみを実行するか、 apktoolのwikiを参照してください。 https://code.google.com/p/android-apktool/wiki/ApktoolOptions

f:id:yuzuma_yuzuma_yuzuma:20150124205321p:plain f:id:yuzuma_yuzuma_yuzuma:20150124205344p:plain

解凍できた! apk ファイルの中にあるファイル・ディレクトリの役割ってどこで知れるの?

終わり。

当方の環境

参考ページ