Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DMA
- sscanf
- HDR
- gparted
- 디스크 축소
- interrupt handler
- context
- 디스크립터
- context switch
- 멀티프로세싱
- pagefile.sys
- sprintf
- jenkins
- layouts
- 소캣
- fscanf
- 젠킨스
- memcmp
- 프레임버퍼
- interrupt context
- makefile
- 환경 변수
- usb2.0
- ubuntu
- 속도저하
- fprintf
- 문자형 디바이스 파일
- activities
- Shared Folder
- intents
Archives
- Today
- Total
do{학습}while
AOSP) 모바일 앱을 위한 SDK 개발해보기 본문
SDK란
SDK는 Software Development Kit의 약어로서 소프트웨어를 개발을 위한 도구입니다. SDK는 프레임워크, 라이브러리, API와 같이 누군가 이미 구현이 되어 있어 편리하게 기능을 이용할 수 있는 도구입니다.
음 예를 들어보자면, 비동기 처리를 구현하기 위해서 직접 구현을이 가능하겠지만 구현하기까지 많은 시간이 소요가 될 것 입니다. 그래서 개발자들은 이러한 수고를 덜기 위해 RxJava와 같이 이미 다른 개발자들이 구현하여 재사용을 할 수 있는 코드를 가져와 프로그램을 짤때 이용하게 됩니다.
SDK 생성해보기
프로젝트 생성
앱 상에서 SDK 사용 테스트를 진행하기 위해 프로젝트를 생성해줍니다.

SDK(라이브러리 모듈) 생성
- file -> New -> Create New Module
- Android Library 선택
- 모듈 이름 정하기

위에 과정을 통해 라이브러리를 생성해 줄 수 있습니다.
클래스 구현
package com.example.customlogger_sdk;
import android.content.Context;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Logger {
private static String TAG = "CustomLogger";
private static boolean isDebug = true;
private static Context appContext;
public static void saveLogsToFile(String fileName) {
if (appContext == null) {
throw new IllegalStateException("Logger is not initialized. Call Logger.init() first.");
}
File logFile = new File(appContext.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), fileName);
try (FileWriter writer = new FileWriter(logFile, true)) {
writer.append("Saved logs at: ").append(String.valueOf(System.currentTimeMillis())).append("\n");
writer.append("---- LOG BEGIN ----\n");
writer.append("Your log message here\n"); // 실제 로그를 추가하는 로직 필요
writer.append("---- LOG END ----\n\n");
Log.d(TAG, "Logs saved to: " + logFile.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
}
// 초기화 메서드
public static void init(Context context, boolean debugMode) {
appContext = context.getApplicationContext();
isDebug = debugMode;
}
// 디버그 로그 출력
public static void d(String message) {
if (isDebug) {
Log.d(TAG, message);
}
}
// 에러 로그 출력
public static void e(String message) {
Log.e(TAG, message);
}
// 로그 태그를 사용자 정의
public static void setCustomTag(String customTag) {
TAG = customTag;
}
public static void log(int logLevel, String message) {
switch (logLevel) {
case Log.VERBOSE:
Log.v(TAG, message);
break;
case Log.DEBUG:
Log.d(TAG, message);
break;
case Log.INFO:
Log.i(TAG, message);
break;
case Log.WARN:
Log.w(TAG, message);
break;
case Log.ERROR:
Log.e(TAG, message);
break;
default:
Log.d(TAG, message);
}
}
}
Logger라는 클래스를 통해서 커스텀 Log를 제공하는 목적을 가진 라이브러리를 생성하였습니다.
기능을 간략하게 설명하자면 디버그 로그 출력, 에러 로그 출력, 로그 태그 사용자화, 전체 로그를 특정 파일에 기록하는 기능 등이 있습니다.
앱 상에서 라이브러리 사용
package com.example.customlog;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.example.customlogger_sdk.Logger;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Logger 초기화
Logger.init(this, true);
// 로그 출력
Logger.d("Debug log");
Logger.e("Error log");
// 로그 파일에 저장
Logger.saveLogsToFile("app_log.txt");
}
}위에서 생성한 라이브러리를 앱 상에서 사용하는 코드입니다.
결과 화면

이렇게 간단하게 SDK를 생성하고 활용해 보았습니다. 다음 글에서는 AOSP을 활용한 SDK를 생성해보는 글을 업로드해보겠습니다.
'AOSP' 카테고리의 다른 글
| AOSP) 안드로이드 시스템 내 SDK 생성 (1) | 2024.09.05 |
|---|---|
| AOSP) Android.bp 작성하는 법 (0) | 2024.09.05 |
| AOSP) 빌드 시스템 [3] : 빌드 중, 빌드 끝 (0) | 2024.08.29 |
| AOSP) 빌드 시스템 [2] : Product, Board, Module 정보 전달 (0) | 2024.08.28 |
| AOSP) 빌드 시스템[1] : Build System (0) | 2024.08.27 |