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" />121.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