1.1개요
Android Studio 용 라이브러리인 AAR 적용 및 라이브러리 사용을 위한 설정 내용을 기술합니다.
1.2환경 설정
1.2.1build.gradle (app)
SdkVersion 설정
compileSdkVersion : 26 이상
minSdkVersion : 23
targetSdkVersion: 26 이상
AAR사용에 필요한 추가 라이브러리를 설정.
android { compileSdkVersion 261 defaultConfig { minSdkVersion 232 targetSdkVersion 263 ... } ... } dependencies { ... implementation 'com.android.support:appcompat-v7:26.1.0'4 implementation 'com.google.code.gson:gson:2.8.5'5 implementation 'com.squareup:otto:1.3.8'6 }
1.2.2프로젝트에 AAR 추가하기
메뉴의 File > Project Structure를 선택하여 "Project Structure"화면을 띄운다.
좌측 상단의 "+" 버튼을 눌러 Create New Module 창을 띄운다.
"Import JAR/AAR Package"를 선택한 다음 "Next" 버튼을 누른다.
그림 1-1AS_Create New Module
AAR 파일을 선택 후 "Finish" 버튼을 누른다.
그림 1-2AS_Create New Module_select file
app 모듈 Dependencies 탭을 선택한다.
우측 "+" 버튼을 누르면 나오는 팝업에서 "3. Module dependency"를 선택한다.
그림 1-3AS_app dependencies
"NexusWaivLib" 모듈을 선택 후 "OK" 버튼을 누른다.
그림 1-4AS_Choose Modules
아래 그림과 같이 "NexusWebRTCLib" 모듈이 추가된 것을 확인할 수 있다.
그림 1-5AS_Project Structure_aar added
1.2.3AndroidMenifest.xml
권한추가
<uses-permission android:name="android.permission.INTERNET" />7 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />8 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 9 <uses-permission android:name="android.permission.BLUETOOTH" />10 <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />11
서비스 추가
<service android:name="kr.co.nexus.waivlib.service.WaivWebService" android:enabled="true" android:exported="false" />12
1.2.4배터리 최적화 예외 처리
Doze 모드 진입을 하지않기 위해 배터리 최적화 예외 처리를 해주어야 한다.
// Battery Optimizations private void procIgnoreBatteryOptimizations(final Context context) { PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); boolean isWhiteListing = false; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { if (pm != null) { isWhiteListing = pm.isIgnoringBatteryOptimizations(getPackageName()); } } Log.i(TAG, "isWhiteListing: " + isWhiteListing); if (isWhiteListing == false) { AlertDialog.Builder setdialog = new AlertDialog.Builder(MainActivity.this); setdialog.setTitle("권한이 필요합니다.") .setMessage("어플을 사용하기 위해서는 해당 어플을 \"배터리 사용량 최적화\" 목록에서 제외하는 권한이 필요합니다. 계속하시겠습니까?") .setPositiveButton("예", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + context.getPackageName())); context.startActivity(intent); Log.i(TAG, "getPackageName: " + context.getPackageName()); } }) .setNegativeButton("아니오", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "권한 설정을 취소했습니다.", Toast.LENGTH_SHORT).show(); } }) .create() .show(); } }
- targetSdkVersion 값과 동일하거나 커야함.To Content
- Webview의 WebRTC 지원이 API23(Lollipop 5.x) 이상부터 지원To Content
- 2018년 11월 부터 기존 앱을 구글 플레이 등록 시 targetSdkVersion을 26이상으로 강제함.To Content
- AAR 내에서 사용하는 라이브러리 추가To Content
- AAR 내에서 사용하는 라이브러리 추가(GSON)To Content
- AAR 내에서 사용하는 라이브러리 추가(otto eventBus)To Content
- 네트워크를 사용하기 위한 권한To Content
- 오디오를 설정을 변경하기 위한 권한To Content
- 오디오를 사용하기 위한 권한To Content
- Bluetooth 설정 및 페어링된 기기에 연결하며 연결을 수락하기 위한 권한To Content
- 배터리 최적화 예외 처리를 위한 권한To Content
- 전화기능을 처리하기 위한 서비스To Content