멀티 프로세스 앱
Android 앱은 1개 또는 1개 이상의 프로세스로 구성될 수 있습니다. 따라서, 메인 프로세스가 아닌 다른 프로세스에서 서비스나 활동을 진행할 수 있습니다. 이를 활용하려면 프로세스나 액티비티 내에 android:process
속성을 추가합니다. 이후 Android 매니페스트 파일 내에서 정의를 다음과 같이 업데이트합니다:
<activity android:name=".YourActivity" android:process=":YourProcessName">
</activity>
<service android:name=".YourService" android:process=":YourProcessName">
</service>
서비스와 액티비티를 이렇게 정의하면, 메인 프로세스가 아닌 다른 프로세스에서 서비스와 액티비티가 진행됩니다.
기본 설정에 따라 메인 프로세스의 이름은 앱 패키지 이름과 동일합니다. 앱 패키지 이름이 com.example.myapp
라면, 메인 프로세스 이름도 이와 동일할 것입니다. 즉, YourActivity
와 YourService
가 com.example.myapp:YourProcessName
라는 이름의 프로세스에서 진행될 것입니다.
Adjust SDK는 현재로서 한 앱에서 1개 이상의 프로세스 트래킹은 지원하지 않습니다. 앱이 멀티 프로세스를 사용한다면 메인 프로세스 이름을 AdjustConfig
객체에서 설정해야 합니다.
String appToken = "{YourAppToken}";
String environment = AdjustConfig.ENVIRONMENT_SANDBOX; // or AdjustConfig.ENVIRONMENT_PRODUCTION
AdjustConfig config = new AdjustConfig(this, appToken, environment);
config.setProcessName("com.example.myapp");
Adjust.onCreate(config);
메인 프로세스의 이름은 변경 가능합니다. 이름을 변경하려면 매니페스트 파일에서 앱
의 android:process
속성을 변경합니다.
<application android:name=".YourApp" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:process=":YourMainProcessName">
</application>
메인 프로세스 이름을 위와 같이 설정했다면, 이를 AdjustConfig
객체에서도 설정해야 합니다.
config.setProcessName("com.example.myapp:YourMainProcessName");
이는 Adjust SDK에 메인 프로세스 이름에 대해 알릴 것입니다. SDK는 메인 프로세스 외의 프로세스는 초기화하지 않을 것입니다. 다른 프로세스에 대해 SDK를 사용하려 한다면, 다음의 로그 메시지가 나타날 것입니다,
05-06 17:15:06.885 8743-8743/com.example.myapp:YourProcessName I/Adjust﹕ Skipping initialization in background process (com.example.myapp:YourProcessName)
프로세스 이름을 설정하지 않고 멀티 프로세스에서 SDK를 호출하면, SDK의 멀티 인스턴스를 초기화하게 됩니다. 이는 Android의 각기 다른 프로세스들이 동일한 메모리 공간을 공유하지 않기 때문입니다. 이는 예측하지 못한 행동을 야기할 수 있습니다. Adjust는 다음 중 하나의 방법을 권장합니다:
- 멀티 프로세스 앱에 대해 항상 메인 프로세스 이름을 설정합니다.
- 1개 이상의 프로세스에서 Adjust SDK를 사용하지 않습니다.