If you are building your first Android app, one of the most important features youโll need is a login system.
A login system helps you identify users, secure data, and personalize the experience.
In this article, weโll explain how to create a login system in Android Studio using Firebase Authentication โ one of the easiest and most secure ways to handle user login in modern Android apps.
๐น What You Will Learn
By the end of this tutorial, youโll understand:
- How to connect your Android app with Firebase
- How to create registration and login screens
- How to authenticate users using email and password
- How to store and retrieve login data safely
- How to log out and secure user sessions
๐น Why Use Firebase Authentication?
Firebase, by Google, provides a powerful authentication system that supports:
- Email/Password login
- Google Sign-In
- Facebook or Twitter Login
- Anonymous authentication
Firebase handles all the backend logic for you โ no need to build your own server or database for simple authentication.
This is why most new developers prefer Firebase Authentication for login systems.
(Firebase Auth Docs)
๐น Step 1: Create a New Android Project
- Open Android Studio
- Click File โ New โ New Project
- Select Empty Activity and click Next
- Give it a name, e.g.
LoginApp - Choose language: Java or Kotlin
- Set Minimum SDK: API 21 (Android 5.0 Lollipop)
- Click Finish
Once it loads, youโll see the default MainActivity.java and activity_main.xml.
๐น Step 2: Connect Your Project to Firebase
Firebase integration is simple inside Android Studio.
- Go to Tools โ Firebase (right sidebar will open)
- Click Authentication โ Email and Password Authentication
- Click Connect to Firebase
- Android Studio will open Firebase Console in browser โ login with your Google account
- Create a new Firebase project (same name as your app)
- After connection, click Add Firebase Authentication to your app
Android Studio will automatically add these dependencies in your Gradle file:
implementation 'com.google.firebase:firebase-auth:22.0.0'
Make sure to Sync Project.
๐น Step 3: Enable Email/Password Authentication in Firebase
- Go to your Firebase Console
- Select your project โ Authentication tab
- Go to Sign-in method
- Enable Email/Password
- Click Save
Now Firebase will handle login and registration securely.
๐น Step 4: Create Login and Register Screens
Letโs design two XML layouts:
activity_register.xmlactivity_login.xml
activity_register.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="24dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/email"
android:hint="Enter Email"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/password"
android:hint="Enter Password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/registerBtn"
android:text="Register"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
activity_login.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="24dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/loginEmail"
android:hint="Email"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/loginPassword"
android:hint="Password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/loginBtn"
android:text="Login"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
๐น Step 5: Register New Users
Create a new Java file RegisterActivity.java:
public class RegisterActivity extends AppCompatActivity {
EditText email, password;
Button registerBtn;
FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
email = findViewById(R.id.email);
password = findViewById(R.id.password);
registerBtn = findViewById(R.id.registerBtn);
auth = FirebaseAuth.getInstance();
registerBtn.setOnClickListener(v -> {
String userEmail = email.getText().toString();
String userPass = password.getText().toString();
if (userEmail.isEmpty() || userPass.isEmpty()) {
Toast.makeText(this, "Please fill all fields", Toast.LENGTH_SHORT).show();
return;
}
auth.createUserWithEmailAndPassword(userEmail, userPass)
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Toast.makeText(this, "Registered Successfully", Toast.LENGTH_SHORT).show();
finish(); // close register screen
} else {
Toast.makeText(this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
});
});
}
}
๐น Step 6: Login Existing Users
Now create LoginActivity.java:
public class LoginActivity extends AppCompatActivity {
EditText loginEmail, loginPassword;
Button loginBtn;
FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginEmail = findViewById(R.id.loginEmail);
loginPassword = findViewById(R.id.loginPassword);
loginBtn = findViewById(R.id.loginBtn);
auth = FirebaseAuth.getInstance();
loginBtn.setOnClickListener(v -> {
String email = loginEmail.getText().toString();
String pass = loginPassword.getText().toString();
if (email.isEmpty() || pass.isEmpty()) {
Toast.makeText(this, "All fields required", Toast.LENGTH_SHORT).show();
return;
}
auth.signInWithEmailAndPassword(email, pass)
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Toast.makeText(this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(this, MainActivity.class));
finish();
} else {
Toast.makeText(this, "Login Failed", Toast.LENGTH_SHORT).show();
}
});
});
}
}
๐น Step 7: Add Logout Option
In your MainActivity.java, you can add a logout button:
Button logoutBtn;
FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
logoutBtn = findViewById(R.id.logoutBtn);
auth = FirebaseAuth.getInstance();
logoutBtn.setOnClickListener(v -> {
auth.signOut();
startActivity(new Intent(this, LoginActivity.class));
finish();
});
}
๐น Step 8: Test Your Login System
Now run the app on an emulator or device:
- Click Register and create a new account
- Go to the Firebase Console โ Authentication โ Users โ your new account will appear
- Try logging in using that email and password
- Verify you can logout and re-login
If everything works, your login system is complete! ๐
๐น Common Mistakes to Avoid
- Donโt forget to enable the Email/Password sign-in method in Firebase.
- Always validate user input (email, password length, etc).
- Add internet permission in
AndroidManifest.xml:<uses-permission android:name="android.permission.INTERNET" /> - Avoid storing passwords locally โ Firebase already manages that securely.
๐น Conclusion
Creating a login system in Android Studio is not as hard as it looks โ especially with Firebase Authentication.
It saves you from complex backend code, handles data safely, and scales automatically with your app.
To summarize:
- Use Firebase Authentication for quick and secure login
- Design clean, simple UI
- Always validate inputs
- Manage logout properly
Once done, you can expand it with Google Sign-In, OTP verification, or profile management.