Migrate apex/sdkextensions to packages/modules/SdkExtensions

BUG: 156286599
Test: TH and Forrest (mainline_modules)
Merged-In: I6f562fe5e01179c48c39cd72ff381fc800d0d14d
Change-Id: I0009d286205d7942c2d681936bfba38e074700d2
This commit is contained in:
Baligh Uddin
2020-05-22 18:43:20 +00:00
parent 80a18c0a7b
commit 5b49b29350
25 changed files with 0 additions and 587 deletions

View File

@@ -1,84 +0,0 @@
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package {
default_visibility: [":__subpackages__"],
}
apex {
name: "com.android.sdkext",
defaults: [ "com.android.sdkext-defaults" ],
binaries: [ "derive_sdk" ],
prebuilts: [ "cur_sdkinfo" ],
manifest: "manifest.json",
min_sdk_version: "current",
}
apex_defaults {
name: "com.android.sdkext-defaults",
updatable: true,
min_sdk_version: "R",
java_libs: [ "framework-sdkextensions" ],
prebuilts: [
"derive_sdk.rc",
],
key: "com.android.sdkext.key",
certificate: ":com.android.sdkext.certificate",
}
sdk {
name: "sdkextensions-sdk",
java_sdk_libs: [ "framework-sdkextensions" ],
}
apex_key {
name: "com.android.sdkext.key",
public_key: "com.android.sdkext.avbpubkey",
private_key: "com.android.sdkext.pem",
}
android_app_certificate {
name: "com.android.sdkext.certificate",
certificate: "com.android.sdkext",
}
python_binary_host {
name: "gen_sdkinfo",
srcs: [
"sdk.proto",
"gen_sdkinfo.py",
],
proto: {
canonical_path_from_root: false,
},
version: {
py3: {
embedded_launcher: true,
},
},
}
gensrcs {
name: "cur_sdkinfo_src",
srcs: [""],
tools: [ "gen_sdkinfo" ],
cmd: "$(location) -v 0 -o $(out)",
}
prebuilt_etc {
name: "cur_sdkinfo",
src: ":cur_sdkinfo_src",
filename: "sdkinfo.binarypb",
installable: false,
}

View File

@@ -1,2 +0,0 @@
dariofreni@google.com
hansson@google.com

View File

@@ -1,10 +0,0 @@
{
"presubmit": [
{
"name": "CtsSdkExtensionsTestCases"
},
{
"name": "sdkextensions_e2e_tests"
}
]
}

View File

@@ -1,51 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@@ -1,35 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIGIzCCBAugAwIBAgIUXuDL7QvzQh7S6rihWz2KRvCFVT0wDQYJKoZIhvcNAQEL
BQAwgZ8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
b2lkMRswGQYDVQQDDBJjb20uYW5kcm9pZC5zZGtleHQxIjAgBgkqhkiG9w0BCQEW
E2FuZHJvaWRAYW5kcm9pZC5jb20wIBcNMTkxMjAyMTQyNDM0WhgPNDc1NzEwMjgx
NDI0MzRaMIGfMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG
A1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwH
QW5kcm9pZDEbMBkGA1UEAwwSY29tLmFuZHJvaWQuc2RrZXh0MSIwIAYJKoZIhvcN
AQkBFhNhbmRyb2lkQGFuZHJvaWQuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAxFvZZ6ES1oqAu1K74/ZxnC3SOhHnLISLBgJEe7DqtdpuNFAwvdVO
RL/HULhDbjYlOhpU2x3SavDIZZ2lRfiS9Q+M25WftxTRHVjBcpgwbV77TVxPKlAa
tVN2lUVOY+s4QAVMNIXjC4kCKK/pCQtacH715EtdV47fWdg/Nx4iP/Aord8k3KGI
9iI2ZOUjaugTRxu5lKRNDrv0bw5rEzyYmDyMud+kR/iS3/5oog57wPE0ffAkZXWE
p3L2Cejre3ekCizsvVh6EmH6ForKLtL6f0z5Zir1f4R9+YcENspTlJR3pDhg7y3I
uTQT/iDCtV0l+g2PjGZPEeAQHND3+kDQR7Sno/WC1Nhws6vcu1MdrC+kIh1ewx4y
8moy/yqb5M98PJDzTSi/AOTB/OiqLXo/T8rjLBmirs9y3fTT6gJ6qXxOWgt8dle9
7TBfa84Xi8uVY61c+A+YI0nLal7QDPsP3RPv5sJSQ9x9YnweVfD9Q0EOi52sSNu+
QuN/kcUrMgPgha20VhfH/CkkPDyIp6aZyHHM69MIl+cYEm8vPa5uy3dosuRomT0f
I4HOBjULDIuj+rIi+Rg3qHvmpuejwZXI/FBNWIhLEUG3ytgksjMaBoYAYflGdrcj
BQexuF3EO+j4uo7JGjNcaT7wRoCH9gt29VHckDg2qz6VWXrlpmME4UkCAwEAAaNT
MFEwHQYDVR0OBBYEFISN2nmUHllgPZMZ62U7mU3ZxzlXMB8GA1UdIwQYMBaAFISN
2nmUHllgPZMZ62U7mU3ZxzlXMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADggIBAFHIwyBNIVyHXUsDUdcjxfojXQsF/BCL9ehE3pgdkvDfQanaIREWn0nc
oCFDFkYMRqaXOGC5TKq4OCjXOLsdfODt8HQ3F9J1B0ghQ5tfOdw7xDugNAszqP/Q
h7kpvqLTycjrqOeZ5KjxEEYtP/KlUmALgOKcTcSH+XhWyxhjF4j24T9F2yJRr3/A
r1NGU/djH953bHKC8OpJ2teUpDLA4TxVp/EhslH2eVigF80c/w74QPLEWkD9zv/4
YeRg/R5N83zHs99NtlWMIeHfK6fUbzMyaSZtvm+jK20tkByQb/OQRed+drk25MtL
68IRvxqri367qRScdpTZbu0ByLO4X8gFdubRUWr+tcO4pZX+DJRVriExbOkU2xhS
Vtslq23V/hwTuUNm1CXjR70mPS13BTmHrIQDqLoIw/WTQlGh+vxnlAFRIHM3KB2c
OdzUBu+NcB4aZEd0KKtct600A0DKPr1MQPb5jDq9wEtPSQYwMF0nRFNnXltbrXMd
4hhwnhKr74fVMUmb+7eQP56XE/Nk4D+npMO54vv1pav+DI2/nxCND9BOLBweY38p
Tvd2RjesMok0zXuVXiCIu4GEpwo7WkSnv25xrb0Ey2M8QWnGNnCcX7Kv6ip3RdWy
HiN0G8RJrs/yNEVSDRx8ZhtwTpXVPQxbARbmhNF4/fnolElkmrMP
-----END CERTIFICATE-----

View File

@@ -1,55 +0,0 @@
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
cc_defaults {
name: "derive_sdk-defaults",
srcs: [
"derive_sdk.cpp",
"sdk.proto",
],
proto: {
type: "lite",
static: true,
},
min_sdk_version: "current",
shared_libs: ["liblog"],
// static c++/libbase for smaller size
stl: "c++_static",
static_libs: ["libbase"],
}
cc_binary {
name: "derive_sdk",
defaults: [ "derive_sdk-defaults" ],
apex_available: [ "com.android.sdkext" ],
visibility: [ "//frameworks/base/apex/sdkextensions" ]
}
// Work around testing using a 64-bit test suite on 32-bit test device by
// using a prefer32 version of derive_sdk in testing.
cc_binary {
name: "derive_sdk_prefer32",
defaults: [ "derive_sdk-defaults" ],
compile_multilib: "prefer32",
stem: "derive_sdk",
apex_available: [ "test_com.android.sdkext" ],
visibility: [ "//frameworks/base/apex/sdkextensions/testing" ],
installable: false,
}
prebuilt_etc {
name: "derive_sdk.rc",
src: "derive_sdk.rc",
installable: false,
}

View File

@@ -1,79 +0,0 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "derive_sdk"
#include <algorithm>
#include <dirent.h>
#include <iostream>
#include <sys/stat.h>
#include <vector>
#include <android-base/file.h>
#include <android-base/logging.h>
#include <android-base/properties.h>
#include "frameworks/base/apex/sdkextensions/derive_sdk/sdk.pb.h"
using com::android::sdkext::proto::SdkVersion;
int main(int, char**) {
std::unique_ptr<DIR, decltype(&closedir)> apex(opendir("/apex"), closedir);
if (!apex) {
LOG(ERROR) << "Could not read /apex";
return EXIT_FAILURE;
}
struct dirent* de;
std::vector<std::string> paths;
while ((de = readdir(apex.get()))) {
std::string name = de->d_name;
if (name[0] == '.' || name.find('@') != std::string::npos) {
// Skip <name>@<ver> dirs, as they are bind-mounted to <name>
continue;
}
std::string path = "/apex/" + name + "/etc/sdkinfo.binarypb";
struct stat statbuf;
if (stat(path.c_str(), &statbuf) == 0) {
paths.push_back(path);
}
}
std::vector<int> versions;
for (const auto& path : paths) {
std::string contents;
if (!android::base::ReadFileToString(path, &contents, true)) {
LOG(ERROR) << "failed to read " << path;
continue;
}
SdkVersion sdk_version;
if (!sdk_version.ParseFromString(contents)) {
LOG(ERROR) << "failed to parse " << path;
continue;
}
LOG(INFO) << "Read version " << sdk_version.version() << " from " << path;
versions.push_back(sdk_version.version());
}
auto itr = std::min_element(versions.begin(), versions.end());
std::string prop_value = itr == versions.end() ? "0" : std::to_string(*itr);
if (!android::base::SetProperty("build.version.extensions.r", prop_value)) {
LOG(ERROR) << "failed to set sdk_info prop";
return EXIT_FAILURE;
}
LOG(INFO) << "R extension version is " << prop_value;
return EXIT_SUCCESS;
}

View File

@@ -1,5 +0,0 @@
service derive_sdk /apex/com.android.sdkext/bin/derive_sdk
user nobody
group nobody
oneshot
disabled

View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
syntax = "proto3";
package com.android.sdkext.proto;
option java_outer_classname = "SdkProto";
option optimize_for = LITE_RUNTIME;
message SdkVersion {
int32 version = 1;
}

View File

@@ -1,49 +0,0 @@
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package {
default_visibility: [ ":__pkg__" ]
}
filegroup {
name: "framework-sdkextensions-sources",
srcs: [
"java/**/*.java",
],
path: "java",
visibility: [ "//frameworks/base" ] // For the "global" stubs.
}
java_sdk_library {
name: "framework-sdkextensions",
srcs: [ ":framework-sdkextensions-sources" ],
defaults: ["framework-module-defaults"],
// TODO(b/155480189) - Remove naming_scheme once references have been resolved.
// Temporary java_sdk_library component naming scheme to use to ease the transition from separate
// modules to java_sdk_library.
naming_scheme: "framework-modules",
permitted_packages: [ "android.os.ext" ],
installable: true,
visibility: [
"//frameworks/base/apex/sdkextensions",
"//frameworks/base/apex/sdkextensions/testing",
],
hostdex: true, // for hiddenapi check
apex_available: [
"com.android.sdkext",
"test_com.android.sdkext",
],
}

View File

@@ -1 +0,0 @@
// Signature format: 2.0

View File

@@ -1 +0,0 @@
// Signature format: 2.0

View File

@@ -1 +0,0 @@
// Signature format: 2.0

View File

@@ -1 +0,0 @@
// Signature format: 2.0

View File

@@ -1,9 +0,0 @@
// Signature format: 2.0
package android.os.ext {
public class SdkExtensions {
method public static int getExtensionVersion(int);
}
}

View File

@@ -1 +0,0 @@
// Signature format: 2.0

View File

@@ -1,75 +0,0 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.os.ext;
import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.Build.VERSION_CODES;
import android.os.SystemProperties;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Methods for interacting with the extension SDK.
*
* This class provides information about the extension SDK version present
* on this device. Use the {@link #getExtensionVersion(int) getExtension} to
* query for the extension version for the given SDK version.
* @hide
*/
@SystemApi
public class SdkExtensions {
private static final int R_EXTENSION_INT;
static {
// Note: when adding more extension versions, the logic that records current
// extension versions when saving a rollback must also be updated.
// At the time of writing this is in RollbackManagerServiceImpl#getExtensionVersions()
R_EXTENSION_INT = SystemProperties.getInt("build.version.extensions.r", 0);
}
/**
* Values suitable as parameters for {@link #getExtensionVersion(int)}.
* @hide
*/
@IntDef(value = { VERSION_CODES.R })
@Retention(RetentionPolicy.SOURCE)
public @interface SdkVersion {}
private SdkExtensions() { }
/**
* Return the version of the extension to the given SDK.
*
* @param sdk the SDK version to get the extension version of.
* @see SdkVersion
* @throws IllegalArgumentException if sdk is not an sdk version with extensions
*/
public static int getExtensionVersion(@SdkVersion int sdk) {
if (sdk < VERSION_CODES.R) {
throw new IllegalArgumentException(String.valueOf(sdk) + " does not have extensions");
}
if (sdk == VERSION_CODES.R) {
return R_EXTENSION_INT;
}
return 0;
}
}

View File

@@ -1,5 +0,0 @@
<HTML>
<BODY>
Provides APIs to interface with the SDK extensions.
</BODY>
</HTML>

View File

@@ -1,19 +0,0 @@
import sdk_pb2
import sys
if __name__ == '__main__':
argv = sys.argv[1:]
if not len(argv) == 4 or sorted([argv[0], argv[2]]) != ['-o', '-v']:
print('usage: gen_sdkinfo -v <version> -o <output-file>')
sys.exit(1)
for i in range(len(argv)):
if sys.argv[i] == '-o':
filename = sys.argv[i+1]
if sys.argv[i] == '-v':
version = int(sys.argv[i+1])
proto = sdk_pb2.SdkVersion()
proto.version = version
with open(filename, 'wb') as f:
f.write(proto.SerializeToString())

View File

@@ -1,4 +0,0 @@
{
"name": "com.android.sdkext",
"version": 300000000
}

View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
syntax = "proto3";
package com.android.sdkext.proto;
option java_outer_classname = "SdkProto";
option optimize_for = LITE_RUNTIME;
message SdkVersion {
int32 version = 1;
}

View File

@@ -1,46 +0,0 @@
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
apex_test {
name: "test_com.android.sdkext",
visibility: [ "//system/apex/tests" ],
defaults: ["com.android.sdkext-defaults"],
manifest: "test_manifest.json",
prebuilts: [ "sdkinfo_45" ],
file_contexts: ":com.android.sdkext-file_contexts",
installable: false, // Should never be installed on the systemimage
multilib: {
prefer32: {
binaries: ["derive_sdk_prefer32"],
},
},
// The automated test infra ends up building this apex for 64+32-bit and
// then installs it on a 32-bit-only device. Work around this weirdness
// by preferring 32-bit.
compile_multilib: "prefer32",
}
genrule {
name: "sdkinfo_45_src",
out: [ "sdkinfo.binarypb" ],
tools: [ "gen_sdkinfo" ],
cmd: "$(location) -v 45 -o $(out)",
}
prebuilt_etc {
name: "sdkinfo_45",
src: ":sdkinfo_45_src",
filename: "sdkinfo.binarypb",
installable: false,
}

View File

@@ -1,4 +0,0 @@
{
"name": "com.android.sdkext",
"version": 2147483647
}