안드로이드 앱 개발은 모바일 애플리케이션 개발의 흥미로운 분야로, 특히 자바는 안드로이드의 기본 프로그래밍 언어로 널리 사용됩니다. 이 글에서는 자바를 활용하여 간단한 회원가입과 로그인 기능을 구현하는 방법에 대해 자세히 설명하겠습니다. 이 과정에서는 Android Studio를 사용하며, Firebase를 로그인 및 회원가입 기능의 백엔드로 활용합니다.
1. 프로젝트 설정
- Android Studio를 실행합니다.
- 새 프로젝트를 만듭니다. “Empty Activity”를 선택하고, 프로젝트 이름과 패키지 이름을 입력합니다.
- Firebase와 연동하기 위해 Firebase Console에 프로젝트를 생성하고, Android 앱을 추가합니다.
- google-services.json 파일을 다운로드하여 프로젝트의 app 폴더에 추가합니다.
- build.gradle 파일을 수정하여 Firebase의 의존성을 추가합니다.
dependencies {
implementation 'com.google.firebase:firebase-auth:21.0.1'
// 기타 의존성
}
2. Firebase 설정
Firebase Authentication 서비스를 설정하여 이메일과 비밀번호로 회원가입 및 로그인을 할 수 있도록 합니다.
- Firebase Console에서 Authentication을 선택하고 “Get Started”를 클릭합니다.
- 로그인 방법에서 “Email/Password”를 활성화합니다.
3. XML 레이아웃 만들기
회원가입 및 로그인 화면을 만들기 위해 각각의 레이아웃 파일을 작성합니다.
activity_signup.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/signupEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이메일 입력" />
<EditText
android:id="@+id/signupPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="비밀번호 입력"
android:inputType="textPassword" />
<Button
android:id="@+id/signupButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="회원가입" />
</LinearLayout>
activity_login.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/loginEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이메일 입력" />
<EditText
android:id="@+id/loginPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="비밀번호 입력"
android:inputType="textPassword" />
<Button
android:id="@+id/loginButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="로그인" />
</LinearLayout>
4. 자바 코드 구현
이제 Activity 클래스에 회원가입과 로그인 기능을 구현합니다.
SignupActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class SignupActivity extends AppCompatActivity {
private EditText signupEmail, signupPassword;
private Button signupButton;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
signupEmail = findViewById(R.id.signupEmail);
signupPassword = findViewById(R.id.signupPassword);
signupButton = findViewById(R.id.signupButton);
mAuth = FirebaseAuth.getInstance();
signupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = signupEmail.getText().toString();
String password = signupPassword.getText().toString();
registerUser(email, password);
}
});
}
private void registerUser(String email, String password) {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(SignupActivity.this, "회원가입 성공: " + user.getEmail(), Toast.LENGTH_SHORT).show();
startActivity(new Intent(SignupActivity.this, LoginActivity.class));
finish();
} else {
Toast.makeText(SignupActivity.this, "회원가입 실패: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
LoginActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class LoginActivity extends AppCompatActivity {
private EditText loginEmail, loginPassword;
private Button loginButton;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginEmail = findViewById(R.id.loginEmail);
loginPassword = findViewById(R.id.loginPassword);
loginButton = findViewById(R.id.loginButton);
mAuth = FirebaseAuth.getInstance();
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = loginEmail.getText().toString();
String password = loginPassword.getText().toString();
loginUser(email, password);
}
});
}
private void loginUser(String email, String password) {
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(LoginActivity.this, "로그인 성공: " + user.getEmail(), Toast.LENGTH_SHORT).show();
// MainActivity로 이동
} else {
Toast.makeText(LoginActivity.this, "로그인 실패: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
5. 테스트하기
앱을 실행하고 회원가입한 후, 로그인을 통해 기능이 정상적으로 작동하는지 확인합니다. Firebase Console에서 Authentication 항목을 통해 가입한 사용자 정보를 확인할 수 있습니다.
6. 결론
이번 강좌에서는 자바를 활용한 안드로이드 앱 개발에서 회원가입 및 로그인 기능을 Firebase를 이용하여 간단히 구현해 보았습니다. 이 기초적인 기능을 바탕으로 더 발전된 앱을 만들기 위한 발판이 될 것입니다.
앞으로 더 많은 안드로이드 앱 개발에 대한 주제를 다룰 예정입니다. 여러분의 안드로이드 개발 여정에 도움이 되길 바랍니다!