In Android Studio, when you create a new project from Start a new Android Studio project
, the template list is displayed.
I often use ʻEmpty Activity`, but I'm grateful that the templates prepare various useful ones from the beginning, but honestly Nanikore? Since there are many files called, I checked it. In short, it's a memorandum.
One question I wondered is if Java and Kotlin are different from the templates.
So I created the Java version as myapplication1
and the Kotlin version as myapplication2
.
By the way, com.sirius.software
is the package name that I personally use.
The result of expanding all the items created by the template is as follows. The Java version is on the left and the Kotlin version is on the right.
It seems that there is no big difference at first glance, but
Only the Kotlin version had an item called generatedJava
from the beginning.
Even in the Java version, it was displayed as an item when I built it, so I guess the Kotlin version was built once at the beginning.
app/manifests/AndroidManifest.xml
Contains information about Android apps. Is it an overview of the app as seen from the Android system? It is likely that you will edit it mainly when adding / changing / deleting activities.
There is no difference in Java / Kotlin. I wrote a comment about the tag and each element (I personally researched it).
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
<manifest> AndroidManifest.Root element of xml
・ Xmlns:android =Indicates that it is an xml file for Android
・ Package=Package name
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sirius.software.myapplication1">
<!--
<application>Application-wide configuration elements
・ Android:allowBackup =Whether to back up the application data to GoogleDrive etc.
・ Android:icon =Specify the resource of the app icon
・ Android:label =Specify the display name of the app
・ Android:roundIcon = Android 7.Specify the resource of the round icon corresponding to 1 or later
・ Android:supportRtl =Does it support layouts that display sentences from right to left, such as Arabic?
・ Android:theme =Specify the default theme for the activity
-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
<activity>Setting elements for each activity
・ Android:name =Activity resource name
-->
<activity android:name=".MainActivity">
<!--
<intent-filter>Specifies the type of implicit intent that can be processed
For example, this app tells Android systems that it can make phone calls
Android if you want to show.intent.action.Add CALL
-->
<intent-filter>
<!-- .Indicates that MainActivity is displayed when the app is started-->
<action android:name="android.intent.action.MAIN" />
<!--Indicates that it can be started from the home icon-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
app/java/com.sirius.software.myapplication1/MainActivity.java
Source code for the main activity. Without this, nothing will be displayed when you start the app. The action bar is the title display-like place that appears at the top of the activity.
The Java version requires a semicolon at the end of the line.
MainActivity.java
//Package declaration
package com.sirius.software.myapplication1;
//Required when creating an activity with an action bar
import android.support.v7.app.AppCompatActivity;
//Required to have the Android system manage the status of the activity
import android.os.Bundle;
//Entry point (start here)
public class MainActivity extends AppCompatActivity {
//onCreate event handler
//Called when the activity is started
//Override annotation reuses existing onCreate
//Convenient because you don't have to write the basic magic of the activity
@Override
protected void onCreate(Bundle savedInstanceState) {
//Call the superclass onCreate
//savedInstanceState stores the state of the activity
super.onCreate(savedInstanceState);
//Load and display the layout file
setContentView(R.layout.activity_main);
}
}
app/java/com.sirius.software.myapplication2/MainActivity.kt
This is the main activity of the Kotlin version. No semicolon is needed.
MainActivity.kt
package com.sirius.software.myapplication2
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
//public is omitted and the extends keyword is:Changed to
class MainActivity : AppCompatActivity() {
//Annotations were omitted and onCreate was refreshing
// Bundle?Hatena indicates that the value may be Null (nullable)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
app/generatedJava/com.sirius.software.myapplication*/BuildConfig
If you want to separate some processing between Debug build and Release build It seems that you can use it by adding constants and processes to BuildConfig. I will edit it when that time comes.
app/generatedJava/com.sirius.software.myapplication*.test/BuildConfig
Does it mean that the processing can be divided at build time even in unit tests? I'm not sure yet, so I'll look it up at a later date.
app/java/com.sirius.software.myapplication*/ExampleInstrumentedTest.*
A test sample file that can be executed on the actual machine or emulator.
app/java/com.sirius.software.myapplication*/ExampleUnitTest.*
A sample file of tests that can be run on Android Studio + Java Virtual Machine (JVM). There seems to be no explicit rule on how to handle these sample files.
app/res/drawable/ic_launcher_background.xml
Set the background when you create an adaptive icon.
app/res/drawable/ic_launcher_foreground.xml
Set the foreground when you create an adaptive icon. Adaptive icons are a mechanism to align (unify) the shapes of app icons.
app/res/layout/activity_main.xml
The layout of the activity. Arrange the buttons and views displayed on the screen.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
<android.support.constraint.ConstraintLayout>Automatically optimize layout
・ Xmlns:android =Indicates that it is an xml file for Android
・ Xmlns:app =Define an XML namespace and make the app attribute available
・ Xmlns:tools =Define an XML namespace and make the tools attribute available
・ Android:layout_width =Width adjustment (match)_parent:Display to fill the display area)
・ Android:layout_height =Height adjustment (match)_parent:Display to fill the display area)
・ Tools:context =Which activity the layout will be used for
-->
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--
<TextView>Show label
・ Android:layout_width =Width adjustment (wrap_content:If it is a character string, match its length)
・ Android:layout_height =Height adjustment (wrap_content:If it is a character string, match its length)
・ Android:text =Character string to display
・ App:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
→ Specify how to arrange itself with respect to adjacent views in automatic layout
-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
app/res/mipmap/ic_launcher/ic_launcher.png
It is a resource (image) file of the application icon. It seems that the following sizes should be prepared for the raster image.
resolution | Image size |
---|---|
hdpi | 72x72 |
mdpi | 48x48 |
xhdpi | 96x96 |
xxhdpi | 144x144 |
xxxhdpi | 192x192 |
app/res/mipmap/ic_launcher/ic_launcher.xml
Adaptive icon definition file. The following files are being read.
ic_launcher_background.xml
ic_launcher_foreground.xml
app/res/mipmap/ic_launcher_round/ic_launcher_round.png
It is a resource (image) file of the round application icon. The only difference from ʻic_launcher.png` is that the shape of the icon is round.
app/res/mipmap/ic_launcher_round/ic_launcher_round.xml
It has the same contents as ʻic_launcher.xml`. This is also just a round icon.
app/res/values/colors.xml
Defines a color name and color code.
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color> <!--Action bar background color-->
<color name="colorPrimaryDark">#00574B</color> <!--Status bar background color-->
<color name="colorAccent">#D81B60</color> <!--Basic color of the control-->
</resources>
app/res/values/strings.xml
Defines the string used in the app. Initially there is only the display name of the app.
strings.xml
<resources>
<string name="app_name">My Application1</string> <!--App display name-->
</resources>
app/res/values/styles.xml
Set a theme for your app's activities and views.
Theme.AppCompat.Light.DarkActionBar
is the parent theme, and it seems that you can extend it independently from here.
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
Gradle is used to build the app. Those who want to use development tools such as data binding and those who want to customize various things seem to edit here. At the moment, I don't think I have a chance to edit it unless there is something special, so I just checked the outline for the time being.
Gradle Scripts/build.gradle
A file that defines build procedures in the language Groovy.
Gradle Scripts/gradle-wrapper.properties
The configuration file needed to run the build in Gradle.
Gradle Scripts/proguard-rules.pro
Definition file to prevent reverse engineering of the app.
Gradle Scripts/gradle.properties
Your own properties file for use with Gradle.
Gradle Scripts/settings.gradle
Specifies which projects to include when building. It will not be used in a single project.
Gradle Scripts/local.properties
It is used to manage textual information that you do not want to keep in the repository. It seems that the settings specific to the development environment correspond to this.
The files with various roles are prepared from the beginning, and it feels like it's completely exhausted. If you just want to make an app normally, you can edit the following files or add your own.
app/manifests/AndroidManifest.xml app/java/com.sirius.software.myapplication1/MainActivity.java app/java/com.sirius.software.myapplication2/MainActivity.kt app/res/drawable/ic_launcher_background.xml app/res/drawable/ic_launcher_foreground.xml app/res/layout/activity_main.xml app/res/mipmap/ic_launcher/ic_launcher.png app/res/mipmap/ic_launcher_round/ic_launcher_round.png app/res/values/colors.xml app/res/values/strings.xml app/res/values/styles.xml
Recommended Posts