본문 바로가기
카테고리 없음

android cpu

by pishio 2025. 2. 20.

Cordova 앱에서 CPU를 최대한 할당받기 위해 사용할 수 있는 설정과 최적화 방법을 정리해보겠습니다.

1. 웹뷰(WebView) 최적화

Cordova 앱은 기본적으로 웹뷰에서 실행되므로, 웹뷰의 성능을 최대한 활용해야 합니다.

① Crosswalk 사용 (Android 5~7 대응)

Crosswalk을 사용하면 성능이 향상되지만, 최신 Android에서는 기본적으로 성능이 좋아졌기 때문에 필요하지 않을 수도 있습니다.

cordova plugin add cordova-plugin-crosswalk-webview

📌 장점: 최신 Chrome 엔진을 사용하여 성능 개선
📌 단점: 앱 크기가 커질 수 있음

② 하드웨어 가속 활성화

AndroidManifest.xml에 다음을 추가하면 CPU와 GPU를 최대한 활용할 수 있습니다.

<application android:hardwareAccelerated="true">

📌 효과: CSS 애니메이션, WebGL, HTML5 Canvas 성능 향상

③ WebView 렌더링 최적화

config.xml에 추가:

<preference name="android:WebViewRenderPriority" value="HIGH" />
<preference name="android:HardwareAcceleration" value="true" />

📌 효과: WebView의 렌더링 우선순위를 높여 성능 향상

2. JavaScript 코드 최적화

Cordova 앱은 JavaScript로 동작하므로 CPU 사용을 최적화하는 것이 중요합니다.

① Web Workers 사용 (멀티스레딩)

JavaScript는 기본적으로 단일 스레드지만, Web Worker를 사용하면 별도 스레드에서 작업을 수행할 수 있습니다.

const worker = new Worker('worker.js');
worker.postMessage('start');

worker.onmessage = function(e) {
    console.log('Worker response:', e.data);
};

📌 효과: 무거운 계산 작업을 메인 스레드에서 분리하여 UI 반응성을 높임

② 요청 애니메이션 프레임 (requestAnimationFrame) 사용

타이머(setInterval) 대신 requestAnimationFrame()을 사용하면 부드러운 렌더링이 가능합니다.

function update() {
    // CPU 작업 수행
    requestAnimationFrame(update);
}
update();

📌 효과: 불필요한 CPU 사용을 줄이고 브라우저 최적화 기능을 활용

3. 네이티브 코드 활용 (Plugin 사용)

Cordova는 기본적으로 JavaScript로 동작하지만, 네이티브 플러그인을 활용하면 성능을 극대화할 수 있습니다.

① Native Java 플러그인 작성 (CPU 우선순위 높이기)

📌 Java에서 스레드 우선순위를 높이는 방법:

Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_DISPLAY);

📌 효과: 스레드의 실행 우선순위를 높여 더 많은 CPU 리소스를 확보

4. Foreground Service 사용 (백그라운드 제한 방지)

Android 8.0(Oreo)부터 백그라운드 서비스가 제한되므로, Foreground Service를 사용하면 CPU를 안정적으로 확보할 수 있습니다.

📌 Foreground Service 플러그인 설치

cordova plugin add cordova-plugin-background-mode

📌 Foreground 실행 코드

cordova.plugins.backgroundMode.enable();

📌 효과: 앱이 백그라운드에서도 CPU를 계속 사용할 수 있도록 허용

5. 배터리 최적화 해제 (CPU 제한 방지)

Android의 배터리 최적화를 해제하면 CPU 사용 제한을 피할 수 있습니다.
📌 설정 요청 코드:

window.open('settings://battery_optimization');

📌 AndroidManifest.xml 추가:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

📌 효과: Android의 절전 모드에서 CPU 사용을 제한하는 것을 방지

6. 특정 기기에서 Big Core 사용 강제

📌 일부 고성능 기기에서는 Big.LITTLE 구조를 사용하여 **Big Core(CPU의 고성능 코어)**를 사용할 수 있습니다.
📌 Java 코드에서 특정 Core를 강제로 사용하게 설정할 수도 있습니다.

Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_AUDIO);

📌 효과: 고성능 코어(Big Core)에 작업을 할당하여 성능 극대화

정리

방법 설명 효과
하드웨어 가속 android:hardwareAccelerated="true" GPU 활용 극대화
Web Workers 멀티스레딩 활용 메인 스레드 부하 감소
Foreground Service cordova-plugin-background-mode 백그라운드에서도 CPU 확보
Battery Optimization 해제 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 절전 모드에서 CPU 제한 방지
네이티브 코드 최적화 setThreadPriority() 사용 스레드 실행 우선순위 증가

위 방법들을 조합하면 Cordova 앱에서 CPU를 최대한 활용할 수 있습니다!

댓글