Skip to content

1.0.Android app basic knowledge

takafumi nanao edited this page Feb 4, 2018 · 1 revision

AndroidStudioで新規プロジェクト作成した時に作られるディレクトリ、ファイル

  • gradle関連 : この後説明します
  ./build.gradle
  ./app/build.gradle
  ./gradle/wrapper/*
  ./gradle.properties
  ./gradlew
  ./gradlew.bat
  ./settings.gradle
  • AndroidManifest.xml : この後説明します
  • プログラムソースコード
    • test用ソースコード
      ./app/src/test/java または app/src/androidTest/java 以下に出力されているファイル
    • アプリ用ソースコード
      app/src/main/java/ 以下に出力されているファイル
  • リソースファイル
    app/src/main/res/ 以下に出力されているファイル

gradle

gradleとは?

androidで採用されているbuildシステム

gradle関連のファイルが何をしているか

  • build.gradle
    buildスクリプト、およびそのパラメータ等が設定されている
    プロジェクト直下にある全体のためのbuild.gradleと各モジュール(app/build.gradleなど)のbuild.gradleがある
  • gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle-wrapper.properties gradlew gradlew.bat
    gradle wrapperのためのファイルこれらのファイルによってPCにgradleをインストールせずにgradleを利用することが出来る また、利用するgradleのバージョンの指定もgradle-wrapper.propertiesで行うため、これらのファイルは、すべてバージョン管理システムに格納するべきです。
  • gradle.properties
    build時のgradleの起動オプションやbuild時の変数などを定義する
  • settings.gradle
    gradleで利用するプロジェクトを設定する
    通常はinclude ':app'とだけ記述されているが、ライブラリモジュールを作成した場合などにinclude ':app',':myLib'などのようになる

build.gradle から何がわかるか?

  • プロジェクトトップのbuild.gradle
    プロジェクト全体の設定(buildに使うandroid用のプラグインの設定等)
  • appの下のbuild.gradle
    作成されるアプリの設定(バージョン名等)
    依存してるライブラリの一覧
    その他アプリの設定
    例えば
// androidのブロックでAndroid用の設定をする
android {
    compileSdkVersion 27                            // compileに使われるandroidSDKのバージョン targetSdkVersionと揃える
    defaultConfig {
        applicationId "tokyo.punchdrunker.hocho"    // <- アプリのID Play Store、端末上で一意になる識別子
        minSdkVersion 21                            // <- サポートする最小のandroidバージョン
        targetSdkVersion 27                         // <- ターゲットのandroidバージョン このバージョンによってRuntimePermissionなど一部挙動が変わる(基本的に最新に合わせたほうが良い)
        buildToolsVersion versions.buildTools       // <- buildに利用するツール郡の設定(Android plugin for Gradle 3.0.0以降なら設定しない場合プラグインに合わせたバージョンが自動で選択される)
        versionCode 1                               // <- アプリのバージョンコード 内部的に使われるもので基本的にユーザーの目にするものではない アプリのインストール時やGoogle Play Consoleでのリリースで使われる
        versionName "1.0"                           // <- ユーザーが目にするバージョン名
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"  // <- androidTestに使われるRunner
    }
}

AndroidManifest.xml

  • マニフェストの役割
    androidがアプリのコードを実行する前に必要な情報を記述し、androidに伝える

  • マニフェストから何がわかるか?

    • アプリのコンポーネント(アプリを構成するActivity、Service、Broadcast Receiver、Contents Provider)
    • アプリがAPIの保護された部分へのアクセス、 他のアプリとやり取りする際に必要となるパーミッション
    • アプリがサポートしているAndroidのバージョン
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="tokyo.punchdrunker.hocho">
    <!-- アプリが利用するパーミッションの定義 この場合インターネットアクセスをするパーミッションを設定している -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- アプリで使用するハードウェアまたはソフトウェアの機能を定義 この場合カメラがない端末ではGoogle Playからダウンロードできない --> 
    <uses-feature android:name="android.hardware.camera" /> 

    <!-- アプリケーション自体の属性を設定する ここではApplicationクラス、アプリアイコン、アプリ名、アプリ全体のスタイルについて設定している -->
    <application
        android:name=".HochoApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <!-- 各コンポーネントの記述については各コンポーネントの章で説明 -->

    </application>
</manifest>

NextStep

参考になりそうなセッション

Android Studio30分集中超絶技巧100選

Clone this wiki locally