1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  ~ Copyright (C) 2022 The Android Open Source Project
4  ~
5  ~ Licensed under the Apache License, Version 2.0 (the "License");
6  ~ you may not use this file except in compliance with the License.
7  ~ You may obtain a copy of the License at
8  ~
9  ~      http://www.apache.org/licenses/LICENSE-2.0
10  ~
11  ~ Unless required by applicable law or agreed to in writing, software
12  ~ distributed under the License is distributed on an "AS IS" BASIS,
13  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  ~ See the License for the specific language governing permissions and
15  ~ limitations under the License.
16  -->
17
18<!-- versionCode is set to placeholder module version which will
19     be replaced during build. Do not change it!  -->
20<manifest
21    xmlns:android="http://schemas.android.com/apk/res/android"
22    package="com.android.federatedcompute.services"
23    android:versionCode="0">
24
25    <!-- Define the permission to call federated compute clients implemented ExampleStoreService -->
26    <permission
27        android:name="android.permission.BIND_EXAMPLE_STORE_SERVICE"
28        android:protectionLevel="signature" />
29
30    <!-- Required for finding calling package info -->
31    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
32    <!-- Required for persisting scheduled jobs -->
33    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
34    <!-- Used for scheduling connectivity jobs -->
35    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
36    <uses-permission android:name="android.permission.INTERNET" />
37     <!-- Required for reading device configs -->
38    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
39    <!--  Permission to call federated compute clients implemented ExampleStoreService  -->
40    <uses-permission
41        android:name="android.permission.BIND_EXAMPLE_STORE_SERVICE" />
42
43    <application android:forceQueryable="true">
44        <service android:name=".FederatedComputeManagingServiceImpl" android:exported="true">
45            <intent-filter>
46                <action android:name="android.federatedcompute.FederatedComputeService"/>
47            </intent-filter>
48        </service>
49
50        <!-- The JobService schedules all jobs for FederatedCompute using SPE framework. -->
51        <service
52            android:name="com.android.federatedcompute.services.sharedlibrary.spe.FederatedComputeJobService"
53            android:exported="false"
54            android:permission="android.permission.BIND_JOB_SERVICE">
55        </service>
56
57        <!-- The JobService runs in main process, so when JobScheduler wakes up, it allows us to
58             decide not to start training without incurring overhead. -->
59        <service android:name="com.android.federatedcompute.services.training.FederatedJobService"
60                 android:exported="false"
61                 android:permission="android.permission.BIND_JOB_SERVICE">
62        </service>
63        <service
64            android:name="com.android.federatedcompute.services.encryption.BackgroundKeyFetchJobService"
65            android:exported="false"
66            android:permission="android.permission.BIND_JOB_SERVICE">
67        </service>
68        <service
69            android:name="com.android.federatedcompute.services.scheduling.DeleteExpiredJobService"
70            android:exported="false"
71            android:permission="android.permission.BIND_JOB_SERVICE">
72        </service>
73        <service android:name="com.android.federatedcompute.services.training.IsolatedTrainingService"
74                 android:isolatedProcess="true" android:exported="false" >
75        </service>
76        <!-- On BOOT_COMPLETED receiver for registering jobs -->
77        <receiver android:name=".FederatedComputeBroadcastReceiver"
78            android:enabled="true"
79            android:exported="false">
80            <intent-filter>
81                <action android:name="android.intent.action.BOOT_COMPLETED" />
82            </intent-filter>
83        </receiver>
84    </application>
85</manifest>