1<?xml version="1.0" encoding="utf-8"?>
2<!--
3/*
4 * Copyright (C) 2022 The Android Open Source Project
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18-->
19
20<!-- versionCode is set to placeholder module version which will
21     be replaced during build. Do not change it!  -->
22<manifest
23    xmlns:android="http://schemas.android.com/apk/res/android"
24    package="com.android.ondevicepersonalization.services"
25    android:versionCode="0">
26    <uses-sdk android:minSdkVersion="33"/>
27
28    <uses-permission android:name="android.permission.INTERNET"/>
29    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
30    <uses-permission android:name="android.permission.READ_BASIC_PHONE_STATE"/>
31
32    <!-- Required for the app to find all packages onboarded to ODP -->
33    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
34
35    <!-- Required for persisting scheduled jobs -->
36    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
37
38    <!-- Required for reading device configs -->
39    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
40
41    <!-- Required for reading common states from AdServices -->
42    <uses-permission android:name="android.permission.ACCESS_ADSERVICES_STATE"/>
43
44    <!-- Required for modifying personalization state -->
45    <permission android:name="android.permission.ondevicepersonalization.MODIFY_ONDEVICEPERSONALIZATION_STATE"
46                android:protectionLevel="signature|privileged"/>
47
48    <!-- Required for sending measurement events -->
49    <permission android:name="android.permission.ondevicepersonalization.NOTIFY_MEASUREMENT_EVENT"
50                android:protectionLevel="signature|privileged"/>
51
52    <!-- Required for invoking the system server service -->
53    <permission android:name="android.permission.ondevicepersonalization.ACCESS_SYSTEM_SERVER_SERVICE"
54                android:protectionLevel="signature"/>
55
56    <uses-permission android:name="android.permission.ondevicepersonalization.ACCESS_SYSTEM_SERVER_SERVICE" />
57
58    <application android:name=".OnDevicePersonalizationApplication"
59                 android:forceQueryable="true">
60        <service android:name=".OnDevicePersonalizationManagingServiceImpl" android:exported="true" >
61            <intent-filter>
62                <action android:name="android.OnDevicePersonalizationService" />
63            </intent-filter>
64        </service>
65        <service android:name=".OnDevicePersonalizationDebugServiceImpl" android:exported="true">
66            <intent-filter>
67                <action android:name="android.OnDevicePersonalizationDebugService"/>
68            </intent-filter>
69        </service>
70
71        <!-- The JobService schedules all jobs for ODP using SPE framework. -->
72        <service
73            android:name="com.android.ondevicepersonalization.services.sharedlibrary.spe.OdpJobService"
74            android:exported="false"
75            android:permission="android.permission.BIND_JOB_SERVICE">
76        </service>
77
78        <service
79            android:name="com.android.ondevicepersonalization.services.download.OnDevicePersonalizationDownloadProcessingJobService"
80            android:exported="false"
81            android:permission="android.permission.BIND_JOB_SERVICE">
82        </service>
83        <service
84            android:name="com.android.ondevicepersonalization.services.maintenance.OnDevicePersonalizationMaintenanceJobService"
85            android:exported="false"
86            android:permission="android.permission.BIND_JOB_SERVICE">
87        </service>
88        <service
89            android:name="com.android.ondevicepersonalization.services.data.user.UserDataCollectionJobService"
90            android:exported="false"
91            android:permission="android.permission.BIND_JOB_SERVICE">
92        </service>
93        <service
94            android:name="com.android.ondevicepersonalization.services.download.mdd.MddJobService"
95            android:exported="false"
96            android:permission="android.permission.BIND_JOB_SERVICE">
97        </service>
98        <service
99            android:name="com.android.ondevicepersonalization.services.reset.ResetDataJobService"
100            android:exported="false"
101            android:permission="android.permission.BIND_JOB_SERVICE">
102        </service>
103        <service
104            android:name="com.android.ondevicepersonalization.services.data.errors.AggregateErrorDataReportingService"
105            android:exported="false"
106            android:permission="android.permission.BIND_JOB_SERVICE">
107        </service>
108        <service android:name="com.android.ondevicepersonalization.libraries.plugin.internal.PluginExecutorService"
109                 android:isolatedProcess="true"
110                 android:process=":plugin_disable_art_image_"
111                 android:exported="false" >
112        </service>
113        <service
114            android:name="com.android.ondevicepersonalization.services.federatedcompute.OdpExampleStoreService"
115            android:enabled="true"
116            android:exported="true"
117            android:permission="android.permission.BIND_EXAMPLE_STORE_SERVICE">
118            <intent-filter>
119                <action android:name="android.federatedcompute.EXAMPLE_STORE" />
120            </intent-filter>
121        </service>
122        <service android:name="com.android.ondevicepersonalization.services.federatedcompute.OdpResultHandlingService"
123                 android:enabled="true" android:exported="true" >
124            <intent-filter>
125                <action android:name="android.federatedcompute.COMPUTATION_RESULT" />
126            </intent-filter>
127        </service>
128        <service
129            android:name="com.android.ondevicepersonalization.services.inference.IsolatedModelService"
130            android:isolatedProcess="true"
131            android:allowSharedIsolatedProcess="true"
132            android:exported="false">
133        </service>
134
135        <!-- On BOOT_COMPLETED receiver for registering jobs -->
136        <receiver android:name=".OnDevicePersonalizationBroadcastReceiver"
137                  android:enabled="true"
138                  android:exported="false">
139            <intent-filter>
140                <action android:name="android.intent.action.BOOT_COMPLETED" />
141            </intent-filter>
142        </receiver>
143    </application>
144</manifest>
145