--- title: "App Safer Android 적용 방법" slug: "security-appsafer-overview" tags: ["App Safer", "App Safer Android"] updated: 2026-09-17T09:09:33Z published: 2026-09-17T09:09:33Z canonical: "guide-fin.ncloud-docs.com/security-appsafer-overview" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-fin.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # App Safer Android 적용 방법 App Safer Android는 네이버 클라우드 플랫폼이 제공하는 모바일 보안 솔루션으로서, 모바일 기기나 서비스에 위협이 되는 행위로부터 모바일 애플리케이션의 안전한 실행 환경을 유지하기 위해, 애플리케이션의 변조 여부와 모바일 보안 침해 시도들을 탐지하고, 그 결과를 분석하여 제공하는 모바일 보안 솔루션입니다. ## App Safer Android 특징 - Rooting 탐지 - Emulator 탐지 - Debugging 탐지 - Memory Tampered 탐지 - Speedhack 탐지 - App Integrity Tampered 탐지 - Unauthorized Signature 탐지 - 캡처 방지 ## App Safer Android 지원 환경 | 파일 이름 | OS 버전 | 아키텍처 | | --- | --- | --- | | appsafer-android-sdk-${version}.aar | Android 4.1(API 16) 이상 | armeabi-v7a, arm64-v8a, x86, x86_64 | ## App Safer Android SDK 적용 가이드 1. 프로젝트 아래에 libs 디렉토리를 생성합니다. 2. build.gradle 파일에 repositories를 추가합니다. ``` repositories { flatDir { dirs 'libs' } } ``` 1. build.gradle 파일의 dependencies에 AAR을 추가합니다. - 유형 1. 특정 버전을 추가 ``` dependencies { implementation name:'appsafer-android-sdk-${vesion}', ext:'aar' } ``` - 유형 2. 버전에 상관없이 추가 ``` dependencies { implementation fileTree(dir: 'libs', include: 'appsafer-android-sdk-*.aar') } ``` ### 권한 및 App Safer Key 설정 App Safer Android를 적용하려면 AndroidManifest.xml에 meta-data 태그를 이용하여 App Safer Key를 추가하고, 아래의 권한을 적용해야 합니다. meta-data 내 android:name 속성의 값은 반드시 **com.ncp.appsafer.key**로 작성해야 합니다. - 필수 권한 - `android.permission.INTERNET` ``` ``` ## App Safer Android API 목록 - **com.nbp.appsafer.AppSafer** | 이름 | 설명 | | --- | --- | | [start](/docs/security-appsafer-overview#start) | App Safer Android 실행 | | [setUserId](/docs/security-appsafer-overview#setUserId) | 사용자 식별자 설정 | | [getUserId](/docs/security-appsafer-overview#getUserId) | 설정된 사용자 식별자 조회 | | [getUserDeviceId](/docs/security-appsafer-overview#getUserDeviceId) | 디바이스 식별자 조회 | | [preventScreenshot](/docs/security-appsafer-overview#preventScreenshot) | 캡처 방지 | ## App Safer Android API 설명 ### start App Safer Android를 시작합니다. 참고 start() 함수는 네트워크 통신을 수행하므로 UI(Main) 스레드에서 호출할 경우 ANR이 발생할 수 있습니다. 따라서 별도의 스레드에서 호출하는 것을 권장합니다. ``` @Throws(AppSaferException::class) fun start(context: Context) ``` ``` void start(Context context) throws AppSaferException; ``` #### 매개변수 | 매개변수 | 설명 | | --- | --- | | context | ApplicationContext | #### 예제 ``` runBlocking { AppSafer.INSTANCE.start(applicationContext) } ``` ``` Thread thread = new Thread(new Runnable() { @Override public void run() { AppSafer.INSTANCE.start(getApplicationContext()); } }); thread.start(); ``` ### setUserId 초기화 및 탐지 이벤트 발생 시 App Safer 서버에 전송되는 로그에 사용자 ID를 포함하고자 할 때 호출합니다. 참고 해당 API는 start() 호출 전 설정이 필요합니다. ``` @Throws(AppSaferException::class) fun setUserId(userId: String) ``` ``` void setUserId(String userId) throws AppSaferException; ``` #### 매개변수 | 매개변수 | 설명 | | --- | --- | | userId | 사용자 식별자 | #### 예제 ``` AppSafer.INSTANCE.userId = "ExampleUserId" ``` ``` AppSafer.INSTANCE.setUserId("ExampleUserId"); ``` ### getUserId 설정한 사용자 식별자를 받아옵니다. ``` @Throws(AppSaferException::class) fun getUserId(): String ``` ``` String getUserId() throws AppSaferException; ``` #### 반환 값 | 반환 값 | 설명 | | --- | --- | | String | 설정한 사용자 식별자 | #### 예제 ``` val userId = AppSafer.INSTANCE.userId ``` ``` String userId = AppSafer.INSTANCE.getUserId(); ``` ### getUserDeviceId 디바이스 식별자를 받아옵니다. ``` @Throws(AppSaferException::class) fun getUserDeviceId(): String ``` ``` String getUserDeviceId() throws AppSaferException; ``` #### 반환 값 | 반환 값 | 설명 | | --- | --- | | String | 디바이스 식별자 | #### 예제 ``` val userId = AppSafer.INSTANCE.userDeviceId ``` ``` String userDeviceId = AppSafer.INSTANCE.getUserDeviceId(); ``` ### preventScreenshot App Safer 가 적용된 애플리케이션의 스크린샷, 녹화, 최근 앱의 미리 보기 화면을 보호합니다. 이 API는 Activity 단위로 호출이 필요합니다. ``` fun preventScreenshot(window: Window): Int ``` ``` int preventScreenshot(Window window) ``` #### 매개변수 | 매개변수 | 설명 | | --- | --- | | window | Activity의 Window 인스턴스 | #### 예제 ``` AppSafer.INSTANCE.preventScreenshot(window) ``` ``` AppSafer.INSTANCE.preventScreenshot(getWindow()); ``` --- ## App Safer Android Use Case **SDK-Kotlin** ``` import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import com.nbp.appsafer.AppSafer import java.io.File import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // prevent screenshot AppSafer.INSTANCE.preventScreenshot(window) // set user id AppSafer.INSTANCE.userId = "ExampleUserId" // get user id val userId = AppSafer.INSTANCE.userId // app safer start Thread thread = new Thread(new Runnable() { @Override public void run() { AppSafer.INSTANCE.start(applicationContext) // get udid val udid = AppSafer.INSTANCE.userDeviceId } }); thread.start(); } } ``` **SDK-Java** ``` import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.nbp.appsafer.AppSafer; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // prevent screenshot AppSafer.INSTANCE.preventScreenshot(getWindow()); // set user id AppSafer.INSTANCE.setUserId("ExampleUserId"); // get user id String userId = AppSafer.INSTANCE.getUserId(); // app safer start runBlocking { AppSafer.INSTANCE.start(applicationContext); // get udid String udid = AppSafer.INSTANCE.getUserDeviceId(); } } } ``` --- 참고 본 서비스는 글로벌 리전 서비스로도 제공됩니다.