1/* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17syntax = "proto3"; 18 19package apex.proto; 20 21option java_package = "com.android.apex"; 22option java_outer_classname = "Protos"; 23 24message ApexManifest { 25 26 // APEX Name. Note that this can be different from what PackageManager sees. 27 // This is used to identify an APEX and to mount under /apex directory. 28 string name = 1; 29 30 // Version Number 31 int64 version = 2; 32 33 // Pre Install Hook 34 string preInstallHook = 3; 35 36 // Post Install Hook 37 // This feature is not supported. 38 string postInstallHook = 4 [ deprecated = true ]; 39 40 // Version Name 41 string versionName = 5; 42 43 // Signals whenever this APEX doesn't contain any executable code. 44 // If this field is set to true, then apexd will mount this apex 45 // with MS_NOEXEC flag. 46 bool noCode = 6; 47 48 // List of native libs which can be used by other apexes or system. 49 repeated string provideNativeLibs = 7; 50 51 // List of native libs which this apex uses from other apexes or system. 52 repeated string requireNativeLibs = 8; 53 54 // List of JNI libs. 55 // linkerconfig/libnativeloader use this field so that java libraries can 56 // load JNI libraries in the same apex. 57 // This is supposed to be filled by the build system with libraries which are 58 // marked as "is_jni: true" from the list of "native_shared_libs". 59 repeated string jniLibs = 9; 60 61 // List of libs required that are located in a shared libraries APEX. The 62 // Android platform only checks whether this list is non-empty, and by default 63 // the Android build system never sets this. This field can be used when 64 // producing or processing an APEX using libraries in /apex/sharedlibs (see 65 // `provideSharedApexLibs` field) to store some information about the 66 // libraries. 67 repeated string requireSharedApexLibs = 10; 68 69 // Whether this APEX provides libraries to be shared with other APEXs. This 70 // causes libraries contained in the APEX to be made available under 71 // /apex/sharedlibs . 72 bool provideSharedApexLibs = 11; 73 74 message CompressedApexMetadata { 75 76 // Valid only for compressed APEX. This field contains the root digest of 77 // the original_apex contained inside CAPEX. 78 string originalApexDigest = 1; 79 } 80 81 // Exists only for compressed APEX 82 CompressedApexMetadata capexMetadata = 12; 83 84 // Indicates that this APEX can be updated without rebooting device. 85 bool supportsRebootlessUpdate = 13; 86 87 // VNDK version for apexes depending on a specific version of VNDK libs. 88 string vndkVersion = 14; 89 90 // Deprecated. 91 // Whether this vendor APEX needs to be activated in bootstrap phase. 92 // For new APEX, please use `bootstrap` instead. 93 // Vendor APEX become bootstrap APEX if either `vendorBootstrap` 94 // or `bootstrap` is set to true. 95 bool vendorBootstrap = 15 [ deprecated = true ]; 96 97 // Whether this APEX needs to be activated in bootstrap phase. 98 bool bootstrap = 16; 99} 100