Merge "Delete VNDK definition tools" am: e0d81eed8f am: 8c7213fa16 am: 461143c61e
Original change: https://android-review.googlesource.com/c/platform/development/+/2216377 Change-Id: I1096cf1d135bb486bf652be42899663ecf0e74ff Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// Copyright (C) 2017 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_applicable_licenses: ["Android-Apache-2.0"],
|
||||
}
|
||||
|
||||
subdirs = [
|
||||
"tools",
|
||||
]
|
||||
@@ -1,2 +0,0 @@
|
||||
andrewhsieh@google.com
|
||||
loganchien@google.com
|
||||
@@ -1,24 +0,0 @@
|
||||
//
|
||||
// Copyright (C) 2017 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_applicable_licenses: ["Android-Apache-2.0"],
|
||||
}
|
||||
|
||||
subdirs = [
|
||||
"header-checker",
|
||||
"vtable-dumper",
|
||||
]
|
||||
@@ -1,8 +0,0 @@
|
||||
[MESSAGES CONTROL]
|
||||
|
||||
disable=
|
||||
fixme,
|
||||
invalid-name,
|
||||
missing-docstring,
|
||||
ungrouped-imports,
|
||||
useless-object-inheritance,
|
||||
@@ -1,4 +0,0 @@
|
||||
andrewhsieh@google.com
|
||||
hsinyichen@google.com
|
||||
loganchien@google.com
|
||||
tyanh@google.com
|
||||
@@ -1,124 +0,0 @@
|
||||
VNDK Definition Tool
|
||||
====================
|
||||
|
||||
VNDK definition tool was designed to classify all shared libraries in the
|
||||
system partition and give suggestions to copy necessary libraries to the vendor
|
||||
partition.
|
||||
|
||||
## Usage
|
||||
|
||||
To run VNDK definition tool, you will need three inputs:
|
||||
|
||||
1. The system and vendor image for your target
|
||||
2. Android Treble reference image
|
||||
3. Eligible VNDK list from Google (e.g. eligible-list-v3.0.csv)
|
||||
|
||||
The high-level overview of the command line usage is:
|
||||
|
||||
$ python3 ./vndk_definition_tool.py vndk \
|
||||
--system "/path/to/your/product_out/system" \
|
||||
--vendor "/path/to/your/product_out/vendor" \
|
||||
--aosp-system "/path/to/aosp/generic/system" \
|
||||
--tag-file "eligible-list-v3.0.csv"
|
||||
|
||||
This command will print several lines such as:
|
||||
|
||||
vndk-sp: libexample1.so
|
||||
vndk-sp-ext: libexample2.so
|
||||
extra-vendor-libs: libexample3.so
|
||||
|
||||
The output implies:
|
||||
|
||||
1. `libexample1.so` should be copied to `/system/lib[64]/vndk-sp`.
|
||||
2. `libexample2.so` should be copied to `/vendor/lib[64]/vndk-sp`.
|
||||
3. `libexample3.so` should be copied to `/vendor/lib[64]`.
|
||||
|
||||
|
||||
# Makefile Boilerplates
|
||||
|
||||
There are some boilerplates in `templates` directory that can automate the
|
||||
process to copy shared libraries. Please copy a boilerplate, rename it as
|
||||
`Android.mk`, and replace the placeholders with corresponding values:
|
||||
|
||||
* `##_VNDK_SP_##` should be replaced by library names tagged with `vndk_sp`.
|
||||
|
||||
* `##_VNDK_SP_EXT_##` should be replaced by library names tagged with
|
||||
`vndk_sp_ext`.
|
||||
|
||||
* `##_EXTRA_VENDOR_LIBS_##` should be replaced by library names tagged with
|
||||
`extra_vendor_libs`.
|
||||
|
||||
* `$(YOUR_DEVICE_NAME)` has to be replaced by your own device product name.
|
||||
|
||||
VNDK definition tool can fill in the library names and generate an `Android.mk`
|
||||
when the `--output-format=make` is specified:
|
||||
|
||||
$ python3 ./vndk_definition_tool.py vndk \
|
||||
--system "/path/to/your/product_out/system" \
|
||||
--vendor "/path/to/your/product_out/vendor" \
|
||||
--aosp-system "/path/to/aosp/generic/system" \
|
||||
--tag-file "eligible-list-v3.0.csv" \
|
||||
--output-format=make
|
||||
|
||||
These boilerplates only define the modules to copy shared libraries.
|
||||
Developers have to add the phony package name to `PRODUCT_PACKAGES` variable in
|
||||
the `device.mk` for their devices.
|
||||
|
||||
PRODUCT_PACKAGES += $(YOUR_DEVICE_NAME)-vndk
|
||||
|
||||
|
||||
## Ignore Subdirectories
|
||||
|
||||
Some devices keep their vendor modules in `/system/vendor`. To run VNDK
|
||||
definition tool for those devices, we have to skip `/system/vendor` and specify
|
||||
it with `--vendor` option. For example:
|
||||
|
||||
python3 vndk_definition_tool.py vndk \
|
||||
--system ${ANDROID_PRODUCT_OUT}/system \
|
||||
--system-dir-ignored vendor \
|
||||
--vendor ${ANDROID_PRODUCT_OUT}/system/vendor \
|
||||
# ...
|
||||
|
||||
|
||||
## Implicit Dependencies
|
||||
|
||||
If there are implicit dependencies, such as `dlopen()`, we can specify them in
|
||||
a dependency file and load the dependency file with `--load-extra-deps`. The
|
||||
dependency file format is simple: (a) each line stands for a dependency, and
|
||||
(b) the file before the colon depends on the file after the colon. For
|
||||
example, `libart.so` depends on `libart-compiler.so`:
|
||||
|
||||
/system/lib64/libart.so: /system/lib64/libart-compiler.so
|
||||
|
||||
And then, run VNDK definition tool with:
|
||||
|
||||
$ python3 vndk_definition_tool.py vndk \
|
||||
--system ${ANDROID_PRODUCT_OUT}/system \
|
||||
--vendor ${ANDROID_PRODUCT_OUT}/vendor \
|
||||
--aosp-system ${ANDROID_PRODUCT_OUT}/../generic_arm64_a \
|
||||
--tag-file eligible-list-v3.0.csv \
|
||||
--load-extra-deps dlopen.dep
|
||||
|
||||
|
||||
## Remarks
|
||||
|
||||
To run VNDK definition tool against an image (`.img`), run the following
|
||||
command to mount the images and run `vndk_definition_tool.py` with `sudo`:
|
||||
|
||||
$ simg2img system.img system.raw.img
|
||||
|
||||
$ simg2img vendor.img vendor.raw.img
|
||||
|
||||
$ mkdir system
|
||||
|
||||
$ mkdir vendor
|
||||
|
||||
$ sudo mount -o loop,ro system.raw.img system
|
||||
|
||||
$ sudo mount -o loop,ro vendor.raw.img vendor
|
||||
|
||||
$ sudo python3 vndk_definition_tool.py vndk \
|
||||
--system system \
|
||||
--vendor vendor \
|
||||
--aosp-system /path/to/aosp/generic/system \
|
||||
--tag-file eligible-list-v3.0.csv
|
||||
@@ -1,13 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>VNDK Dependency Insight</title>
|
||||
<link rel="stylesheet" href="insight.css" media="all" />
|
||||
<script type="text/javascript" src="insight.js"></script>
|
||||
<script type="text/javascript" src="insight-data.js"></script>
|
||||
</head>
|
||||
|
||||
<body></body>
|
||||
</html>
|
||||
@@ -1,24 +0,0 @@
|
||||
(function () {
|
||||
var strs = [
|
||||
'/system/lib/libc.so',
|
||||
'/system/lib/libm.so',
|
||||
'/system/lib/libdl.so',
|
||||
'/system/lib64/libc.so',
|
||||
'/system/lib64/libm.so',
|
||||
'/system/lib64/libdl.so',
|
||||
'll-ndk',
|
||||
'hl-ndk',
|
||||
'bionic/libc',
|
||||
'bionic/libm',
|
||||
'bionic/libdl',
|
||||
];
|
||||
var mods = [
|
||||
[0, 32, [6], [[1, 2]], [], [8]],
|
||||
[1, 32, [6], [], [0], [9]],
|
||||
[2, 32, [6], [], [0], [10]],
|
||||
[3, 64, [6], [[5], [4]], [], [8]],
|
||||
[4, 64, [7], [[5]], [3], [9]],
|
||||
[5, 64, [7], [], [3, 4], [9, 10]],
|
||||
];
|
||||
insight.init(document, strs, mods);
|
||||
})();
|
||||
@@ -1,116 +0,0 @@
|
||||
p, li, td, th, h1, h2, h3 {
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
#control {
|
||||
background-color: #eefaff;
|
||||
border: 1px solid #3399ff;
|
||||
border-collapse: collapse;
|
||||
margin: 0px 0px 20px 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#control td {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#control_menu:link {
|
||||
display: block;
|
||||
width: 5em;
|
||||
height: 20pt;
|
||||
text-align: center;
|
||||
line-height: 20pt;
|
||||
color: #ffffff;
|
||||
background-color: #3399ff;
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#control_menu:visited {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#control_menu:hover {
|
||||
color: #ffffff;
|
||||
background-color: #0000ff;
|
||||
}
|
||||
|
||||
.menu {
|
||||
list-style-type: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.menu li {
|
||||
display: inline;
|
||||
padding: 0px 1em 0px 0px;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #2244ff;
|
||||
text-decoration: none;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #2244ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #ff3322;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #ff3322;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#module_table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#module_tbody td,
|
||||
#module_tbody th {
|
||||
border: 1px solid #dddddd;
|
||||
padding: 3px 20px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#module_tbody th {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
#module_tbody h1,
|
||||
#module_tbody h2,
|
||||
#module_tbody p {
|
||||
font-size: 100%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#module_tbody ol,
|
||||
#module_tbody ul {
|
||||
margin: .3em 0px;
|
||||
padding: 0px 0px 0px 2em;
|
||||
}
|
||||
|
||||
#module_tbody tr:target {
|
||||
background-color: #fffff0;
|
||||
transition: background-color 800ms ease;
|
||||
}
|
||||
|
||||
#module_tbody p.module_src_dir {
|
||||
font-family: monospace;
|
||||
font-size: 80%;
|
||||
color: #aaaaaa;
|
||||
}
|
||||
|
||||
#no_module_placeholder {
|
||||
font-style: italic;
|
||||
font-family: sans-serif;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -1,509 +0,0 @@
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
module.exports = factory();
|
||||
} else {
|
||||
root.insight = factory();
|
||||
}
|
||||
} (this, function () {
|
||||
'use strict';
|
||||
|
||||
let document;
|
||||
let strsData, mods, tagIds;
|
||||
let domPathInput, domFuzzyMatch;
|
||||
let domTBody;
|
||||
let domPlaceholder = null;
|
||||
let placeholderVisible = false;
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// DOM Helper Functions
|
||||
//--------------------------------------------------------------------------
|
||||
function domNewText(text) {
|
||||
return document.createTextNode(text);
|
||||
}
|
||||
|
||||
function domNewElem(type) {
|
||||
let dom = document.createElement(type);
|
||||
for (let i = 1; i < arguments.length; ++i) {
|
||||
let arg = arguments[i];
|
||||
if (typeof(arg) == 'string' || typeof(arg) == 'number') {
|
||||
arg = domNewText(arg)
|
||||
}
|
||||
dom.appendChild(arg);
|
||||
}
|
||||
return dom;
|
||||
}
|
||||
|
||||
function domNewLink(text, onClick) {
|
||||
let dom = domNewElem('a', text);
|
||||
dom.setAttribute('href', '#');
|
||||
dom.addEventListener('click', onClick);
|
||||
return dom;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Module Row
|
||||
//--------------------------------------------------------------------------
|
||||
function countDeps(deps) {
|
||||
let direct = 0;
|
||||
let indirect = 0;
|
||||
if (deps.length > 0) {
|
||||
direct = deps[0].length;
|
||||
for (let i = 1; i < deps.length; ++i) {
|
||||
indirect += deps[i].length;
|
||||
}
|
||||
}
|
||||
return [direct, indirect];
|
||||
}
|
||||
|
||||
function Module(id, modData) {
|
||||
this.id = id;
|
||||
this.path = strsData[modData[0]];
|
||||
this.cls = modData[1];
|
||||
this.tagIds = new Set(modData[2]);
|
||||
this.deps = modData[3];
|
||||
this.users = modData[4];
|
||||
this.srcDirs = modData[5].map(function (x) { return strsData[x]; });
|
||||
|
||||
[this.numDirectDeps, this.numIndirectDeps] = countDeps(this.deps);
|
||||
this.numUsers = this.users.length;
|
||||
|
||||
this.dom = null;
|
||||
this.visible = false;
|
||||
|
||||
this.linkDoms = Object.create(null);
|
||||
}
|
||||
|
||||
Module.prototype.isTagged = function (tagId) {
|
||||
return this.tagIds.has(tagId);
|
||||
}
|
||||
|
||||
Module.prototype.createModuleLinkDom = function (mod) {
|
||||
let dom = domNewElem('a', mod.path);
|
||||
dom.setAttribute('href', '#mod_' + mod.id);
|
||||
dom.setAttribute('data-mod-id', mod.id);
|
||||
dom.setAttribute('data-owner-id', this.id);
|
||||
dom.addEventListener('click', onModuleLinkClicked);
|
||||
dom.addEventListener('mouseover', onModuleLinkMouseOver);
|
||||
dom.addEventListener('mouseout', onModuleLinkMouseOut);
|
||||
|
||||
this.linkDoms[mod.id] = dom;
|
||||
|
||||
return dom;
|
||||
}
|
||||
|
||||
Module.prototype.createModuleRelationsDom = function (parent, label,
|
||||
modIds) {
|
||||
parent.appendChild(domNewElem('h2', label));
|
||||
|
||||
let domOl = domNewElem('ol');
|
||||
parent.appendChild(domOl);
|
||||
for (let modId of modIds) {
|
||||
domOl.appendChild(
|
||||
domNewElem('li', this.createModuleLinkDom(mods[modId])));
|
||||
}
|
||||
}
|
||||
|
||||
Module.prototype.createModulePathTdDom = function (parent) {
|
||||
let domTd = domNewElem('td');
|
||||
domTd.appendChild(domNewElem('p', this.createModuleLinkDom(this)));
|
||||
for (let dir of this.srcDirs) {
|
||||
let domP = domNewElem('p', 'source: ' + dir);
|
||||
domP.setAttribute('class', 'module_src_dir');
|
||||
domTd.appendChild(domP);
|
||||
}
|
||||
parent.appendChild(domTd);
|
||||
}
|
||||
|
||||
Module.prototype.createTagsTdDom = function (parent) {
|
||||
let domTd = domNewElem('td');
|
||||
for (let tag of this.tagIds) {
|
||||
domTd.appendChild(domNewElem('p', strsData[tag]));
|
||||
}
|
||||
parent.appendChild(domTd);
|
||||
}
|
||||
|
||||
Module.prototype.createDepsTdDom = function (parent) {
|
||||
let domTd = domNewElem(
|
||||
'td', this.numDirectDeps + ' + ' + this.numIndirectDeps);
|
||||
|
||||
let deps = this.deps;
|
||||
if (deps.length > 0) {
|
||||
this.createModuleRelationsDom(domTd, 'Direct', deps[0]);
|
||||
|
||||
for (let i = 1; i < deps.length; ++i) {
|
||||
this.createModuleRelationsDom(domTd, 'Indirect #' + i, deps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
parent.appendChild(domTd);
|
||||
}
|
||||
|
||||
Module.prototype.createUsersTdDom = function (parent) {
|
||||
let domTd = domNewElem('td', this.numUsers);
|
||||
|
||||
let users = this.users;
|
||||
if (users.length > 0) {
|
||||
this.createModuleRelationsDom(domTd, 'Direct', users);
|
||||
}
|
||||
|
||||
parent.appendChild(domTd);
|
||||
}
|
||||
|
||||
Module.prototype.createDom = function () {
|
||||
let dom = this.dom = domNewElem('tr');
|
||||
dom.setAttribute('id', 'mod_' + this.id);
|
||||
|
||||
this.createModulePathTdDom(dom);
|
||||
this.createTagsTdDom(dom);
|
||||
this.createDepsTdDom(dom);
|
||||
this.createUsersTdDom(dom)
|
||||
}
|
||||
|
||||
Module.prototype.showDom = function () {
|
||||
hidePlaceholder();
|
||||
if (this.visible) {
|
||||
return;
|
||||
}
|
||||
if (this.dom === null) {
|
||||
this.createDom();
|
||||
}
|
||||
domTBody.appendChild(this.dom);
|
||||
this.visible = true;
|
||||
}
|
||||
|
||||
Module.prototype.hideDom = function () {
|
||||
if (!this.visible) {
|
||||
return;
|
||||
}
|
||||
this.dom.parentNode.removeChild(this.dom);
|
||||
this.visible = false;
|
||||
}
|
||||
|
||||
function createModulesFromData(stringsData, modulesData) {
|
||||
return modulesData.map(function (modData, id) {
|
||||
return new Module(id, modData);
|
||||
});
|
||||
}
|
||||
|
||||
function createTagIdsFromData(stringsData, mods) {
|
||||
let tagIds = new Set();
|
||||
for (let mod of mods) {
|
||||
for (let tag of mod.tagIds) {
|
||||
tagIds.add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
tagIds = Array.from(tagIds);
|
||||
tagIds.sort(function (a, b) {
|
||||
return strsData[a].localeCompare(strsData[b]);
|
||||
});
|
||||
|
||||
return tagIds;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Data
|
||||
//--------------------------------------------------------------------------
|
||||
function init(doc, stringsData, modulesData) {
|
||||
document = doc;
|
||||
strsData = stringsData;
|
||||
|
||||
mods = createModulesFromData(stringsData, modulesData);
|
||||
tagIds = createTagIdsFromData(stringsData, mods);
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function (evt) {
|
||||
createControlDom(document.body);
|
||||
createTableDom(document.body);
|
||||
});
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Control
|
||||
//--------------------------------------------------------------------------
|
||||
function createControlDom(parent) {
|
||||
let domTBody = domNewElem('tbody');
|
||||
|
||||
createSelectionTrDom(domTBody);
|
||||
createAddByTagsTrDom(domTBody);
|
||||
createAddByPathTrDom(domTBody);
|
||||
|
||||
let domTable = domNewElem('table', domTBody);
|
||||
domTable.id = 'control';
|
||||
|
||||
let domFixedLink = domNewElem('a', 'Menu');
|
||||
domFixedLink.href = '#control';
|
||||
domFixedLink.id = 'control_menu';
|
||||
|
||||
parent.appendChild(domFixedLink);
|
||||
parent.appendChild(domTable);
|
||||
}
|
||||
|
||||
function createControlMenuTr(parent, label, items) {
|
||||
let domUl = domNewElem('ul');
|
||||
domUl.className = 'menu';
|
||||
for (let [txt, callback] of items) {
|
||||
domUl.appendChild(domNewElem('li', domNewLink(txt, callback)));
|
||||
}
|
||||
|
||||
let domTr = domNewElem('tr',
|
||||
createControlLabelTdDom(label),
|
||||
domNewElem('td', domUl));
|
||||
|
||||
parent.appendChild(domTr);
|
||||
}
|
||||
|
||||
function createSelectionTrDom(parent) {
|
||||
const items = [
|
||||
['All', onAddAll],
|
||||
['32-bit', onAddAll32],
|
||||
['64-bit', onAddAll64],
|
||||
['Clear', onClear],
|
||||
];
|
||||
|
||||
createControlMenuTr(parent, 'Selection:', items);
|
||||
}
|
||||
|
||||
function createAddByTagsTrDom(parent) {
|
||||
if (tagIds.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const items = tagIds.map(function (tagId) {
|
||||
return [strsData[tagId], function (evt) {
|
||||
evt.preventDefault(true);
|
||||
showModulesByTagId(tagId);
|
||||
}];
|
||||
});
|
||||
|
||||
createControlMenuTr(parent, 'Add by Tags:', items);
|
||||
}
|
||||
|
||||
function createAddByPathTrDom(parent) {
|
||||
let domForm = domNewElem('form');
|
||||
domForm.addEventListener('submit', onAddModuleByPath);
|
||||
|
||||
domPathInput = domNewElem('input');
|
||||
domPathInput.type = 'text';
|
||||
domForm.appendChild(domPathInput);
|
||||
|
||||
let domBtn = domNewElem('input');
|
||||
domBtn.type = 'submit';
|
||||
domBtn.value = 'Add';
|
||||
domForm.appendChild(domBtn);
|
||||
|
||||
domFuzzyMatch = domNewElem('input');
|
||||
domFuzzyMatch.setAttribute('id', 'fuzzy_match');
|
||||
domFuzzyMatch.setAttribute('type', 'checkbox');
|
||||
domFuzzyMatch.setAttribute('checked', 'checked');
|
||||
domForm.appendChild(domFuzzyMatch);
|
||||
|
||||
let domFuzzyMatchLabel = domNewElem('label', 'Fuzzy Match');
|
||||
domFuzzyMatchLabel.setAttribute('for', 'fuzzy_match');
|
||||
domForm.appendChild(domFuzzyMatchLabel);
|
||||
|
||||
let domTr = domNewElem('tr',
|
||||
createControlLabelTdDom('Add by Path:'),
|
||||
domNewElem('td', domForm));
|
||||
|
||||
parent.appendChild(domTr);
|
||||
}
|
||||
|
||||
function createControlLabelTdDom(text) {
|
||||
return domNewElem('td', domNewElem('strong', text));
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Table
|
||||
//--------------------------------------------------------------------------
|
||||
function createTableDom(parent) {
|
||||
domTBody = domNewElem('tbody');
|
||||
domTBody.id = 'module_tbody';
|
||||
|
||||
createTableHeaderDom(domTBody);
|
||||
|
||||
showPlaceholder();
|
||||
|
||||
let domTable = domNewElem('table', domTBody);
|
||||
domTable.id = 'module_table';
|
||||
|
||||
parent.appendChild(domTable);
|
||||
}
|
||||
|
||||
function createTableHeaderDom(parent) {
|
||||
const labels = [
|
||||
'Name',
|
||||
'Tags',
|
||||
'Dependencies (Direct + Indirect)',
|
||||
'Users',
|
||||
];
|
||||
|
||||
let domTr = domNewElem('tr');
|
||||
for (let label of labels) {
|
||||
domTr.appendChild(domNewElem('th', label));
|
||||
}
|
||||
|
||||
parent.appendChild(domTr);
|
||||
}
|
||||
|
||||
function createPlaceholder() {
|
||||
let domTd = domNewElem('td');
|
||||
domTd.setAttribute('colspan', 4);
|
||||
domTd.setAttribute('id', 'no_module_placeholder');
|
||||
domTd.appendChild(domNewText(
|
||||
'No modules are selected. Click the menu to select modules by ' +
|
||||
'names or categories.'));
|
||||
domPlaceholder = domNewElem('tr', domTd);
|
||||
}
|
||||
|
||||
function showPlaceholder() {
|
||||
if (placeholderVisible) {
|
||||
return;
|
||||
}
|
||||
placeholderVisible = true;
|
||||
if (domPlaceholder === null) {
|
||||
createPlaceholder();
|
||||
}
|
||||
domTBody.appendChild(domPlaceholder);
|
||||
}
|
||||
|
||||
function hidePlaceholder() {
|
||||
if (placeholderVisible) {
|
||||
domTBody.removeChild(domPlaceholder);
|
||||
placeholderVisible = false;
|
||||
}
|
||||
}
|
||||
|
||||
function hideAllModules() {
|
||||
for (let mod of mods) {
|
||||
mod.hideDom();
|
||||
}
|
||||
showPlaceholder();
|
||||
}
|
||||
|
||||
function showAllModules() {
|
||||
for (let mod of mods) {
|
||||
mod.showDom();
|
||||
}
|
||||
}
|
||||
|
||||
function showModulesByFilter(pred) {
|
||||
let numMatched = 0;
|
||||
for (let mod of mods) {
|
||||
if (pred(mod)) {
|
||||
mod.showDom();
|
||||
++numMatched;
|
||||
}
|
||||
}
|
||||
return numMatched;
|
||||
}
|
||||
|
||||
function showModulesByTagId(tagId) {
|
||||
showModulesByFilter(function (mod) {
|
||||
return mod.isTagged(tagId);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Events
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
function onAddModuleByPath(evt) {
|
||||
evt.preventDefault();
|
||||
|
||||
let path = domPathInput.value;
|
||||
domPathInput.value = '';
|
||||
|
||||
function escapeRegExp(pattern) {
|
||||
return pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
|
||||
}
|
||||
|
||||
function createFuzzyMatcher() {
|
||||
let parts = path.split(/\/+/g);
|
||||
let pattern = '';
|
||||
for (let part of parts) {
|
||||
pattern += escapeRegExp(part) + '(?:/[^\/]*)*';
|
||||
}
|
||||
pattern = RegExp(pattern);
|
||||
|
||||
return function (mod) {
|
||||
return pattern.test(mod.path);
|
||||
};
|
||||
}
|
||||
|
||||
function exactMatcher(mod) {
|
||||
return mod.path == path;
|
||||
}
|
||||
|
||||
let numMatched = showModulesByFilter(
|
||||
domFuzzyMatch.checked ? createFuzzyMatcher() : exactMatcher);
|
||||
|
||||
if (numMatched == 0) {
|
||||
alert('No matching modules: ' + path);
|
||||
}
|
||||
}
|
||||
|
||||
function onAddAll(evt) {
|
||||
evt.preventDefault(true);
|
||||
hideAllModules();
|
||||
showAllModules();
|
||||
}
|
||||
|
||||
function onAddAllClass(evt, cls) {
|
||||
evt.preventDefault(true);
|
||||
hideAllModules();
|
||||
showModulesByFilter(function (mod) {
|
||||
return mod.cls == cls;
|
||||
});
|
||||
}
|
||||
|
||||
function onAddAll32(evt) {
|
||||
onAddAllClass(evt, 32);
|
||||
}
|
||||
|
||||
function onAddAll64(evt) {
|
||||
onAddAllClass(evt, 64);
|
||||
}
|
||||
|
||||
function onClear(evt) {
|
||||
evt.preventDefault(true);
|
||||
hideAllModules();
|
||||
}
|
||||
|
||||
function onModuleLinkClicked(evt) {
|
||||
let modId = parseInt(evt.target.getAttribute('data-mod-id'), 10);
|
||||
mods[modId].showDom();
|
||||
}
|
||||
|
||||
function setDirectDepBackgroundColor(modId, ownerId, color) {
|
||||
let mod = mods[modId];
|
||||
let owner = mods[ownerId];
|
||||
let ownerLinkDoms = owner.linkDoms;
|
||||
if (mod.deps.length > 0) {
|
||||
for (let depId of mod.deps[0]) {
|
||||
if (depId in ownerLinkDoms) {
|
||||
ownerLinkDoms[depId].style.backgroundColor = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onModuleLinkMouseOver(evt) {
|
||||
let modId = parseInt(evt.target.getAttribute('data-mod-id'), 10);
|
||||
let ownerId = parseInt(evt.target.getAttribute('data-owner-id'), 10);
|
||||
setDirectDepBackgroundColor(modId, ownerId, '#ffff00');
|
||||
}
|
||||
|
||||
function onModuleLinkMouseOut(evt) {
|
||||
let modId = parseInt(evt.target.getAttribute('data-mod-id'), 10);
|
||||
let ownerId = parseInt(evt.target.getAttribute('data-owner-id'), 10);
|
||||
setDirectDepBackgroundColor(modId, ownerId, 'transparent');
|
||||
}
|
||||
|
||||
return {
|
||||
'init': init,
|
||||
};
|
||||
}));
|
||||
@@ -1,45 +0,0 @@
|
||||
var violatedLibs = {"system.private.bin": [
|
||||
["/system/bin/systembin", 2],
|
||||
["/system/bin/otherbin", 1]],
|
||||
"system.private.fwk-only": [
|
||||
["/system/lib/test.so", 1]],
|
||||
"vendor.private.bin": [
|
||||
["/vendor/lib/libvendor.so", 2],
|
||||
["/vendor/lib/vendor_2_lib.so", 1]]};
|
||||
var depData = [
|
||||
{"name": "/system/lib/oklib.so",
|
||||
"violate_count": 0,
|
||||
"violates": [],
|
||||
"depends": [],
|
||||
"tag": "system.public.vndk"},
|
||||
{"name": "/system/lib/oklib2.so",
|
||||
"violate_count": 0,
|
||||
"violates": [],
|
||||
"depends": ["/system/lib/oklib.so"],
|
||||
"tag": "system.private.fwk_only"},
|
||||
{"name": "/system/bin/systembin",
|
||||
"violate_count": 2,
|
||||
"violates": ["/vendor/lib/libvendor.so", "/vendor/lib/vendor_2_lib.so"],
|
||||
"depends": ["/system/lib/oklib.so"],
|
||||
"tag": "system.private.bin"},
|
||||
{"name": "/system/bin/otherbin",
|
||||
"violate_count": 1,
|
||||
"violates": ["/vendor/lib/libvendor.so"],
|
||||
"depends": ["/system/lib/oklib2.so"],
|
||||
"tag": "system.private.bin"},
|
||||
{"name": "/system/lib/test.so",
|
||||
"violate_count": 1,
|
||||
"violates": ["/vendor/lib/libvendor.so"],
|
||||
"depends": ["/system/lib/oklib.so"],
|
||||
"tag": "system.private.fwk-only"},
|
||||
{"name": "/vendor/lib/libvendor.so",
|
||||
"violate_count": 2,
|
||||
"violates": ["/system/lib/test.so", "/system/lib/oklib2.so"],
|
||||
"depends": [],
|
||||
"tag": "vendor.private.bin"},
|
||||
{"name": "/vendor/lib/vendor_2_lib.so",
|
||||
"violate_count": 1,
|
||||
"violates": ["/system/lib/test.so"],
|
||||
"depends": [],
|
||||
"tag": "vendor.private.bin"}
|
||||
];
|
||||
@@ -1,150 +0,0 @@
|
||||
.node {
|
||||
font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
fill: #bbb;
|
||||
fill-opacity: 0.2;
|
||||
}
|
||||
|
||||
.node--sys-pri {
|
||||
font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
fill: #ffaaaa;
|
||||
fill-opacity: 0.2;
|
||||
}
|
||||
|
||||
.node--sys-pub {
|
||||
font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
fill: #aaffaa;
|
||||
fill-opacity: 0.2;
|
||||
}
|
||||
|
||||
.node--source {
|
||||
fill: #2ca02c;
|
||||
fill-opacity: 1;
|
||||
}
|
||||
|
||||
.node--target {
|
||||
fill: #d62728;
|
||||
fill-opacity: 1;
|
||||
}
|
||||
|
||||
.node--selected {
|
||||
fill: #ff7000;
|
||||
fill-opacity: 1;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.node:hover,
|
||||
.node--sys-pri:hover,
|
||||
.node--sys-pub:hover {
|
||||
fill: #000;
|
||||
fill-opacity: 1;
|
||||
}
|
||||
|
||||
.node:hover,
|
||||
.node--sys-pri:hover,
|
||||
.node--sys-pub:hover,
|
||||
.node--source,
|
||||
.node--target {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.link {
|
||||
stroke: steelblue;
|
||||
stroke-opacity: 0.01;
|
||||
fill: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.link--violate {
|
||||
stroke: crimson;
|
||||
stroke-opacity: 0.1;
|
||||
stroke-width: 1.0px;
|
||||
fill: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.link--source,
|
||||
.link--target {
|
||||
stroke-opacity: 1;
|
||||
stroke-width: 2.5px;
|
||||
}
|
||||
|
||||
.link--source {
|
||||
stroke: orange;
|
||||
}
|
||||
|
||||
.link--target {
|
||||
stroke: #2ca02c;
|
||||
}
|
||||
|
||||
button.violate {
|
||||
background-color: white;
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
width: 100%;
|
||||
border: none;
|
||||
text-align: left;
|
||||
outline: none;
|
||||
font-size: 15px;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
button.violate.active,
|
||||
button.violate:hover {
|
||||
background-color: #bb0000;
|
||||
}
|
||||
button.violate-list {
|
||||
background-color: #ffdddd;
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
width: 100%;
|
||||
border: none;
|
||||
text-align: left;
|
||||
outline: none;
|
||||
font-size: 15px;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
button.violate-list.active,
|
||||
button.violate-list:hover {
|
||||
background-color: #ff6666;
|
||||
}
|
||||
.violate-list-sym {
|
||||
background-color: #ffaaaa;
|
||||
padding: 3px;
|
||||
width: 100%;
|
||||
border: none;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
span.cplusplus-sym {
|
||||
background-color: #ffffff;
|
||||
top: 10px;
|
||||
left: 20px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
border: solid 1px blue;
|
||||
font-size: 18px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#violate_list_column {
|
||||
width: 20%;
|
||||
height: 99vh;
|
||||
float: left;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
#dep_graph_column {
|
||||
width: 80%;
|
||||
height: 99vh;
|
||||
float: right;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
#reset_btn {
|
||||
position: absolute;
|
||||
margin: 20px;
|
||||
}
|
||||
@@ -1,340 +0,0 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
let diameter = 1280;
|
||||
let radius = diameter / 2;
|
||||
let innerRadius = radius - 240;
|
||||
|
||||
let cluster = d3.cluster();
|
||||
cluster.size([ 360, innerRadius ]);
|
||||
|
||||
let line = d3.radialLine();
|
||||
line.curve(d3.curveBundle.beta(0.85));
|
||||
line.radius(function(d) { return d.y; });
|
||||
line.angle(function(d) { return d.x / 180 * Math.PI; });
|
||||
|
||||
let link;
|
||||
let node;
|
||||
let selectedNode;
|
||||
let selectedSubNode;
|
||||
|
||||
function init() {
|
||||
let domListCol = document.createElement("div");
|
||||
domListCol.id = "violate_list_column";
|
||||
let domGraphCol = document.createElement("div");
|
||||
domGraphCol.id = "dep_graph_column";
|
||||
let domResetBtn = document.createElement("button");
|
||||
domResetBtn.id = "reset_btn";
|
||||
domResetBtn.innerHTML = "Reset";
|
||||
domGraphCol.appendChild(domResetBtn);
|
||||
|
||||
document.body.appendChild(domListCol);
|
||||
document.body.appendChild(domGraphCol);
|
||||
|
||||
let canvas = d3.select("#dep_graph_column").append("svg");
|
||||
canvas.attr("width", diameter + 200);
|
||||
canvas.attr("height", diameter);
|
||||
|
||||
let svg = canvas.append("g");
|
||||
svg.attr("transform", "translate(" + (radius + 100) + "," + radius + ")");
|
||||
|
||||
link = svg.append("g").selectAll(".link");
|
||||
node = svg.append("g").selectAll(".node");
|
||||
|
||||
showResult(depData, violatedLibs);
|
||||
}
|
||||
|
||||
function showList(depMap, violatedLibs) {
|
||||
function makeTitle(tagName) {
|
||||
let domTitle = document.createElement("div");
|
||||
let domText = document.createElement("h3");
|
||||
domText.innerHTML = tagName;
|
||||
domTitle.appendChild(domText);
|
||||
return domTitle;
|
||||
}
|
||||
function makeButton(libName, count) {
|
||||
let domButton = document.createElement("button");
|
||||
domButton.className = "violate";
|
||||
domButton.innerHTML = libName + " (" + count + ")";
|
||||
domButton.onclick = function() {
|
||||
this.classList.toggle("active");
|
||||
let currentList = this.nextElementSibling;
|
||||
if (currentList.style.display === "block") {
|
||||
currentList.style.display = "none";
|
||||
selectedNode = undefined;
|
||||
if (selectedSubNode) {
|
||||
selectedSubNode.classList.toggle("active");
|
||||
selectedSubNode.nextElementSibling.style.display = "none";
|
||||
selectedSubNode = undefined;
|
||||
}
|
||||
resetclicked();
|
||||
} else {
|
||||
currentList.style.display = "block";
|
||||
for (let i = 1; i < currentList.childElementCount; i += 2) {
|
||||
currentList.childNodes[i].style.display = "none";
|
||||
}
|
||||
if (selectedNode) {
|
||||
selectedNode.classList.toggle("active");
|
||||
selectedNode.nextElementSibling.style.display = "none";
|
||||
if (selectedSubNode) {
|
||||
selectedSubNode.classList.toggle("active");
|
||||
selectedSubNode.nextElementSibling.style.display = "none";
|
||||
selectedSubNode = undefined;
|
||||
}
|
||||
}
|
||||
selectedNode = domButton;
|
||||
mouseclicked(depMap[libName]);
|
||||
}
|
||||
};
|
||||
return domButton;
|
||||
}
|
||||
function makeSubButton(libName, count) {
|
||||
let domButton = document.createElement("button");
|
||||
domButton.className = "violate-list";
|
||||
domButton.innerHTML = libName + " (" + count + ")";
|
||||
domButton.onclick = function() {
|
||||
this.classList.toggle("active");
|
||||
let currentSubList = this.nextElementSibling;
|
||||
if (currentSubList.style.display === "block") {
|
||||
currentSubList.style.display = "none";
|
||||
selectedSubNode = undefined;
|
||||
} else {
|
||||
currentSubList.style.display = "block";
|
||||
for (let i = 0; i < currentSubList.childElementCount; i++) {
|
||||
if (currentSubList.childNodes[i].childElementCount > 0) {
|
||||
currentSubList.childNodes[i].childNodes[1].style.display = "none";
|
||||
}
|
||||
}
|
||||
if (selectedSubNode) {
|
||||
selectedSubNode.classList.toggle("active");
|
||||
selectedSubNode.nextElementSibling.style.display = "none";
|
||||
}
|
||||
selectedSubNode = domButton;
|
||||
}
|
||||
};
|
||||
return domButton;
|
||||
}
|
||||
function changeFormat(symbol) {
|
||||
let res = "";
|
||||
let i;
|
||||
for (i = 0; i < symbol.length; i++) {
|
||||
if (symbol.charAt(i) >= '0' && symbol.charAt(i) <= '9') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (i < symbol.length) {
|
||||
if (symbol.charAt(i) < '0' || symbol.charAt(i) > '9') {
|
||||
break;
|
||||
}
|
||||
let len = parseInt(symbol.substr(i, symbol.length));
|
||||
let count = 1;
|
||||
if (len < 10) {
|
||||
count = 0;
|
||||
}
|
||||
res = res + "::" + symbol.substr(i + 1 + count, len);
|
||||
i = i + 1 + count + len;
|
||||
}
|
||||
return res.substr(2, res.length);
|
||||
}
|
||||
function makeList(domList, list)
|
||||
{
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
domList.appendChild(makeButton(list[i][0], list[i][1]));
|
||||
let domDepList = document.createElement("div");
|
||||
let depItem = depMap[list[i][0]];
|
||||
let violates = depItem.data.violates;
|
||||
for (let j = 0; j < violates.length; j++) {
|
||||
let domDepLib = document.createElement("div");
|
||||
let tag = depMap[violates[j][0]].data.tag;
|
||||
let symbols = violates[j][1];
|
||||
let domDepButton = makeSubButton(violates[j][0] + " ["
|
||||
+ tag.substring(tag.lastIndexOf(".") + 1) + "]", symbols.length);
|
||||
for (let k = 0; k < symbols.length; k++) {
|
||||
let domDepSym = document.createElement("div");
|
||||
domDepSym.className = "violate-list-sym";
|
||||
domDepSym.innerHTML = symbols[k];
|
||||
if (symbols[k].indexOf("_Z") === 0) {
|
||||
let cplusplusSym = document.createElement("span");
|
||||
cplusplusSym.className = "cplusplus-sym";
|
||||
cplusplusSym.innerHTML =
|
||||
changeFormat(symbols[k].substr(2, symbols[k].length));
|
||||
domDepSym.appendChild(cplusplusSym);
|
||||
domDepSym.onmouseover = function(e) {
|
||||
e.currentTarget.style.position = "relative";
|
||||
e.currentTarget.childNodes[1].style.display = "block";
|
||||
};
|
||||
domDepSym.onmouseout = function(e) {
|
||||
e.currentTarget.style.position = "static";
|
||||
e.currentTarget.childNodes[1].style.display = "none";
|
||||
};
|
||||
}
|
||||
domDepLib.appendChild(domDepSym);
|
||||
}
|
||||
domDepList.appendChild(domDepButton);
|
||||
domDepList.appendChild(domDepLib);
|
||||
}
|
||||
domList.appendChild(domDepList);
|
||||
domDepList.style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
let domViolatedList = document.getElementById("violate_list_column");
|
||||
if ("vendor.private.bin" in violatedLibs) {
|
||||
let list = violatedLibs["vendor.private.bin"];
|
||||
domViolatedList.appendChild(makeTitle("VENDOR (" + list.length + ")"));
|
||||
makeList(domViolatedList, list);
|
||||
}
|
||||
for (let tag in violatedLibs) {
|
||||
if (tag === "vendor.private.bin")
|
||||
continue;
|
||||
let list = violatedLibs[tag];
|
||||
if (tag === "system.private.bin")
|
||||
tag = "SYSTEM";
|
||||
else
|
||||
tag = tag.substring(tag.lastIndexOf(".") + 1).toUpperCase();
|
||||
domViolatedList.appendChild(makeTitle(tag + " (" + list.length + ")"));
|
||||
makeList(domViolatedList, list);
|
||||
}
|
||||
}
|
||||
|
||||
function showResult(depDumps, violatedLibs) {
|
||||
let root = tagHierarchy(depDumps).sum(function(d) { return 1; });
|
||||
cluster(root);
|
||||
|
||||
let libsDepData = libsDepends(root.leaves());
|
||||
showList(libsDepData[1], violatedLibs);
|
||||
link = link.data(libsDepData[0])
|
||||
.enter()
|
||||
.append("path")
|
||||
.each(function(d) { d.source = d[0], d.target = d[d.length - 1]; })
|
||||
.attr("class", function(d) { return d.allow ? "link" : "link--violate" })
|
||||
.attr("d", line);
|
||||
|
||||
node = node.data(root.leaves())
|
||||
.enter()
|
||||
.append("text")
|
||||
.attr("class",
|
||||
function(d) {
|
||||
return d.data.parent.parent.parent.key == "system" ?
|
||||
(d.data.parent.parent.key == "system.public" ?
|
||||
"node--sys-pub" :
|
||||
"node--sys-pri") :
|
||||
"node";
|
||||
})
|
||||
.attr("dy", "0.31em")
|
||||
.attr("transform",
|
||||
function(d) {
|
||||
return "rotate(" + (d.x - 90) + ")translate(" + (d.y + 8) + ",0)" +
|
||||
(d.x < 180 ? "" : "rotate(180)");
|
||||
})
|
||||
.attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
|
||||
.text(function(d) { return d.data.key; })
|
||||
.on("click", mouseclicked);
|
||||
document.getElementById("reset_btn").onclick = resetclicked;
|
||||
}
|
||||
|
||||
function resetclicked() {
|
||||
if (selectedNode) {
|
||||
selectedNode.classList.toggle("active");
|
||||
selectedNode.nextElementSibling.style.display = "none";
|
||||
if (selectedSubNode) {
|
||||
selectedSubNode.classList.toggle("active");
|
||||
selectedSubNode.nextElementSibling.style.display = "none";
|
||||
selectedSubNode = undefined;
|
||||
}
|
||||
selectedNode = undefined;
|
||||
}
|
||||
link.classed("link--target", false)
|
||||
.classed("link--source", false);
|
||||
node.classed("node--target", false)
|
||||
.classed("node--source", false)
|
||||
.classed("node--selected", false);
|
||||
}
|
||||
|
||||
function mouseclicked(d) {
|
||||
node.each(function(n) { n.target = n.source = false; });
|
||||
|
||||
link.classed("link--target",
|
||||
function(l) {
|
||||
if (l.target === d) {
|
||||
l.source.source = true;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
.classed("link--source",
|
||||
function(l) {
|
||||
if (l.source === d) {
|
||||
l.target.target = true;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
.filter(function(l) { return l.target === d || l.source === d; })
|
||||
.raise();
|
||||
|
||||
node.classed("node--target",
|
||||
function(n) {
|
||||
return n.target;
|
||||
})
|
||||
.classed("node--source",
|
||||
function(n) { return n.source; })
|
||||
.classed("node--selected",
|
||||
function(n) {
|
||||
return n === d;
|
||||
});
|
||||
}
|
||||
|
||||
function tagHierarchy(depDumps) {
|
||||
let map = {};
|
||||
|
||||
function find(name, tag, data) {
|
||||
let node = map[name], i;
|
||||
if (!node) {
|
||||
node = map[name] = data || { name : name, children : [] };
|
||||
if (name.length) {
|
||||
node.parent = find(tag, tag.substring(0, tag.lastIndexOf(".")));
|
||||
node.parent.children.push(node);
|
||||
node.key = name;
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
depDumps.forEach(function(d) { find(d.name, d.tag, d); });
|
||||
|
||||
return d3.hierarchy(map[""]);
|
||||
}
|
||||
|
||||
function libsDepends(nodes) {
|
||||
let map = {}, depends = [];
|
||||
|
||||
// Compute a map from name to node.
|
||||
nodes.forEach(function(d) { map[d.data.name] = d; });
|
||||
|
||||
// For each dep, construct a link from the source to target node.
|
||||
nodes.forEach(function(d) {
|
||||
if (d.data.depends)
|
||||
d.data.depends.forEach(function(i) {
|
||||
let l = map[d.data.name].path(map[i]);
|
||||
l.allow = true;
|
||||
depends.push(l);
|
||||
});
|
||||
if (d.data.violates.length) {
|
||||
map[d.data.name].not_allow = true;
|
||||
d.data.violates.forEach(function(i) {
|
||||
map[i[0]].not_allow = true;
|
||||
let l = map[d.data.name].path(map[i[0]]);
|
||||
l.allow = false;
|
||||
depends.push(l);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return [ depends, map ];
|
||||
}
|
||||
|
||||
window.onload = init;
|
||||
})();
|
||||
@@ -1,13 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>VNDK Dependency Graph</title>
|
||||
<link rel="stylesheet" href="dep-graph.css" media="all" />
|
||||
<script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
|
||||
<script type="text/javascript" src="dep-data.js"></script>
|
||||
<script type="text/javascript" src="dep-graph.js"></script>
|
||||
</head>
|
||||
|
||||
<body></body>
|
||||
</html>
|
||||
@@ -1,518 +0,0 @@
|
||||
Path,Tag,Comments
|
||||
/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.base@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/bluetooth.default.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/keystore.default.so,FWK-ONLY,
|
||||
/system/${LIB}/ld-android.so,LL-NDK-Indirect,
|
||||
/system/${LIB}/libEGL.so,LL-NDK,
|
||||
/system/${LIB}/libETC1.so,FWK-ONLY,
|
||||
/system/${LIB}/libFFTEm.so,FWK-ONLY,
|
||||
/system/${LIB}/libGLESv1_CM.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv2.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv3.so,LL-NDK,
|
||||
/system/${LIB}/libLLVM.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenSLES.so,FWK-ONLY,
|
||||
/system/${LIB}/libRS.so,FWK-ONLY,
|
||||
/system/${LIB}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/libRScpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libWnnEngDic.so,FWK-ONLY,
|
||||
/system/${LIB}/libWnnJpnDic.so,FWK-ONLY,
|
||||
/system/${LIB}/libaaudio.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_net.so,LL-NDK,
|
||||
/system/${LIB}/libandroid_runtime.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_servers.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroidfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libappfuse.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-compiler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-dexlayout.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-disassembler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioclient.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiomanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioprocessing.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/libaudiospdif.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/libavservices_minijail.so,VNDK,"Will be FWK-ONLY in the future. Vendor module should link libavservices_minijail_vendor.so"
|
||||
/system/${LIB}/libbacktrace.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/libbatteryservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libbcc.so,FWK-ONLY,
|
||||
/system/${LIB}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/libbinder.so,VNDK,
|
||||
/system/${LIB}/libbinderwrapper.so,FWK-ONLY,
|
||||
/system/${LIB}/libblas.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/libbluetooth_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-stream.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo.so,FWK-ONLY,
|
||||
/system/${LIB}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/libc.so,LL-NDK,
|
||||
/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect,
|
||||
/system/${LIB}/libcamera2ndk.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/libcameraservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libcap.so,VNDK,
|
||||
/system/${LIB}/libchrome.so,FWK-ONLY,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/libcups.so,FWK-ONLY,
|
||||
/system/${LIB}/libcurl.so,VNDK,
|
||||
/system/${LIB}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/libdebuggerd_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/libdl.so,LL-NDK,
|
||||
/system/${LIB}/libdng_sdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/libevent.so,VNDK,
|
||||
/system/${LIB}/libexif.so,VNDK,
|
||||
/system/${LIB}/libexpat.so,VNDK,
|
||||
/system/${LIB}/libext2_blkid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_com_err.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_e2p.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_quota.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_uuid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2fs.so,FWK-ONLY,
|
||||
/system/${LIB}/libext4_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY,
|
||||
/system/${LIB}/libfmq.so,VNDK,
|
||||
/system/${LIB}/libframesequence.so,FWK-ONLY,
|
||||
/system/${LIB}/libft2.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/libgiftranscode.so,FWK-ONLY,
|
||||
/system/${LIB}/libgui.so,VNDK,
|
||||
/system/${LIB}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidcommand_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/libhwui.so,FWK-ONLY,
|
||||
/system/${LIB}/libicui18n.so,VNDK,Will be FWK-ONLY in the future
|
||||
/system/${LIB}/libicuuc.so,VNDK,Will be FWK-ONLY in the future
|
||||
/system/${LIB}/libimg_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libincident.so,FWK-ONLY,
|
||||
/system/${LIB}/libinput.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/libiprouteutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacore.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacrypto.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_eglfence.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_filtershow_filters.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_jpegstream.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_jpegutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_latinime.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_tinyplanet.so,FWK-ONLY,
|
||||
/system/${LIB}/libjnigraphics.so,FWK-ONLY,
|
||||
/system/${LIB}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/libkeymaster1.so,VNDK,
|
||||
/system/${LIB}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/libkeystore-engine.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/liblog.so,LL-NDK,
|
||||
/system/${LIB}/liblogcat.so,FWK-ONLY,
|
||||
/system/${LIB}/liblogwrap.so,FWK-ONLY,
|
||||
/system/${LIB}/liblz4.so,VNDK,
|
||||
/system/${LIB}/liblzma.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libm.so,LL-NDK,
|
||||
/system/${LIB}/libmdnssd.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/libmedia_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/libmediadrm.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediaextractorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedialogservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediametrics.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libmediautils.so,FWK-ONLY,
|
||||
/system/${LIB}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/libmemunreachable.so,FWK-ONLY,
|
||||
/system/${LIB}/libmetricslogger.so,FWK-ONLY,
|
||||
/system/${LIB}/libmidi.so,FWK-ONLY,
|
||||
/system/${LIB}/libminijail.so,VNDK,"Will be FWK-ONLY in the future. Vendor module should link libminijail_vendor.so"
|
||||
/system/${LIB}/libminikin.so,FWK-ONLY,
|
||||
/system/${LIB}/libmtp.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativebridge.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativehelper.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativeloader.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativewindow.so,LL-NDK,
|
||||
/system/${LIB}/libnbaio.so,VNDK,"Vendor modules should use libnbaio_mono.so (with less APIs) in the future"
|
||||
/system/${LIB}/libnetd_client.so,LL-NDK-Indirect,
|
||||
/system/${LIB}/libnetdaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetlink.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/libnl.so,VNDK,
|
||||
/system/${LIB}/libopenjdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvm.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY,
|
||||
/system/${LIB}/libopus.so,FWK-ONLY,
|
||||
/system/${LIB}/libpac.so,FWK-ONLY,
|
||||
/system/${LIB}/libpackagelistparser.so,FWK-ONLY,
|
||||
/system/${LIB}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/libpcap.so,FWK-ONLY,
|
||||
/system/${LIB}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/libpcrecpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libpdfium.so,FWK-ONLY,
|
||||
/system/${LIB}/libpiex.so,VNDK,
|
||||
/system/${LIB}/libpixelflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libpng.so,VNDK,
|
||||
/system/${LIB}/libpower.so,VNDK,
|
||||
/system/${LIB}/libpowermanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libprintspooler_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocessgroup.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/libradio.so,FWK-ONLY,
|
||||
/system/${LIB}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/libradioservice.so,FWK-ONLY,
|
||||
/system/${LIB}/librs_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/librtp_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libselinux.so,FWK-ONLY,"libselinux will be VNDK in the future but not in O"
|
||||
/system/${LIB}/libsensor.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libservices.so,FWK-ONLY,
|
||||
/system/${LIB}/libserviceutility.so,FWK-ONLY,
|
||||
/system/${LIB}/libsigchain.so,FWK-ONLY,
|
||||
/system/${LIB}/libskia.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoftkeymaster.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/libsonic.so,FWK-ONLY,
|
||||
/system/${LIB}/libsonivox.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundpool.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtrigger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsparse.so,FWK-ONLY,
|
||||
/system/${LIB}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/libssl.so,VNDK,
|
||||
/system/${LIB}/libstagefright.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_amrnb_common.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_enc_common.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/libstagefright_http_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_aacdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_aacenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_amrdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_amrnbenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_amrwbenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_avcdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_avcenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_flacenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_g711dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_gsmdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_hevcdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mp3dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mpeg2dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4enc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_opusdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_rawdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_vorbisdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_vpxdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_vpxenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_xmlparser@1.0.so,FWK-ONLY,
|
||||
/system/${LIB}/libstdc++.so,LL-NDK,
|
||||
/system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
|
||||
/system/${LIB}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/libsync.so,LL-NDK,
|
||||
/system/${LIB}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/libtextclassifier.so,FWK-ONLY,
|
||||
/system/${LIB}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/libui.so,VNDK,
|
||||
/system/${LIB}/libunwind.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libunwindstack.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/libvintf.so,FWK-ONLY,
|
||||
/system/${LIB}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/libvndksupport.so,LL-NDK,
|
||||
/system/${LIB}/libvorbisidec.so,FWK-ONLY,
|
||||
/system/${LIB}/libvulkan.so,LL-NDK,
|
||||
/system/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,This will be moved to vendor partition
|
||||
/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
|
||||
/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libwfds.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-service.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-system.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifikeystorehal.so,FWK-ONLY,
|
||||
/system/${LIB}/libwilhelm.so,FWK-ONLY,
|
||||
/system/${LIB}/libwnndict.so,FWK-ONLY,
|
||||
/system/${LIB}/libxml2.so,VNDK,
|
||||
/system/${LIB}/libyuv.so,VNDK,
|
||||
/system/${LIB}/libz.so,LL-NDK,
|
||||
/system/${LIB}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.base@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbacktrace.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libblas.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcompiler_rt.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/liblzma.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwind.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwindstack.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libz.so,VNDK-SP,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libavservices_minijail.so,VNDK,"Will be FWK-ONLY in the future. Vendor module should link libavservices_minijail_vendor.so"
|
||||
/system/${LIB}/vndk${VNDK_VER}/libbinder.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcurl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libevent.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexif.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexpat.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libfmq.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgui.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libicui18n.so,VNDK,Will be FWK-ONLY in the future
|
||||
/system/${LIB}/vndk${VNDK_VER}/libicuuc.so,VNDK,Will be FWK-ONLY in the future
|
||||
/system/${LIB}/vndk${VNDK_VER}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/liblz4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libminijail.so,VNDK,"Will be FWK-ONLY in the future. Vendor module should link libminijail_vendor.so"
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnbaio.so,VNDK,"Vendor modules should use libnbaio_mono.so (with less APIs) in the future"
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpiex.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpng.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpower.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libssl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libui.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libyuv.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libziparchive.so,VNDK,
|
||||
/vendor/${LIB}/libavservices_minijail_vendor.so,VND-ONLY,Framework module should link libavservices_minijail.so
|
||||
/vendor/${LIB}/libcld80211.so,VND-ONLY,
|
||||
/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY,
|
||||
/vendor/${LIB}/libminijail_vendor.so,VND-ONLY,Framework module should link libminijail.so
|
||||
/vendor/${LIB}/libreference-ril.so,VND-ONLY,
|
||||
/vendor/${LIB}/libril.so,VND-ONLY,
|
||||
/vendor/${LIB}/librilutils.so,VND-ONLY,
|
||||
/vendor/${LIB}/libtinycompress.so,VND-ONLY,
|
||||
/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,
|
||||
[regex]^.*/android\.hardware\.graphics\.mapper@\d+\.\d+-impl\.so$,SP-HAL,
|
||||
[regex]^.*/android\.hardware\.renderscript@1\.0-impl\.so$,SP-HAL,
|
||||
[regex]^.*/gralloc\..*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libEGL_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLES_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv1_CM_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv2_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv3_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libPVRRS\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libRSDriver.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/vulkan.*\.so$,SP-HAL,
|
||||
|
@@ -1,585 +0,0 @@
|
||||
Path,Tag,Comments
|
||||
/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas.native@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.neuralnetworks@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.oemlock@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.weaver@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.offload@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.net.netd@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/bluetooth.default.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/keystore.default.so,FWK-ONLY,
|
||||
/system/${LIB}/ld-android.so,LL-NDK-Indirect,
|
||||
/system/${LIB}/libEGL.so,LL-NDK,
|
||||
/system/${LIB}/libETC1.so,FWK-ONLY,
|
||||
/system/${LIB}/libFFTEm.so,FWK-ONLY,
|
||||
/system/${LIB}/libGLESv1_CM.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv2.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv3.so,LL-NDK,
|
||||
/system/${LIB}/libLLVM.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenSLES.so,FWK-ONLY,
|
||||
/system/${LIB}/libRS.so,LL-NDK,
|
||||
/system/${LIB}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/libRScpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libWnnEngDic.so,FWK-ONLY,
|
||||
/system/${LIB}/libWnnJpnDic.so,FWK-ONLY,
|
||||
/system/${LIB}/libaaudio.so,FWK-ONLY,
|
||||
/system/${LIB}/libadf.so,VNDK,
|
||||
/system/${LIB}/libandroid.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_net.so,LL-NDK,
|
||||
/system/${LIB}/libandroid_runtime.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_servers.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroidfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libappfuse.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-compiler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-dexlayout.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-disassembler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioclient.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiomanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioprocessing.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/libaudiospdif.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/libavservices_minijail.so,FWK-ONLY,"Vendor module should link libavservices_minijail_vendor.so"
|
||||
/system/${LIB}/libbacktrace.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/libbatteryservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libbcc.so,FWK-ONLY,
|
||||
/system/${LIB}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/libbinder.so,VNDK,
|
||||
/system/${LIB}/libbinderwrapper.so,FWK-ONLY,
|
||||
/system/${LIB}/libblas.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/libbluetooth_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-stream.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo.so,FWK-ONLY,
|
||||
/system/${LIB}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/libc.so,LL-NDK,
|
||||
/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect,
|
||||
/system/${LIB}/libcamera2ndk.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/libcameraservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libcap.so,VNDK,
|
||||
/system/${LIB}/libchrome.so,FWK-ONLY,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/libcups.so,FWK-ONLY,
|
||||
/system/${LIB}/libcurl.so,VNDK,
|
||||
/system/${LIB}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/libdebuggerd_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/libdl.so,LL-NDK,
|
||||
/system/${LIB}/libdng_sdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/libevent.so,VNDK,
|
||||
/system/${LIB}/libexif.so,VNDK,
|
||||
/system/${LIB}/libexpat.so,VNDK,
|
||||
/system/${LIB}/libext2_blkid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_com_err.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_e2p.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_quota.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_uuid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2fs.so,FWK-ONLY,
|
||||
/system/${LIB}/libext4_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY,
|
||||
/system/${LIB}/libfmq.so,VNDK,
|
||||
/system/${LIB}/libframesequence.so,FWK-ONLY,
|
||||
/system/${LIB}/libft2.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/libgiftranscode.so,FWK-ONLY,
|
||||
/system/${LIB}/libgui.so,VNDK,
|
||||
/system/${LIB}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidcommand_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/libhwui.so,FWK-ONLY,
|
||||
/system/${LIB}/libicui18n.so,FWK-ONLY,
|
||||
/system/${LIB}/libicuuc.so,FWK-ONLY,
|
||||
/system/${LIB}/libimg_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libincident.so,FWK-ONLY,
|
||||
/system/${LIB}/libinput.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/libiperf.so,FWK-ONLY,
|
||||
/system/${LIB}/libiprouteutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacore.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacrypto.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_eglfence.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_filtershow_filters.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_jpegstream.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_jpegutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_latinime.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_tinyplanet.so,FWK-ONLY,
|
||||
/system/${LIB}/libjnigraphics.so,FWK-ONLY,
|
||||
/system/${LIB}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/libkeymaster_portable.so,VNDK,
|
||||
/system/${LIB}/libkeymaster_staging.so,VNDK,
|
||||
/system/${LIB}/libkeystore-engine.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/liblog.so,LL-NDK,
|
||||
/system/${LIB}/liblogcat.so,FWK-ONLY,
|
||||
/system/${LIB}/liblogwrap.so,FWK-ONLY,
|
||||
/system/${LIB}/liblz4.so,VNDK,
|
||||
/system/${LIB}/liblzma.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libm.so,LL-NDK,
|
||||
/system/${LIB}/libmdnssd.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/libmedia_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/libmediadrm.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediaextractorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedialogservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediametrics.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libmediautils.so,FWK-ONLY,
|
||||
/system/${LIB}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/libmemunreachable.so,FWK-ONLY,
|
||||
/system/${LIB}/libmetricslogger.so,FWK-ONLY,
|
||||
/system/${LIB}/libmidi.so,FWK-ONLY,
|
||||
/system/${LIB}/libminijail.so,FWK-ONLY,"Vendor module should link libminijail_vendor.so"
|
||||
/system/${LIB}/libminikin.so,FWK-ONLY,
|
||||
/system/${LIB}/libmtp.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativebridge.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativehelper.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativeloader.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativewindow.so,LL-NDK,
|
||||
/system/${LIB}/libnbaio.so,FWK-ONLY,"Vendor module should link libnbaio_mono.so"
|
||||
/system/${LIB}/libnetd_client.so,LL-NDK-Indirect,
|
||||
/system/${LIB}/libnetdaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetlink.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/libnl.so,VNDK,
|
||||
/system/${LIB}/libopenjdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvm.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY,
|
||||
/system/${LIB}/libopus.so,VNDK,
|
||||
/system/${LIB}/libpac.so,FWK-ONLY,
|
||||
/system/${LIB}/libpackagelistparser.so,FWK-ONLY,
|
||||
/system/${LIB}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/libpcap.so,FWK-ONLY,
|
||||
/system/${LIB}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/libpcrecpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libpdfium.so,FWK-ONLY,
|
||||
/system/${LIB}/libpiex.so,VNDK,
|
||||
/system/${LIB}/libpixelflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libpng.so,VNDK,
|
||||
/system/${LIB}/libpower.so,VNDK,
|
||||
/system/${LIB}/libpowermanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libprintspooler_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocessgroup.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/librs_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/librtp_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libselinux.so,FWK-ONLY,"libselinux will be VNDK in the future but not in O-MR1"
|
||||
/system/${LIB}/libsensor.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libservices.so,FWK-ONLY,
|
||||
/system/${LIB}/libserviceutility.so,FWK-ONLY,
|
||||
/system/${LIB}/libsigchain.so,FWK-ONLY,
|
||||
/system/${LIB}/libskia.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoftkeymaster.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/libsonic.so,FWK-ONLY,
|
||||
/system/${LIB}/libsonivox.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundpool.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtrigger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsparse.so,FWK-ONLY,
|
||||
/system/${LIB}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/libssl.so,VNDK,
|
||||
/system/${LIB}/libstagefright.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_amrnb_common.so,VNDK,
|
||||
/system/${LIB}/libstagefright_enc_common.so,VNDK,
|
||||
/system/${LIB}/libstagefright_flacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/libstagefright_http_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/libstagefright_omx_utils.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_aacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_aacenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_amrdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_amrnbenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_amrwbenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_avcdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_avcenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_flacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_flacenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_g711dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_gsmdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_hevcdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mp3dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mpeg2dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4enc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_opusdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_rawdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_vorbisdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_vpxdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_vpxenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_xmlparser.so,VNDK,
|
||||
/system/${LIB}/libstdc++.so,FWK-ONLY,
|
||||
/system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
|
||||
/system/${LIB}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/libsync.so,LL-NDK,
|
||||
/system/${LIB}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/libtextclassifier.so,FWK-ONLY,
|
||||
/system/${LIB}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/libui.so,VNDK,
|
||||
/system/${LIB}/libunwind.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libunwindstack.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/libvintf.so,FWK-ONLY,
|
||||
/system/${LIB}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/libvndksupport.so,LL-NDK,
|
||||
/system/${LIB}/libvorbisidec.so,VNDK,
|
||||
/system/${LIB}/libvulkan.so,LL-NDK,
|
||||
/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
|
||||
/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libwfds.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-service.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-system-iface.so,VNDK,
|
||||
/system/${LIB}/libwifi-system.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifikeystorehal.so,FWK-ONLY,
|
||||
/system/${LIB}/libwilhelm.so,FWK-ONLY,
|
||||
/system/${LIB}/libwnndict.so,FWK-ONLY,
|
||||
/system/${LIB}/libxml2.so,VNDK,
|
||||
/system/${LIB}/libyuv.so,VNDK,
|
||||
/system/${LIB}/libz.so,VNDK-SP,
|
||||
/system/${LIB}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/tests.vendor@1.0.so,VNDK,
|
||||
/system/${LIB}/tests.vendor@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbacktrace.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libblas.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcompiler_rt.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/liblzma.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwind.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwindstack.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libz.so,VNDK-SP,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas.native@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.neuralnetworks@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.oemlock@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.weaver@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.offload@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.net.netd@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libadf.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libbinder.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcurl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libevent.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexif.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexpat.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libfmq.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgui.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_portable.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_staging.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/liblz4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libopus.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpiex.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpng.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpower.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libssl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_amrnb_common.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_enc_common.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_flacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_aacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_aacenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_amrdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_amrnbenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_amrwbenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_avcdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_avcenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_flacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_flacenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_g711dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_gsmdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_hevcdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mp3dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mpeg2dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mpeg4dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mpeg4enc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_opusdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_rawdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_vorbisdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_vpxdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_vpxenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_xmlparser.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libui.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvorbisidec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libwifi-system-iface.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libyuv.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/tests.vendor@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/tests.vendor@1.1.so,VNDK,
|
||||
/vendor/${LIB}/libavservices_minijail_vendor.so,VND-ONLY,Framework module should link libavservices_minijail.so
|
||||
/vendor/${LIB}/libcld80211.so,VND-ONLY,
|
||||
/vendor/${LIB}/libeffects.so,VND-ONLY,
|
||||
/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY,
|
||||
/vendor/${LIB}/libminijail_vendor.so,VND-ONLY,Framework module should link libminijail.so
|
||||
/vendor/${LIB}/libnbaio_mono.so,VND-ONLY,
|
||||
/vendor/${LIB}/libreference-ril.so,VND-ONLY,
|
||||
/vendor/${LIB}/libril.so,VND-ONLY,
|
||||
/vendor/${LIB}/librilutils.so,VND-ONLY,
|
||||
/vendor/${LIB}/libtinycompress.so,VND-ONLY,
|
||||
/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libaudiopreprocessing.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libbundlewrapper.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libdownmix.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libeffectproxy.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libldnhncr.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libreverbwrapper.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libvisualizer.so,VND-ONLY,
|
||||
[regex]^.*/android\.hardware\.graphics\.mapper@\d+\.\d+-impl\.so$,SP-HAL,
|
||||
[regex]^.*/android\.hardware\.renderscript@1\.0-impl\.so$,SP-HAL,
|
||||
[regex]^.*/gralloc\..*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libEGL_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLES_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv1_CM_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv2_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv3_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libPVRRS\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libRSDriver.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/vulkan.*\.so$,SP-HAL,
|
||||
|
@@ -1,435 +0,0 @@
|
||||
name,vndk,vndk_sp,vendor_available,rule
|
||||
android.frameworks.displayservice@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.displayservice@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.schedulerservice@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.schedulerservice@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.sensorservice@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.sensorservice@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.vr.composer@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.vr.composer@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common-util,True,False,True,cc_library_shared
|
||||
android.hardware.audio.common@2.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@2.0-util,True,False,True,cc_library_shared
|
||||
android.hardware.audio.common@4.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@4.0-util,True,False,True,cc_library_shared
|
||||
android.hardware.audio.effect@2.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@4.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio@2.0,True,False,True,hidl_interface
|
||||
android.hardware.audio@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio@4.0,True,False,True,hidl_interface
|
||||
android.hardware.audio@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.authsecret@1.0,True,False,True,hidl_interface
|
||||
android.hardware.authsecret@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.automotive.audiocontrol@1.0,True,False,True,hidl_interface
|
||||
android.hardware.automotive.audiocontrol@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.automotive.evs@1.0,True,False,True,hidl_interface
|
||||
android.hardware.automotive.evs@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.automotive.vehicle@2.0,True,False,True,hidl_interface
|
||||
android.hardware.automotive.vehicle@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.biometrics.fingerprint@2.1,True,False,True,hidl_interface
|
||||
android.hardware.biometrics.fingerprint@2.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth.a2dp@1.0,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth.a2dp@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth@1.0,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.boot@1.0,True,False,True,hidl_interface
|
||||
android.hardware.boot@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.0,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.1,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@2.0,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.common@1.0,True,False,True,hidl_interface
|
||||
android.hardware.camera.common@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@1.0,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.2,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.3,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.4,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.4-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.2,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.3,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.provider@2.4,True,False,True,hidl_interface
|
||||
android.hardware.camera.provider@2.4-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.cas.native@1.0,True,False,True,hidl_interface
|
||||
android.hardware.cas.native@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.cas@1.0,True,False,True,hidl_interface
|
||||
android.hardware.cas@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.configstore-utils,True,False,True,cc_library_shared
|
||||
android.hardware.configstore@1.0,True,False,True,hidl_interface
|
||||
android.hardware.configstore@1.1,True,False,True,hidl_interface
|
||||
android.hardware.configstore@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.confirmationui-support-lib,True,False,True,cc_library
|
||||
android.hardware.confirmationui@1.0,True,False,True,hidl_interface
|
||||
android.hardware.confirmationui@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.contexthub@1.0,True,False,True,hidl_interface
|
||||
android.hardware.contexthub@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.0,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.1,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.dumpstate@1.0,True,False,True,hidl_interface
|
||||
android.hardware.dumpstate@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gatekeeper@1.0,True,False,True,hidl_interface
|
||||
android.hardware.gatekeeper@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.0,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.1,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.allocator@2.0,True,False,True,hidl_interface
|
||||
android.hardware.graphics.allocator@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.bufferqueue@1.0,True,False,True,hidl_interface
|
||||
android.hardware.graphics.bufferqueue@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.common@1.0,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.1,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.1-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.1,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.2,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.0,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.1,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.1-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.health@1.0,True,False,True,hidl_interface
|
||||
android.hardware.health@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.health@2.0,True,False,True,hidl_interface
|
||||
android.hardware.health@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.ir@1.0,True,False,True,hidl_interface
|
||||
android.hardware.ir@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@3.0,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@3.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@4.0,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.light@2.0,True,False,True,hidl_interface
|
||||
android.hardware.light@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media.bufferpool@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media.bufferpool@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media.omx@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media.omx@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.memtrack@1.0,True,False,True,hidl_interface
|
||||
android.hardware.memtrack@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.0,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.1,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.0,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.1,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.oemlock@1.0,True,False,True,hidl_interface
|
||||
android.hardware.oemlock@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.0,True,False,True,hidl_interface
|
||||
android.hardware.power@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.1,True,False,True,hidl_interface
|
||||
android.hardware.power@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.2,True,False,True,hidl_interface
|
||||
android.hardware.power@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.0,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio.deprecated@1.0,True,False,True,hidl_interface
|
||||
android.hardware.radio.deprecated@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.0,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.1,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.2,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.renderscript@1.0,True,True,True,hidl_interface
|
||||
android.hardware.renderscript@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.secure_element@1.0,True,False,True,hidl_interface
|
||||
android.hardware.secure_element@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.sensors@1.0,True,False,True,hidl_interface
|
||||
android.hardware.sensors@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.0,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.0-core,True,False,True,cc_library_shared
|
||||
android.hardware.soundtrigger@2.1,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tests.bar@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.bar@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.baz@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.baz@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.expression@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.expression@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.extension.light@2.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.extension.light@2.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.foo@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.foo@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.hash@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.hash@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.inheritance@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.inheritance@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.libhwbinder@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.libhwbinder@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.memory@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.memory@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.msgq@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.msgq@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.multithread@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.multithread@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.pointer@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.pointer@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.trie@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.trie@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.config@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.config@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.control@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.control@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.0,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.1,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tv.cec@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tv.cec@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tv.input@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tv.input@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb.gadget@1.0,True,False,True,hidl_interface
|
||||
android.hardware.usb.gadget@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.0,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.1,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.0,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.1,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.2,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vr@1.0,True,False,True,hidl_interface
|
||||
android.hardware.vr@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.weaver@1.0,True,False,True,hidl_interface
|
||||
android.hardware.weaver@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.hostapd@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi.hostapd@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.offload@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi.offload@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.1,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.1,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.2,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.allocator@1.0,True,False,True,hidl_interface
|
||||
android.hidl.allocator@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.base@1.0,True,False,True,hidl_interface
|
||||
android.hidl.base@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.0,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.1,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.memory.block@1.0,True,False,True,hidl_interface
|
||||
android.hidl.memory.block@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.memory.token@1.0,True,True,True,hidl_interface
|
||||
android.hidl.memory.token@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hidl.memory@1.0,True,True,True,hidl_interface
|
||||
android.hidl.memory@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hidl.memory@1.0-impl,True,True,True,cc_library_shared
|
||||
android.hidl.token@1.0,True,False,True,hidl_interface
|
||||
android.hidl.token@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.token@1.0-utils,True,False,True,cc_library
|
||||
android.system.net.netd@1.0,True,False,True,hidl_interface
|
||||
android.system.net.netd@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.system.net.netd@1.1,True,False,True,hidl_interface
|
||||
android.system.net.netd@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.system.wifi.keystore@1.0,True,False,True,hidl_interface
|
||||
android.system.wifi.keystore@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
hardware.google.media.c2@1.0,False,False,True,hidl_interface
|
||||
hardware.google.media.c2@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
hardware.google.pixelstats@1.0,False,False,True,hidl_interface
|
||||
hardware.google.pixelstats@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.0,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.1,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.1-adapter-helper,False,False,True,hidl_interface
|
||||
libRSCpuRef,True,True,True,cc_library_shared
|
||||
libRSDriver,True,True,True,cc_library_shared
|
||||
libRS_internal,True,True,True,cc_library_shared
|
||||
libadf,True,False,True,cc_library
|
||||
libasyncio,False,False,True,cc_library
|
||||
libaudioroute,True,False,True,cc_library_shared
|
||||
libaudioutils,True,False,True,cc_library
|
||||
libbacktrace,True,True,False,cc_library
|
||||
libbase,True,True,True,cc_library
|
||||
libbcinfo,True,True,True,cc_library_shared
|
||||
libbinder,True,False,True,cc_library
|
||||
libblas,True,True,False,cc_library_shared
|
||||
libc++,True,True,True,cc_library_shared
|
||||
libcamera_metadata,True,False,True,cc_library_shared
|
||||
libcap,True,False,True,cc_library
|
||||
libchrome,False,False,True,cc_library
|
||||
libclang_rt.ubsan_standalone-aarch64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-arm-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-i686-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-mips-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-mips64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-x86_64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libcn-cbor,True,False,True,cc_library
|
||||
libcodec2_hidl_utils@1.0,False,False,True,cc_library
|
||||
libcompiler_rt,True,True,False,cc_library
|
||||
libcrypto,True,False,True,cc_library
|
||||
libcrypto_utils,True,False,True,cc_library
|
||||
libcurl,True,False,True,cc_library
|
||||
libcutils,True,True,True,cc_library
|
||||
libdemangle,False,False,True,cc_library
|
||||
libdiskconfig,True,False,True,cc_library
|
||||
libdng_sdk,False,False,True,cc_library
|
||||
libdrm,False,False,True,cc_library
|
||||
libdumpstateutil,True,False,True,cc_library_shared
|
||||
libeffectsconfig,False,False,True,cc_library
|
||||
libevent,True,False,True,cc_library
|
||||
libexif,True,False,True,cc_library_shared
|
||||
libexpat,True,False,True,cc_library
|
||||
libfmq,True,False,True,cc_library_shared
|
||||
libgatekeeper,True,False,True,cc_library_shared
|
||||
libgtest_prod,False,False,True,cc_library
|
||||
libgui,True,False,False,cc_library_shared
|
||||
libhardware,True,True,True,cc_library_shared
|
||||
libhardware_legacy,True,False,True,cc_library_shared
|
||||
libhidladapter,False,False,True,cc_library
|
||||
libhidlallocatorutils,True,False,True,cc_library
|
||||
libhidlbase,True,True,True,cc_library
|
||||
libhidlcache,True,False,True,cc_library
|
||||
libhidlmemory,True,True,True,cc_library
|
||||
libhidltransport,True,True,True,cc_library
|
||||
libhwbinder,True,True,True,cc_library
|
||||
libhwbinder_noltopgo,True,True,True,cc_library
|
||||
libion,True,True,True,cc_library
|
||||
libjpeg,True,False,True,cc_library
|
||||
libkeymaster4,False,False,True,cc_library_shared
|
||||
libkeymaster4support,False,False,True,cc_library
|
||||
libkeymaster_messages,True,False,True,cc_library_shared
|
||||
libkeymaster_portable,True,False,True,cc_library
|
||||
liblayers_proto,False,False,True,cc_library_shared
|
||||
libldacBT_abr,True,False,True,cc_library_shared
|
||||
libldacBT_enc,True,False,True,cc_library_shared
|
||||
liblz4,True,False,True,cc_library
|
||||
liblzma,True,True,True,cc_library
|
||||
libmedia_helper,True,False,True,cc_library
|
||||
libmedia_omx,True,False,True,cc_library_shared
|
||||
libmemtrack,True,False,True,cc_library_shared
|
||||
libminijail,True,False,True,cc_library
|
||||
libmkbootimg_abi_check,True,False,True,cc_library
|
||||
libnetutils,True,False,True,cc_library_shared
|
||||
libnl,True,False,True,cc_library
|
||||
libopus,True,False,True,cc_library_shared
|
||||
libpagemap,True,False,True,cc_library
|
||||
libpcap,False,False,True,cc_library
|
||||
libpcre2,True,False,True,cc_library
|
||||
libperfmgr,False,False,True,cc_library
|
||||
libpiex,True,False,True,cc_library_shared
|
||||
libpng,True,False,True,cc_library
|
||||
libpower,True,False,True,cc_library
|
||||
libprocinfo,True,False,True,cc_library
|
||||
libprotobuf-cpp-full,True,False,True,cc_library_shared
|
||||
libprotobuf-cpp-full-rtti,False,False,True,cc_library_shared
|
||||
libprotobuf-cpp-lite,True,False,True,cc_library
|
||||
libprotobuf-cpp-lite-rtti,False,False,True,cc_library_shared
|
||||
libpuresoftkeymasterdevice,True,False,True,cc_library
|
||||
libradio_metadata,True,False,True,cc_library_shared
|
||||
libselinux,True,False,True,cc_library
|
||||
libsoftkeymasterdevice,True,False,True,cc_library
|
||||
libspeexresampler,True,False,True,cc_library_shared
|
||||
libsqlite,True,False,True,cc_library
|
||||
libssl,True,False,True,cc_library
|
||||
libstagefright_amrnb_common,True,False,True,cc_library_shared
|
||||
libstagefright_bufferpool@1.0,False,False,True,cc_library
|
||||
libstagefright_bufferqueue_helper,True,False,True,cc_library_shared
|
||||
libstagefright_codec2,False,False,True,cc_library_shared
|
||||
libstagefright_codec2_vndk,False,False,True,cc_library_shared
|
||||
libstagefright_enc_common,True,False,True,cc_library
|
||||
libstagefright_flacdec,True,False,True,cc_library
|
||||
libstagefright_foundation,True,False,True,cc_library
|
||||
libstagefright_omx,True,False,True,cc_library_shared
|
||||
libstagefright_omx_utils,True,False,True,cc_library_shared
|
||||
libstagefright_simple_c2component,False,False,True,cc_library_shared
|
||||
libstagefright_soft_aacdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_aacenc,True,False,True,cc_library_shared
|
||||
libstagefright_soft_amrdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_amrnbenc,True,False,True,cc_library_shared
|
||||
libstagefright_soft_amrwbenc,True,False,True,cc_library_shared
|
||||
libstagefright_soft_avcdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_avcenc,True,False,True,cc_library_shared
|
||||
libstagefright_soft_c2aacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2aacenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrnbdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrnbenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrwbdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrwbenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2avcdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2avcenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2flacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2flacenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2g711alawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2g711mlawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2gsmdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2h263dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2h263enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2hevcdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mp3dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mpeg2dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mpeg4dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mpeg4enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2opusdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2rawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vorbisdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp8dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp8enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp9dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp9enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_flacdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_flacenc,True,False,True,cc_library_shared
|
||||
libstagefright_soft_g711dec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_gsmdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_hevcdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_mp3dec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_mpeg2dec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_mpeg4dec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_mpeg4enc,True,False,True,cc_library_shared
|
||||
libstagefright_soft_opusdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_rawdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_vorbisdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_vpxdec,True,False,True,cc_library_shared
|
||||
libstagefright_soft_vpxenc,True,False,True,cc_library_shared
|
||||
libstagefright_xmlparser,True,False,True,cc_library_shared
|
||||
libsuspend,True,False,True,cc_library
|
||||
libsysutils,True,False,True,cc_library_shared
|
||||
libtextclassifier_hash,False,False,True,cc_library_shared
|
||||
libtinyalsa,True,False,True,cc_library
|
||||
libtinyxml2,True,False,True,cc_library
|
||||
libui,True,False,True,cc_library_shared
|
||||
libunwind,True,True,False,cc_library
|
||||
libunwindstack,True,True,True,cc_library
|
||||
libusb,False,False,True,cc_library
|
||||
libusbhost,True,False,True,cc_library
|
||||
libutils,True,True,True,cc_library
|
||||
libutilscallstack,True,True,True,cc_library
|
||||
libv4l2_c2componentstore,False,False,True,cc_library_shared
|
||||
libvixl-arm,True,False,True,cc_library
|
||||
libvixl-arm64,True,False,True,cc_library
|
||||
libvorbisidec,True,False,True,cc_library
|
||||
libwifi-system-iface,True,False,True,cc_library
|
||||
libxml2,True,False,True,cc_library
|
||||
libyuv,True,False,True,cc_library
|
||||
libz,True,True,True,cc_library
|
||||
libziparchive,True,False,True,cc_library
|
||||
vendor.nxp.nxpese@1.0,False,False,True,hidl_interface
|
||||
vendor.nxp.nxpese@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
vendor.nxp.nxpnfc@1.0,False,False,True,hidl_interface
|
||||
vendor.nxp.nxpnfc@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
|
@@ -1,750 +0,0 @@
|
||||
Path,Tag,Comments
|
||||
/apex/com.android.runtime/${LIB}/bionic/libc.so,LL-NDK,
|
||||
/apex/com.android.runtime/${LIB}/bionic/libdl.so,LL-NDK,
|
||||
/apex/com.android.runtime/${LIB}/bionic/libm.so,LL-NDK,
|
||||
/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common-util.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@4.0-util.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.authsecret@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.audiocontrol@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth.a2dp@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas.native@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.confirmationui-support-lib.so,VNDK,
|
||||
/system/${LIB}/android.hardware.confirmationui@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.1.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@2.1.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.health@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.keymaster@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.bufferpool@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.neuralnetworks@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.neuralnetworks@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.oemlock@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.config@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.secure_element@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.0-core.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb.gadget@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.weaver@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.hostapd@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.offload@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.memory.block@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.memory.token@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.net.netd@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.net.netd@1.1.so,VNDK,
|
||||
/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libaacextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libamrextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libflacextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmidiextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmkvextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmp3extractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmp4extractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmpeg2extractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/liboggextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libwavextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/hidl.tests.vendor@1.0.so,FWK-ONLY,
|
||||
/system/${LIB}/hidl.tests.vendor@1.1.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP,
|
||||
/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY,
|
||||
/system/${LIB}/ld-android.so,LL-NDK-Private,
|
||||
/system/${LIB}/libEGL.so,LL-NDK,
|
||||
/system/${LIB}/libETC1.so,FWK-ONLY,
|
||||
/system/${LIB}/libFFTEm.so,FWK-ONLY,
|
||||
/system/${LIB}/libGLESv1_CM.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv2.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv3.so,LL-NDK,
|
||||
/system/${LIB}/libLLVM_android.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenSLES.so,FWK-ONLY,
|
||||
/system/${LIB}/libRS.so,LL-NDK,
|
||||
/system/${LIB}/libRSCacheDir.so,FWK-ONLY,
|
||||
/system/${LIB}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/libRScpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libWnnEngDic.so,FWK-ONLY,
|
||||
/system/${LIB}/libWnnJpnDic.so,FWK-ONLY,
|
||||
/system/${LIB}/libaaudio.so,FWK-ONLY,
|
||||
/system/${LIB}/libaaudioservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libadbconnection.so,FWK-ONLY,
|
||||
/system/${LIB}/libadbconnectiond.so,FWK-ONLY,
|
||||
/system/${LIB}/libadf.so,VNDK,
|
||||
/system/${LIB}/libandroid.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_net.so,LL-NDK,
|
||||
/system/${LIB}/libandroid_runtime.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_servers.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroidfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libappfuse.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-compiler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-dexlayout.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-disassembler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart.so,FWK-ONLY,
|
||||
/system/${LIB}/libartd-compiler.so,FWK-ONLY,
|
||||
/system/${LIB}/libartd-dexlayout.so,FWK-ONLY,
|
||||
/system/${LIB}/libartd.so,FWK-ONLY,
|
||||
/system/${LIB}/libasyncio.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioclient.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal@2.0.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal_deathhandler.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiomanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioprocessing.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/libaudiospdif.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/libavservices_minijail.so,FWK-ONLY,Vendor module should link libavservices_minijail_vendor.so
|
||||
/system/${LIB}/libbacktrace.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/libbcc.so,FWK-ONLY,
|
||||
/system/${LIB}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/libbinder.so,VNDK,
|
||||
/system/${LIB}/libbinderwrapper.so,FWK-ONLY,
|
||||
/system/${LIB}/libblas.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libbluetooth-binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libbluetooth.so,FWK-ONLY,
|
||||
/system/${LIB}/libbluetooth_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libbootanimation.so,FWK-ONLY,
|
||||
/system/${LIB}/libbpf.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-stream.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrotli.so,FWK-ONLY,
|
||||
/system/${LIB}/libbufferhub.so,FWK-ONLY,
|
||||
/system/${LIB}/libbufferhubqueue.so,FWK-ONLY,
|
||||
/system/${LIB}/libbz.so,FWK-ONLY,
|
||||
/system/${LIB}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/libc.so,LL-NDK,
|
||||
/system/${LIB}/libc_malloc_debug.so,LL-NDK-Private,
|
||||
/system/${LIB}/libcamera2ndk.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/libcameraservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libcap.so,VNDK,
|
||||
/system/${LIB}/libchrome.so,FWK-ONLY,
|
||||
/system/${LIB}/libclang_rt.asan-aarch64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-arm-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-i686-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-mips-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-mips64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-x86_64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/libcn-cbor.so,VNDK,
|
||||
/system/${LIB}/libcompiler_rt.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/libcups.so,FWK-ONLY,
|
||||
/system/${LIB}/libcurl.so,VNDK,
|
||||
/system/${LIB}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/libdebuggerd_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdexfile.so,VNDK-SP-Private,Workaround for degenerated VDNK
|
||||
/system/${LIB}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/libdisplayservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libdl.so,LL-NDK,
|
||||
/system/${LIB}/libdng_sdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdt_fd_forward.so,FWK-ONLY,
|
||||
/system/${LIB}/libdt_socket.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/libeffectsconfig.so,FWK-ONLY,
|
||||
/system/${LIB}/libevent.so,VNDK,
|
||||
/system/${LIB}/libexif.so,VNDK,
|
||||
/system/${LIB}/libexpat.so,VNDK,
|
||||
/system/${LIB}/libext2_blkid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_com_err.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_e2p.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_misc.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_quota.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_uuid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2fs.so,FWK-ONLY,
|
||||
/system/${LIB}/libext4_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY,
|
||||
/system/${LIB}/libfmq.so,VNDK,
|
||||
/system/${LIB}/libframesequence.so,FWK-ONLY,
|
||||
/system/${LIB}/libft2.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/libgiftranscode.so,FWK-ONLY,
|
||||
/system/${LIB}/libgraphicsenv.so,FWK-ONLY,
|
||||
/system/${LIB}/libgtest_prod.so,FWK-ONLY,
|
||||
/system/${LIB}/libgui.so,VNDK-Private,
|
||||
/system/${LIB}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY,
|
||||
/system/${LIB}/libheif.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidcommand_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidl-gen-hash.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidlallocatorutils.so,VNDK,
|
||||
/system/${LIB}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/libhidlcache.so,VNDK,
|
||||
/system/${LIB}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/libhwbinder_noltopgo.so,VNDK-SP,
|
||||
/system/${LIB}/libhwui.so,FWK-ONLY,
|
||||
/system/${LIB}/libicui18n.so,FWK-ONLY,
|
||||
/system/${LIB}/libicuuc.so,FWK-ONLY,
|
||||
/system/${LIB}/libimg_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libincident.so,FWK-ONLY,
|
||||
/system/${LIB}/libinput.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/libiperf.so,FWK-ONLY,
|
||||
/system/${LIB}/libiprouteutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacore.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacrypto.so,FWK-ONLY,
|
||||
/system/${LIB}/libjdwp.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_eglfence.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_filtershow_filters.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_jpegstream.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_jpegutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_latinime.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_tinyplanet.so,FWK-ONLY,
|
||||
/system/${LIB}/libjnigraphics.so,FWK-ONLY,
|
||||
/system/${LIB}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/libkeymaster4support.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/libkeymaster_portable.so,VNDK,
|
||||
/system/${LIB}/libkeystore-engine.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_aidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_parcelables.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeyutils.so,FWK-ONLY,
|
||||
/system/${LIB}/liblayers_proto.so,FWK-ONLY,
|
||||
/system/${LIB}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/liblog.so,LL-NDK,
|
||||
/system/${LIB}/liblogcat.so,FWK-ONLY,
|
||||
/system/${LIB}/liblogwrap.so,FWK-ONLY,
|
||||
/system/${LIB}/liblshal.so,FWK-ONLY,
|
||||
/system/${LIB}/liblz4.so,VNDK,
|
||||
/system/${LIB}/liblzma.so,VNDK-SP,
|
||||
/system/${LIB}/libm.so,LL-NDK,
|
||||
/system/${LIB}/libmdnssd.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/libmedia_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/libmediadrm.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediaextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediaextractorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedialogservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediametrics.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libmediaplayerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediautils.so,FWK-ONLY,
|
||||
/system/${LIB}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/libmemunreachable.so,FWK-ONLY,
|
||||
/system/${LIB}/libmetricslogger.so,FWK-ONLY,
|
||||
/system/${LIB}/libmidi.so,FWK-ONLY,
|
||||
/system/${LIB}/libminijail.so,VNDK,
|
||||
/system/${LIB}/libminikin.so,FWK-ONLY,
|
||||
/system/${LIB}/libmkbootimg_abi_check.so,VNDK,
|
||||
/system/${LIB}/libmtp.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativebridge.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativehelper.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativeloader.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativewindow.so,LL-NDK,
|
||||
/system/${LIB}/libnbaio.so,FWK-ONLY,Vendor module should link libnbaio_mono.so
|
||||
/system/${LIB}/libnblog.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetd_client.so,LL-NDK-Private,
|
||||
/system/${LIB}/libnetdaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetdutils.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetlink.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/libneuralnetworks.so,LL-NDK,
|
||||
/system/${LIB}/libnfc-nci.so,FWK-ONLY,
|
||||
/system/${LIB}/libnfc_nci_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libnl.so,VNDK,
|
||||
/system/${LIB}/libnpt.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkd.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvm.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmd.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmtid.so,FWK-ONLY,
|
||||
/system/${LIB}/libopus.so,VNDK,
|
||||
/system/${LIB}/libpac.so,FWK-ONLY,
|
||||
/system/${LIB}/libpackagelistparser.so,FWK-ONLY,
|
||||
/system/${LIB}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/libpcap.so,FWK-ONLY,
|
||||
/system/${LIB}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/libpcrecpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libpdfium.so,FWK-ONLY,
|
||||
/system/${LIB}/libpdx_default_transport.so,FWK-ONLY,
|
||||
/system/${LIB}/libpiex.so,VNDK,
|
||||
/system/${LIB}/libpixelflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libpng.so,VNDK,
|
||||
/system/${LIB}/libpower.so,VNDK,
|
||||
/system/${LIB}/libpowermanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libprintspooler_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocessgroup.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/libprotoutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libpuresoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/libqtaguid.so,FWK-ONLY,
|
||||
/system/${LIB}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/libresourcemanagerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/librs_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/librtp_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libselinux.so,VNDK,
|
||||
/system/${LIB}/libsensor.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libsepol.so,FWK-ONLY,
|
||||
/system/${LIB}/libservices.so,FWK-ONLY,
|
||||
/system/${LIB}/libserviceutility.so,FWK-ONLY,
|
||||
/system/${LIB}/libsigchain.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/libsonic.so,FWK-ONLY,
|
||||
/system/${LIB}/libsonivox.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundpool.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtrigger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsparse.so,FWK-ONLY,
|
||||
/system/${LIB}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/libssl.so,VNDK,
|
||||
/system/${LIB}/libstagefright.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_amrnb_common.so,VNDK,
|
||||
/system/${LIB}/libstagefright_bufferqueue_helper.so,VNDK,
|
||||
/system/${LIB}/libstagefright_enc_common.so,VNDK,
|
||||
/system/${LIB}/libstagefright_flacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/libstagefright_http_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_httplive.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/libstagefright_omx_utils.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_aacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_aacenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_amrdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_amrnbenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_amrwbenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_avcdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_avcenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_flacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_flacenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_g711dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_gsmdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_hevcdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mp3dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mpeg2dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4dec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4enc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_opusdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_rawdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_vorbisdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_vpxdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_vpxenc.so,VNDK,
|
||||
/system/${LIB}/libstagefright_xmlparser.so,VNDK,
|
||||
/system/${LIB}/libstatslog.so,FWK-ONLY,
|
||||
/system/${LIB}/libstdc++.so,FWK-ONLY,
|
||||
/system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
|
||||
/system/${LIB}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/libsync.so,LL-NDK,
|
||||
/system/${LIB}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/libtextclassifier.so,FWK-ONLY,
|
||||
/system/${LIB}/libtextclassifier_hash.so,LL-NDK-Private,
|
||||
/system/${LIB}/libthermalcallback.so,FWK-ONLY,
|
||||
/system/${LIB}/libthermalservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/libtombstoned_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libui.so,VNDK,
|
||||
/system/${LIB}/libunwind.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libunwindstack.so,VNDK-SP,
|
||||
/system/${LIB}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/libutilscallstack.so,VNDK-SP,
|
||||
/system/${LIB}/libvintf.so,FWK-ONLY,
|
||||
/system/${LIB}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/libvixld-arm.so,FWK-ONLY,
|
||||
/system/${LIB}/libvixld-arm64.so,FWK-ONLY,
|
||||
/system/${LIB}/libvndksupport.so,LL-NDK,
|
||||
/system/${LIB}/libvorbisidec.so,VNDK,
|
||||
/system/${LIB}/libvulkan.so,LL-NDK,
|
||||
/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
|
||||
/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libwfds.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-service.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-system-iface.so,VNDK,
|
||||
/system/${LIB}/libwifi-system.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifikeystorehal.so,FWK-ONLY,
|
||||
/system/${LIB}/libwilhelm.so,FWK-ONLY,
|
||||
/system/${LIB}/libwnndict.so,FWK-ONLY,
|
||||
/system/${LIB}/libxml2.so,VNDK,
|
||||
/system/${LIB}/libyuv.so,VNDK,
|
||||
/system/${LIB}/libz.so,VNDK-SP,
|
||||
/system/${LIB}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@4.0-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.authsecret@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.audiocontrol@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth.a2dp@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas.native@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.confirmationui-support-lib.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.confirmationui@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.allocator@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.keymaster@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.bufferpool@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.neuralnetworks@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.neuralnetworks@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.oemlock@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.config@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.secure_element@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.0-core.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb.gadget@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.weaver@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.hostapd@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.offload@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.memory.block@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.net.netd@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.net.netd@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libadf.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libbinder.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcn-cbor.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcurl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libevent.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexif.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexpat.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libfmq.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgui.so,VNDK-Private,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhidlallocatorutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhidlcache.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_portable.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/liblz4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libminijail.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmkbootimg_abi_check.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libopus.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpiex.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpng.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpower.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpuresoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libselinux.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libssl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_amrnb_common.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_bufferqueue_helper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_enc_common.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_flacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_aacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_aacenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_amrdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_amrnbenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_amrwbenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_avcdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_avcenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_flacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_flacenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_g711dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_gsmdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_hevcdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mp3dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mpeg2dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mpeg4dec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_mpeg4enc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_opusdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_rawdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_vorbisdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_vpxdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_soft_vpxenc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_xmlparser.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libui.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvorbisidec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libwifi-system-iface.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libyuv.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.1.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@2.1.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.memory.token@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbacktrace.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libblas.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcompiler_rt.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libdexfile.so,VNDK-SP-Private,Workaround for degenerated VDNK
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhwbinder_noltopgo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/liblzma.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwind.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwindstack.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libutilscallstack.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libz.so,VNDK-SP,
|
||||
/vendor/${LIB}/hidl.tests.vendor@1.0.so,VND-ONLY,
|
||||
/vendor/${LIB}/hidl.tests.vendor@1.1.so,VND-ONLY,
|
||||
/vendor/${LIB}/libavservices_minijail_vendor.so,VND-ONLY,Framework module should link libavservices_minijail.so
|
||||
/vendor/${LIB}/libcld80211.so,VND-ONLY,
|
||||
/vendor/${LIB}/libeffects.so,VND-ONLY,
|
||||
/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY,
|
||||
/vendor/${LIB}/libnbaio_mono.so,VND-ONLY,
|
||||
/vendor/${LIB}/libreference-ril.so,VND-ONLY,
|
||||
/vendor/${LIB}/libril.so,VND-ONLY,
|
||||
/vendor/${LIB}/librilutils.so,VND-ONLY,
|
||||
/vendor/${LIB}/libtinycompress.so,VND-ONLY,
|
||||
/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libaudiopreprocessing.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libbundlewrapper.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libdownmix.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libeffectproxy.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libldnhncr.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libreverbwrapper.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libvisualizer.so,VND-ONLY,
|
||||
[regex]^.*/android\.hardware\.graphics\.mapper@\d+\.\d+-impl\.so$,SP-HAL,
|
||||
[regex]^.*/android\.hardware\.renderscript@1\.0-impl\.so$,SP-HAL,
|
||||
[regex]^.*/gralloc\..*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libEGL_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLES_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv1_CM_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv2_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv3_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libPVRRS\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libRSDriver.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/vulkan.*\.so$,SP-HAL,
|
||||
|
@@ -1,609 +0,0 @@
|
||||
name,vndk,vndk_sp,vendor_available,rule
|
||||
android.frameworks.bufferhub@1.0,False,False,True,hidl_interface
|
||||
android.frameworks.bufferhub@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.frameworks.cameraservice.common@2.0,True,False,True,hidl_interface
|
||||
android.frameworks.cameraservice.common@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.cameraservice.device@2.0,True,False,True,hidl_interface
|
||||
android.frameworks.cameraservice.device@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.cameraservice.service@2.0,True,False,True,hidl_interface
|
||||
android.frameworks.cameraservice.service@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.displayservice@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.displayservice@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.schedulerservice@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.schedulerservice@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.sensorservice@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.sensorservice@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.stats@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.stats@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.frameworks.vr.composer@1.0,True,False,True,hidl_interface
|
||||
android.frameworks.vr.composer@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.atrace@1.0,True,False,True,hidl_interface
|
||||
android.hardware.atrace@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common-util,False,False,True,cc_library_shared
|
||||
android.hardware.audio.common@2.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@2.0-util,False,False,True,cc_library_shared
|
||||
android.hardware.audio.common@4.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@4.0-util,False,False,True,cc_library_shared
|
||||
android.hardware.audio.common@5.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@5.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.common@5.0-util,False,False,True,cc_library_shared
|
||||
android.hardware.audio.effect@2.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@4.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@5.0,True,False,True,hidl_interface
|
||||
android.hardware.audio.effect@5.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio@2.0,True,False,True,hidl_interface
|
||||
android.hardware.audio@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio@4.0,True,False,True,hidl_interface
|
||||
android.hardware.audio@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.audio@5.0,True,False,True,hidl_interface
|
||||
android.hardware.audio@5.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.authsecret@1.0,True,False,True,hidl_interface
|
||||
android.hardware.authsecret@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.automotive.audiocontrol@1.0,True,False,True,hidl_interface
|
||||
android.hardware.automotive.audiocontrol@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.automotive.evs@1.0,True,False,True,hidl_interface
|
||||
android.hardware.automotive.evs@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.automotive.vehicle@2.0,True,False,True,hidl_interface
|
||||
android.hardware.automotive.vehicle@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.biometrics.face@1.0,True,False,True,hidl_interface
|
||||
android.hardware.biometrics.face@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.biometrics.fingerprint@2.1,True,False,True,hidl_interface
|
||||
android.hardware.biometrics.fingerprint@2.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth.a2dp@1.0,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth.a2dp@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth.audio@2.0,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth.audio@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth@1.0,True,False,True,hidl_interface
|
||||
android.hardware.bluetooth@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.boot@1.0,True,False,True,hidl_interface
|
||||
android.hardware.boot@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.0,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.1,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@2.0,True,False,True,hidl_interface
|
||||
android.hardware.broadcastradio@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.common@1.0,True,False,True,hidl_interface
|
||||
android.hardware.camera.common@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@1.0,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.2,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.3,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.4,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.4-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.5,True,False,True,hidl_interface
|
||||
android.hardware.camera.device@3.5-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.2,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.3,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.4,True,False,True,hidl_interface
|
||||
android.hardware.camera.metadata@3.4-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.provider@2.4,True,False,True,hidl_interface
|
||||
android.hardware.camera.provider@2.4-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.camera.provider@2.5,True,False,True,hidl_interface
|
||||
android.hardware.camera.provider@2.5-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.cas.native@1.0,True,False,True,hidl_interface
|
||||
android.hardware.cas.native@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.cas@1.0,True,False,True,hidl_interface
|
||||
android.hardware.cas@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.cas@1.1,True,False,True,hidl_interface
|
||||
android.hardware.cas@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.configstore-utils,True,False,True,cc_library_shared
|
||||
android.hardware.configstore@1.0,True,False,True,hidl_interface
|
||||
android.hardware.configstore@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.configstore@1.1,True,False,True,hidl_interface
|
||||
android.hardware.configstore@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.confirmationui-support-lib,True,False,True,cc_library
|
||||
android.hardware.confirmationui@1.0,True,False,True,hidl_interface
|
||||
android.hardware.confirmationui@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.contexthub@1.0,True,False,True,hidl_interface
|
||||
android.hardware.contexthub@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.0,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.1,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.2,True,False,True,hidl_interface
|
||||
android.hardware.drm@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.dumpstate@1.0,True,False,True,hidl_interface
|
||||
android.hardware.dumpstate@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.fastboot@1.0,True,False,True,hidl_interface
|
||||
android.hardware.fastboot@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gatekeeper@1.0,True,False,True,hidl_interface
|
||||
android.hardware.gatekeeper@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss.measurement_corrections@1.0,True,False,True,hidl_interface
|
||||
android.hardware.gnss.measurement_corrections@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss.visibility_control@1.0,True,False,True,hidl_interface
|
||||
android.hardware.gnss.visibility_control@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.0,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.1,True,False,True,hidl_interface
|
||||
android.hardware.gnss@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.gnss@2.0,True,False,True,hidl_interface
|
||||
android.hardware.gnss@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.allocator@2.0,True,False,True,hidl_interface
|
||||
android.hardware.graphics.allocator@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.allocator@3.0,True,False,True,hidl_interface
|
||||
android.hardware.graphics.allocator@3.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.bufferqueue@1.0,True,False,True,hidl_interface
|
||||
android.hardware.graphics.bufferqueue@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.bufferqueue@2.0,True,False,True,hidl_interface
|
||||
android.hardware.graphics.bufferqueue@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.common@1.0,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.1,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.1-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.2,True,True,True,hidl_interface
|
||||
android.hardware.graphics.common@1.2-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.1,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.2,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.3,True,False,True,hidl_interface
|
||||
android.hardware.graphics.composer@2.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.0,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.1,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@2.1-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@3.0,True,True,True,hidl_interface
|
||||
android.hardware.graphics.mapper@3.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.health.storage@1.0,True,False,True,hidl_interface
|
||||
android.hardware.health.storage@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.health@1.0,True,False,True,hidl_interface
|
||||
android.hardware.health@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.health@2.0,True,False,True,hidl_interface
|
||||
android.hardware.health@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.input.classifier@1.0,True,False,True,hidl_interface
|
||||
android.hardware.input.classifier@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.input.common@1.0,True,False,True,hidl_interface
|
||||
android.hardware.input.common@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.ir@1.0,True,False,True,hidl_interface
|
||||
android.hardware.ir@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@3.0,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@3.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@4.0,True,False,True,hidl_interface
|
||||
android.hardware.keymaster@4.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.light@2.0,True,False,True,hidl_interface
|
||||
android.hardware.light@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media.bufferpool@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media.bufferpool@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media.bufferpool@2.0,True,False,True,hidl_interface
|
||||
android.hardware.media.bufferpool@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media.c2@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media.c2@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media.omx@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media.omx@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.media@1.0,True,False,True,hidl_interface
|
||||
android.hardware.media@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.memtrack@1.0,True,False,True,hidl_interface
|
||||
android.hardware.memtrack@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.0,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.1,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.2,True,False,True,hidl_interface
|
||||
android.hardware.neuralnetworks@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.0,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.1,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.2,True,False,True,hidl_interface
|
||||
android.hardware.nfc@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.oemlock@1.0,True,False,True,hidl_interface
|
||||
android.hardware.oemlock@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power.stats@1.0,True,False,True,hidl_interface
|
||||
android.hardware.power.stats@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.0,True,False,True,hidl_interface
|
||||
android.hardware.power@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.1,True,False,True,hidl_interface
|
||||
android.hardware.power@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.2,True,False,True,hidl_interface
|
||||
android.hardware.power@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.power@1.3,True,False,True,hidl_interface
|
||||
android.hardware.power@1.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.0,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.1,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.2,True,False,True,hidl_interface
|
||||
android.hardware.radio.config@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio.deprecated@1.0,True,False,True,hidl_interface
|
||||
android.hardware.radio.deprecated@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.0,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.1,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.2,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.3,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.4,True,False,True,hidl_interface
|
||||
android.hardware.radio@1.4-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.renderscript@1.0,True,True,True,hidl_interface
|
||||
android.hardware.renderscript@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hardware.secure_element@1.0,True,False,True,hidl_interface
|
||||
android.hardware.secure_element@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.secure_element@1.1,True,False,True,hidl_interface
|
||||
android.hardware.secure_element@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.sensors@1.0,True,False,True,hidl_interface
|
||||
android.hardware.sensors@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.sensors@2.0,True,False,True,hidl_interface
|
||||
android.hardware.sensors@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.0,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.0-core,True,False,True,cc_library_shared
|
||||
android.hardware.soundtrigger@2.1,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.2,True,False,True,hidl_interface
|
||||
android.hardware.soundtrigger@2.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tests.bar@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.bar@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.baz@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.baz@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.expression@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.expression@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.extension.light@2.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.extension.light@2.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.foo@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.foo@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.hash@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.hash@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.inheritance@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.inheritance@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.libhwbinder@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.libhwbinder@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.memory@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.memory@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.msgq@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.msgq@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.multithread@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.multithread@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.pointer@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.pointer@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.safeunion.cpp@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.safeunion.cpp@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.safeunion@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.safeunion@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tests.trie@1.0,False,False,True,hidl_interface
|
||||
android.hardware.tests.trie@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.config@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.config@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.control@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tetheroffload.control@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.0,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.1,True,False,True,hidl_interface
|
||||
android.hardware.thermal@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.thermal@2.0,True,False,True,hidl_interface
|
||||
android.hardware.thermal@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tv.cec@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tv.cec@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tv.cec@2.0,True,False,True,hidl_interface
|
||||
android.hardware.tv.cec@2.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.tv.input@1.0,True,False,True,hidl_interface
|
||||
android.hardware.tv.input@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb.gadget@1.0,True,False,True,hidl_interface
|
||||
android.hardware.usb.gadget@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.0,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.1,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.2,True,False,True,hidl_interface
|
||||
android.hardware.usb@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.0,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.1,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.2,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.3,True,False,True,hidl_interface
|
||||
android.hardware.vibrator@1.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.vr@1.0,True,False,True,hidl_interface
|
||||
android.hardware.vr@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.weaver@1.0,True,False,True,hidl_interface
|
||||
android.hardware.weaver@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.hostapd@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi.hostapd@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.hostapd@1.1,True,False,True,hidl_interface
|
||||
android.hardware.wifi.hostapd@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.offload@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi.offload@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.1,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.2,True,False,True,hidl_interface
|
||||
android.hardware.wifi.supplicant@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.0,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.1,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.2,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.3,True,False,True,hidl_interface
|
||||
android.hardware.wifi@1.3-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.allocator@1.0,True,False,True,hidl_interface
|
||||
android.hidl.allocator@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.base@1.0,True,False,True,hidl_interface
|
||||
android.hidl.base@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.0,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.1,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.2,True,False,True,hidl_interface
|
||||
android.hidl.manager@1.2-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.memory.block@1.0,True,False,True,hidl_interface
|
||||
android.hidl.memory.block@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.memory.token@1.0,True,True,True,hidl_interface
|
||||
android.hidl.memory.token@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hidl.memory@1.0,True,True,True,hidl_interface
|
||||
android.hidl.memory@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hidl.memory@1.0-impl,True,True,True,cc_library_shared
|
||||
android.hidl.safe_union@1.0,True,True,True,hidl_interface
|
||||
android.hidl.safe_union@1.0-adapter-helper,True,True,True,hidl_interface
|
||||
android.hidl.token@1.0,True,False,True,hidl_interface
|
||||
android.hidl.token@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.hidl.token@1.0-utils,True,False,True,cc_library
|
||||
android.system.net.netd@1.0,True,False,True,hidl_interface
|
||||
android.system.net.netd@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.system.net.netd@1.1,True,False,True,hidl_interface
|
||||
android.system.net.netd@1.1-adapter-helper,True,False,True,hidl_interface
|
||||
android.system.suspend@1.0,True,False,True,hidl_interface
|
||||
android.system.suspend@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
android.system.wifi.keystore@1.0,True,False,True,hidl_interface
|
||||
android.system.wifi.keystore@1.0-adapter-helper,True,False,True,hidl_interface
|
||||
hardware.google.light@1.0,False,False,True,hidl_interface
|
||||
hardware.google.light@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
hardware.google.media.c2@1.0,False,False,True,hidl_interface
|
||||
hardware.google.media.c2@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.0,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.1,False,False,True,hidl_interface
|
||||
hidl.tests.vendor@1.1-adapter-helper,False,False,True,hidl_interface
|
||||
libRSCpuRef,True,True,True,cc_library_shared
|
||||
libRSDriver,True,True,True,cc_library_shared
|
||||
libRS_internal,True,True,True,cc_library_shared
|
||||
libadf,True,False,True,cc_library
|
||||
libandroid_runtime_lazy,False,False,True,cc_library
|
||||
libasyncio,False,False,True,cc_library
|
||||
libaudioroute,True,False,True,cc_library_shared
|
||||
libaudioutils,True,False,True,cc_library
|
||||
libbacktrace,True,True,False,cc_library
|
||||
libbase,True,True,True,cc_library
|
||||
libbcinfo,True,True,True,cc_library_shared
|
||||
libbinder,True,False,True,cc_library_shared
|
||||
libbinder_ndk,False,False,True,cc_library
|
||||
libbinderthreadstate,True,True,False,cc_library
|
||||
libbinderwrapper,False,False,True,cc_library_shared
|
||||
libblas,True,True,False,cc_library_shared
|
||||
libc++,True,True,True,cc_library_shared
|
||||
libc2_component_wrapper,False,False,True,cc_library_shared
|
||||
libc_scudo,False,False,True,cc_library_shared
|
||||
libcamera2ndk_vendor,False,False,True,cc_library_shared
|
||||
libcamera_metadata,True,False,True,cc_library_shared
|
||||
libcap,True,False,True,cc_library
|
||||
libchrome,False,False,True,cc_library
|
||||
libchrome-crypto,False,False,True,cc_library_shared
|
||||
libclang_rt.scudo-aarch64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo-arm-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo-i686-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo-x86_64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo_minimal-aarch64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo_minimal-arm-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo_minimal-i686-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.scudo_minimal-x86_64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-aarch64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-arm-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-i686-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libclang_rt.ubsan_standalone-x86_64-android,True,False,True,libclang_rt_prebuilt_library_shared
|
||||
libcn-cbor,True,False,True,cc_library
|
||||
libcodec2,True,False,True,cc_library_shared
|
||||
libcodec2_component_wrapper,False,False,True,cc_library_shared
|
||||
libcodec2_hidl@1.0,True,False,True,cc_library
|
||||
libcodec2_hidl_utils@1.0,False,False,True,cc_library
|
||||
libcodec2_serviceregistrant,False,False,True,cc_library_shared
|
||||
libcodec2_simple_component,False,False,True,cc_library_shared
|
||||
libcodec2_soft_aacdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_aacenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_amrnbdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_amrnbenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_amrwbdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_amrwbenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_av1dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_avcdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_avcenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_common,False,False,True,cc_library_shared
|
||||
libcodec2_soft_flacdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_flacenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_g711alawdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_g711mlawdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_gsmdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_h263dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_h263enc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_hevcdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_hevcenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_mp3dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_mpeg2dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_mpeg4dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_mpeg4enc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_opusdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_opusenc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_rawdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_vorbisdec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_vp8dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_vp8enc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_vp9dec,False,False,True,cc_library_shared
|
||||
libcodec2_soft_vp9enc,False,False,True,cc_library_shared
|
||||
libcodec2_soft_xaacdec,False,False,True,cc_library_shared
|
||||
libcodec2_vndk,True,False,True,cc_library_shared
|
||||
libcompiler_rt,True,True,False,cc_library
|
||||
libcrypto,True,False,True,cc_library
|
||||
libcrypto_utils,True,False,True,cc_library
|
||||
libcurl,True,False,True,cc_library
|
||||
libcutils,True,True,True,cc_library
|
||||
libdemangle,False,False,True,cc_library
|
||||
libdexfile_support,False,False,True,cc_library
|
||||
libdiskconfig,True,False,True,cc_library
|
||||
libdng_sdk,False,False,True,cc_library
|
||||
libdrm,False,False,True,cc_library
|
||||
libdumpstateutil,True,False,True,cc_library_shared
|
||||
libeffectsconfig,False,False,True,cc_library
|
||||
libelf,False,False,True,cc_library
|
||||
libevent,True,False,True,cc_library
|
||||
libexif,True,False,True,cc_library_shared
|
||||
libexpat,True,False,True,cc_library
|
||||
libfmq,True,False,True,cc_library
|
||||
libgatekeeper,True,False,True,cc_library_shared
|
||||
libgflags,False,False,True,cc_library
|
||||
libgrallocusage,False,False,True,cc_library
|
||||
libgtest_prod,False,False,True,cc_library
|
||||
libgui,True,False,False,cc_library_shared
|
||||
libhardware,True,True,True,cc_library_shared
|
||||
libhardware_legacy,True,False,True,cc_library_shared
|
||||
libhidladapter,False,False,True,cc_library
|
||||
libhidlallocatorutils,True,False,True,cc_library
|
||||
libhidlbase,True,True,True,cc_library
|
||||
libhidlcache,True,False,True,cc_library
|
||||
libhidlmemory,True,True,True,cc_library
|
||||
libhidltransport,True,True,True,cc_library
|
||||
libhwbinder,True,True,True,cc_library
|
||||
libhwbinder_noltopgo,True,True,True,cc_library
|
||||
libion,True,True,True,cc_library
|
||||
libjpeg,True,False,True,cc_library
|
||||
libjsoncpp,True,True,True,cc_library
|
||||
libkeymaster4,False,False,True,cc_library_shared
|
||||
libkeymaster4support,False,False,True,cc_library
|
||||
libkeymaster_messages,True,False,True,cc_library_shared
|
||||
libkeymaster_portable,True,False,True,cc_library
|
||||
libkmsxx,False,False,True,cc_library_shared
|
||||
libldacBT_abr,True,False,True,cc_library_shared
|
||||
libldacBT_enc,True,False,True,cc_library_shared
|
||||
liblz4,True,False,True,cc_library
|
||||
liblzma,True,True,True,cc_library
|
||||
libmedia_codecserviceregistrant,False,False,True,cc_library_shared
|
||||
libmedia_ecoservice,False,False,True,cc_library_shared
|
||||
libmedia_helper,True,False,True,cc_library
|
||||
libmedia_omx,True,False,True,cc_library_shared
|
||||
libmemtrack,True,False,True,cc_library_shared
|
||||
libminijail,True,False,True,cc_library
|
||||
libmkbootimg_abi_check,True,False,True,cc_library
|
||||
libmojo,False,False,True,cc_library_shared
|
||||
libnetutils,True,False,True,cc_library_shared
|
||||
libnl,True,False,True,cc_library
|
||||
libopus,True,False,True,cc_library_shared
|
||||
libparameter,False,False,True,cc_library_shared
|
||||
libpcap,False,False,True,cc_library
|
||||
libpcre2,True,False,True,cc_library
|
||||
libperfmgr,False,False,True,cc_library
|
||||
libpiex,True,False,True,cc_library_shared
|
||||
libplatformprotos-static,False,False,True,cc_library
|
||||
libpng,True,False,True,cc_library
|
||||
libpower,True,False,True,cc_library
|
||||
libprocessgroup,True,True,True,cc_library
|
||||
libprocinfo,True,False,True,cc_library
|
||||
libprotobuf-cpp-full,True,False,True,cc_library_shared
|
||||
libprotobuf-cpp-full-rtti,False,False,True,cc_library_shared
|
||||
libprotobuf-cpp-lite,True,False,True,cc_library
|
||||
libprotobuf-cpp-lite-rtti,False,False,True,cc_library_shared
|
||||
libpuresoftkeymasterdevice,True,False,True,cc_library
|
||||
libradio_metadata,True,False,True,cc_library_shared
|
||||
libremote-processor,False,False,True,cc_library_shared
|
||||
libscudo_wrapper,False,False,True,cc_library_shared
|
||||
libselinux,True,False,True,cc_library
|
||||
libsfplugin_ccodec_utils,False,False,True,cc_library_shared
|
||||
libsoftkeymasterdevice,True,False,True,cc_library
|
||||
libspeexresampler,True,False,True,cc_library_shared
|
||||
libsqlite,True,False,True,cc_library
|
||||
libssl,True,False,True,cc_library
|
||||
libstagefright_amrnb_common,True,False,True,cc_library_shared
|
||||
libstagefright_bufferpool@1.0,False,False,True,cc_library
|
||||
libstagefright_bufferpool@2.0,True,False,True,cc_library
|
||||
libstagefright_bufferqueue_helper,True,False,True,cc_library_shared
|
||||
libstagefright_ccodec_utils,False,False,True,cc_library_shared
|
||||
libstagefright_codec2,False,False,True,cc_library_shared
|
||||
libstagefright_codec2_vndk,False,False,True,cc_library_shared
|
||||
libstagefright_enc_common,True,False,True,cc_library
|
||||
libstagefright_flacdec,True,False,True,cc_library
|
||||
libstagefright_foundation,True,False,True,cc_library
|
||||
libstagefright_omx,True,False,True,cc_library_shared
|
||||
libstagefright_omx_utils,True,False,True,cc_library_shared
|
||||
libstagefright_simple_c2component,False,False,True,cc_library_shared
|
||||
libstagefright_soft_aacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_aacenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_amrdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_amrnbenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_amrwbenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_avcdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_avcenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2aacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2aacenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrnbdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrnbenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrwbdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2amrwbenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2avcdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2avcenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2common,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2flacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2flacenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2g711alawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2g711mlawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2gsmdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2h263dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2h263enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2hevcdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mp3dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mpeg2dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mpeg4dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2mpeg4enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2opusdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2rawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vorbisdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp8dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp8enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp9dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2vp9enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_c2xaacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_flacdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_flacenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_g711dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_gsmdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_hevcdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_mp3dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_mpeg2dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_mpeg4dec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_mpeg4enc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_opusdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_rawdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_vorbisdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_vpxdec,False,False,True,cc_library_shared
|
||||
libstagefright_soft_vpxenc,False,False,True,cc_library_shared
|
||||
libstagefright_soft_xaacdec,False,False,True,cc_library_shared
|
||||
libstagefright_softomx,True,False,True,cc_library_shared
|
||||
libstagefright_xmlparser,True,False,True,cc_library_shared
|
||||
libsysutils,True,False,True,cc_library
|
||||
libtextclassifier_hash,False,False,True,cc_library_shared
|
||||
libtinyalsa,True,False,True,cc_library
|
||||
libtinyxml2,True,False,True,cc_library
|
||||
libui,True,False,True,cc_library_shared
|
||||
libunwindstack,True,True,True,cc_library
|
||||
libusb,False,False,True,cc_library
|
||||
libusbhost,True,False,True,cc_library
|
||||
libutils,True,True,True,cc_library
|
||||
libutilscallstack,True,True,True,cc_library
|
||||
libvorbisidec,True,False,True,cc_library
|
||||
libwifi-system-iface,True,False,True,cc_library
|
||||
libxml2,True,False,True,cc_library
|
||||
libyuv,True,False,True,cc_library
|
||||
libz,True,True,True,cc_library
|
||||
libziparchive,True,False,True,cc_library
|
||||
vendor.nxp.nxpese@1.0,False,False,True,hidl_interface
|
||||
vendor.nxp.nxpese@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
vendor.nxp.nxpnfc@1.0,False,False,True,hidl_interface
|
||||
vendor.nxp.nxpnfc@1.0-adapter-helper,False,False,True,hidl_interface
|
||||
|
@@ -1,826 +0,0 @@
|
||||
Path,Tag,Comments
|
||||
/apex/com.android.runtime/${LIB}/bionic/libc.so,LL-NDK,
|
||||
/apex/com.android.runtime/${LIB}/bionic/libdl.so,LL-NDK,
|
||||
/apex/com.android.runtime/${LIB}/bionic/libm.so,LL-NDK,
|
||||
/system/${LIB}/android.frameworks.cameraservice.common@2.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.cameraservice.device@2.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.cameraservice.service@2.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.stats@1.0.so,VNDK,
|
||||
/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.atrace@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common-util.so,FWK-ONLY,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0-util.so,FWK-ONLY,
|
||||
/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@4.0-util.so,FWK-ONLY,
|
||||
/system/${LIB}/android.hardware.audio.common@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.common@5.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio.effect@5.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.audio@5.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.authsecret@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.audiocontrol@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.biometrics.face@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth.a2dp@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.broadcastradio@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.device@3.5.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.metadata@3.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.camera.provider@2.5.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas.native@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.cas@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.configstore@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.confirmationui-support-lib.so,VNDK,
|
||||
/system/${LIB}/android.hardware.confirmationui@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.drm@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.fastboot@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss.measurement_corrections@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss.visibility_control@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.gnss@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.allocator@3.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.bufferqueue@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.1.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.common@1.2.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.composer@2.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@2.1.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.graphics.mapper@3.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.health.storage@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.health@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.input.classifier@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.input.common@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.keymaster@4.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.bufferpool@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.bufferpool@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.c2@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.neuralnetworks@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.neuralnetworks@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.neuralnetworks@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.nfc@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.oemlock@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power.stats@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.power@1.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.config@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.config@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.config@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.radio@1.4.so,VNDK,
|
||||
/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hardware.secure_element@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.secure_element@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.sensors@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.0-core.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.soundtrigger@2.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.thermal@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.cec@2.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb.gadget@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.usb@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vibrator@1.3.so,VNDK,
|
||||
/system/${LIB}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.weaver@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.hostapd@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.hostapd@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.offload@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi.supplicant@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.1.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.2.so,VNDK,
|
||||
/system/${LIB}/android.hardware.wifi@1.3.so,VNDK,
|
||||
/system/${LIB}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.memory.block@1.0.so,VNDK,
|
||||
/system/${LIB}/android.hidl.memory.token@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.safe_union@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.net.netd@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.net.netd@1.1.so,VNDK,
|
||||
/system/${LIB}/android.system.suspend@1.0.so,VNDK,
|
||||
/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libaacextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libamrextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libflacextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmidiextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmkvextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmp3extractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmp4extractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libmpeg2extractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/liboggextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/extractors/libwavextractor.so,FWK-ONLY,
|
||||
/system/${LIB}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP,
|
||||
/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY,
|
||||
/system/${LIB}/ld-android.so,LL-NDK-Private,
|
||||
/system/${LIB}/libEGL.so,LL-NDK,
|
||||
/system/${LIB}/libETC1.so,FWK-ONLY,
|
||||
/system/${LIB}/libFFTEm.so,FWK-ONLY,
|
||||
/system/${LIB}/libGLESv1_CM.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv2.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv3.so,LL-NDK,
|
||||
/system/${LIB}/libLLVM_android.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
|
||||
/system/${LIB}/libOpenSLES.so,FWK-ONLY,
|
||||
/system/${LIB}/libRS.so,LL-NDK,
|
||||
/system/${LIB}/libRSCacheDir.so,FWK-ONLY,
|
||||
/system/${LIB}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/libRScpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libaaudio.so,FWK-ONLY,
|
||||
/system/${LIB}/libaaudioservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libadbconnection.so,FWK-ONLY,
|
||||
/system/${LIB}/libadbconnectiond.so,FWK-ONLY,
|
||||
/system/${LIB}/libadf.so,VNDK,
|
||||
/system/${LIB}/libandroid.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_net.so,LL-NDK,
|
||||
/system/${LIB}/libandroid_runtime.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroid_servers.so,FWK-ONLY,
|
||||
/system/${LIB}/libandroidfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libappfuse.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-compiler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-dexlayout.so,FWK-ONLY,
|
||||
/system/${LIB}/libart-disassembler.so,FWK-ONLY,
|
||||
/system/${LIB}/libart.so,FWK-ONLY,
|
||||
/system/${LIB}/libartd-compiler.so,FWK-ONLY,
|
||||
/system/${LIB}/libartd-dexlayout.so,FWK-ONLY,
|
||||
/system/${LIB}/libartd.so,FWK-ONLY,
|
||||
/system/${LIB}/libasyncio.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioclient.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal@2.0.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiohal_deathhandler.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiomanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioprocessing.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/libaudiospdif.so,FWK-ONLY,
|
||||
/system/${LIB}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/libavservices_minijail.so,FWK-ONLY,Vendor module should link libavservices_minijail_vendor.so
|
||||
/system/${LIB}/libbacktrace.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/libbcc.so,FWK-ONLY,
|
||||
/system/${LIB}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/libbinder.so,VNDK,
|
||||
/system/${LIB}/libbinderthreadstate.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libbinderwrapper.so,FWK-ONLY,
|
||||
/system/${LIB}/libblas.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libbluetooth-binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libbluetooth.so,FWK-ONLY,
|
||||
/system/${LIB}/libbluetooth_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libbootanimation.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo-stream.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrillo.so,FWK-ONLY,
|
||||
/system/${LIB}/libbrotli.so,FWK-ONLY,
|
||||
/system/${LIB}/libbufferhub.so,FWK-ONLY,
|
||||
/system/${LIB}/libbufferhubqueue.so,FWK-ONLY,
|
||||
/system/${LIB}/libbz.so,FWK-ONLY,
|
||||
/system/${LIB}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/libc.so,LL-NDK,
|
||||
/system/${LIB}/libc_malloc_debug.so,LL-NDK-Private,
|
||||
/system/${LIB}/libcamera2ndk.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/libcameraservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libcap.so,VNDK,
|
||||
/system/${LIB}/libcgrouprc.so,LL-NDK,
|
||||
/system/${LIB}/libchrome.so,FWK-ONLY,
|
||||
/system/${LIB}/libclang_rt.asan-aarch64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-arm-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-i686-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-mips-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-mips64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.asan-x86_64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.hwasan-aarch64-android.so,LL-NDK,
|
||||
/system/${LIB}/libclang_rt.scudo-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo-arm-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo-i686-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo_minimal-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo_minimal-arm-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo_minimal-i686-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.scudo_minimal-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/libcn-cbor.so,VNDK,
|
||||
/system/${LIB}/libcodec2.so,VNDK,
|
||||
/system/${LIB}/libcodec2_hidl@1.0.so,VNDK,
|
||||
/system/${LIB}/libcodec2_vndk.so,VNDK,
|
||||
/system/${LIB}/libcompiler_rt.so,VNDK-SP-Private,
|
||||
/system/${LIB}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/libcups.so,FWK-ONLY,
|
||||
/system/${LIB}/libcurl.so,VNDK,
|
||||
/system/${LIB}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/libdebuggerd_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/libdisplayservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libdl.so,LL-NDK,
|
||||
/system/${LIB}/libdl_android.so,LL-NDK-Private,
|
||||
/system/${LIB}/libdng_sdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework.so,FWK-ONLY,
|
||||
/system/${LIB}/libdrmframework_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libdt_fd_forward.so,FWK-ONLY,
|
||||
/system/${LIB}/libdt_socket.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateaidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/libeffectsconfig.so,FWK-ONLY,
|
||||
/system/${LIB}/libevent.so,VNDK,
|
||||
/system/${LIB}/libexif.so,VNDK,
|
||||
/system/${LIB}/libexpat.so,VNDK,
|
||||
/system/${LIB}/libext2_blkid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_com_err.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_e2p.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_misc.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_quota.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2_uuid.so,FWK-ONLY,
|
||||
/system/${LIB}/libext2fs.so,FWK-ONLY,
|
||||
/system/${LIB}/libext4_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterfw.so,FWK-ONLY,
|
||||
/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY,
|
||||
/system/${LIB}/libfmq.so,VNDK,
|
||||
/system/${LIB}/libframesequence.so,FWK-ONLY,
|
||||
/system/${LIB}/libft2.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/libgiftranscode.so,FWK-ONLY,
|
||||
/system/${LIB}/libgraphicsenv.so,FWK-ONLY,
|
||||
/system/${LIB}/libgtest_prod.so,FWK-ONLY,
|
||||
/system/${LIB}/libgui.so,VNDK-Private,
|
||||
/system/${LIB}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY,
|
||||
/system/${LIB}/libheif.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidcommand_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidl-gen-hash.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libhidlallocatorutils.so,VNDK,
|
||||
/system/${LIB}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/libhidlcache.so,VNDK,
|
||||
/system/${LIB}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/libhwbinder_noltopgo.so,VNDK-SP,
|
||||
/system/${LIB}/libhwui.so,FWK-ONLY,
|
||||
/system/${LIB}/libicui18n.so,FWK-ONLY,
|
||||
/system/${LIB}/libicuuc.so,FWK-ONLY,
|
||||
/system/${LIB}/libimg_utils.so,FWK-ONLY,
|
||||
/system/${LIB}/libincident.so,FWK-ONLY,
|
||||
/system/${LIB}/libinput.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libinputservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/libiprouteutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacore.so,FWK-ONLY,
|
||||
/system/${LIB}/libjavacrypto.so,FWK-ONLY,
|
||||
/system/${LIB}/libjdwp.so,FWK-ONLY,
|
||||
/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY,
|
||||
/system/${LIB}/libjnigraphics.so,FWK-ONLY,
|
||||
/system/${LIB}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/libjsoncpp.so,VNDK-SP,
|
||||
/system/${LIB}/libkeymaster4support.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/libkeymaster_portable.so,VNDK,
|
||||
/system/${LIB}/libkeystore-engine.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_aidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_binder.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeystore_parcelables.so,FWK-ONLY,
|
||||
/system/${LIB}/libkeyutils.so,FWK-ONLY,
|
||||
/system/${LIB}/liblayers_proto.so,FWK-ONLY,
|
||||
/system/${LIB}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/liblog.so,LL-NDK,
|
||||
/system/${LIB}/liblogwrap.so,FWK-ONLY,
|
||||
/system/${LIB}/liblshal.so,FWK-ONLY,
|
||||
/system/${LIB}/liblz4.so,VNDK,
|
||||
/system/${LIB}/liblzma.so,VNDK-SP,
|
||||
/system/${LIB}/libm.so,LL-NDK,
|
||||
/system/${LIB}/libmdnssd.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/libmedia_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/libmediadrm.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediaextractorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmedialogservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediametrics.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libmediaplayerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libmediautils.so,FWK-ONLY,
|
||||
/system/${LIB}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/libmemunreachable.so,FWK-ONLY,
|
||||
/system/${LIB}/libmetricslogger.so,FWK-ONLY,
|
||||
/system/${LIB}/libminijail.so,VNDK,
|
||||
/system/${LIB}/libminikin.so,FWK-ONLY,
|
||||
/system/${LIB}/libmkbootimg_abi_check.so,VNDK,
|
||||
/system/${LIB}/libmtp.so,FWK-ONLY,
|
||||
/system/${LIB}/libnativewindow.so,LL-NDK,
|
||||
/system/${LIB}/libnbaio.so,FWK-ONLY,Vendor module should link libnbaio_mono.so
|
||||
/system/${LIB}/libnblog.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetd_client.so,LL-NDK-Private,
|
||||
/system/${LIB}/libnetdutils.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetlink.so,FWK-ONLY,
|
||||
/system/${LIB}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/libneuralnetworks.so,LL-NDK,
|
||||
/system/${LIB}/libnfc-nci.so,FWK-ONLY,
|
||||
/system/${LIB}/libnfc_nci_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libnl.so,VNDK,
|
||||
/system/${LIB}/libnpt.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdk.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkd.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvm.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmd.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY,
|
||||
/system/${LIB}/libopenjdkjvmtid.so,FWK-ONLY,
|
||||
/system/${LIB}/libopus.so,VNDK,
|
||||
/system/${LIB}/libpackagelistparser.so,FWK-ONLY,
|
||||
/system/${LIB}/libpcap.so,FWK-ONLY,
|
||||
/system/${LIB}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/libpcrecpp.so,FWK-ONLY,
|
||||
/system/${LIB}/libpdfium.so,FWK-ONLY,
|
||||
/system/${LIB}/libpdx_default_transport.so,FWK-ONLY,
|
||||
/system/${LIB}/libpiex.so,VNDK,
|
||||
/system/${LIB}/libpixelflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libpng.so,VNDK,
|
||||
/system/${LIB}/libpower.so,VNDK,
|
||||
/system/${LIB}/libpowermanager.so,FWK-ONLY,
|
||||
/system/${LIB}/libprintspooler_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libprocessgroup.so,VNDK-SP,
|
||||
/system/${LIB}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/libprotoutil.so,FWK-ONLY,
|
||||
/system/${LIB}/libpuresoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/libqtaguid.so,FWK-ONLY,
|
||||
/system/${LIB}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/libresourcemanagerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/librs_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/librtp_jni.so,FWK-ONLY,
|
||||
/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libselinux.so,VNDK,
|
||||
/system/${LIB}/libsensor.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsensorservicehidl.so,FWK-ONLY,
|
||||
/system/${LIB}/libsepol.so,FWK-ONLY,
|
||||
/system/${LIB}/libservices.so,FWK-ONLY,
|
||||
/system/${LIB}/libsigchain.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/libsonic.so,FWK-ONLY,
|
||||
/system/${LIB}/libsonivox.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundpool.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtrigger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY,
|
||||
/system/${LIB}/libsparse.so,FWK-ONLY,
|
||||
/system/${LIB}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/libssl.so,VNDK,
|
||||
/system/${LIB}/libstagefright.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_amrnb_common.so,VNDK,
|
||||
/system/${LIB}/libstagefright_bufferpool@2.0.so,VNDK,
|
||||
/system/${LIB}/libstagefright_bufferqueue_helper.so,VNDK,
|
||||
/system/${LIB}/libstagefright_enc_common.so,VNDK,
|
||||
/system/${LIB}/libstagefright_flacdec.so,VNDK,
|
||||
/system/${LIB}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/libstagefright_http_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_httplive.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/libstagefright_omx_utils.so,VNDK,
|
||||
/system/${LIB}/libstagefright_soft_aacdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_aacenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_amrdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_amrnbenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_amrwbenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_avcdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_avcenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_flacdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_flacenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_g711dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_gsmdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_hevcdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mp3dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mpeg2dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4dec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_mpeg4enc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_opusdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_rawdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_vorbisdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_vpxdec.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_soft_vpxenc.so,FWK-ONLY,
|
||||
/system/${LIB}/libstagefright_softomx.so,VNDK,
|
||||
/system/${LIB}/libstagefright_xmlparser.so,VNDK,
|
||||
/system/${LIB}/libstatslog.so,FWK-ONLY,
|
||||
/system/${LIB}/libstdc++.so,FWK-ONLY,
|
||||
/system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
|
||||
/system/${LIB}/libsuspend.so,FWK-ONLY,
|
||||
/system/${LIB}/libsync.so,LL-NDK,
|
||||
/system/${LIB}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/libtextclassifier.so,FWK-ONLY,
|
||||
/system/${LIB}/libtextclassifier_hash.so,LL-NDK-Private,
|
||||
/system/${LIB}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/libtombstoned_client.so,FWK-ONLY,
|
||||
/system/${LIB}/libui.so,VNDK,
|
||||
/system/${LIB}/libunwind.so,FWK-ONLY,
|
||||
/system/${LIB}/libunwindstack.so,VNDK-SP,
|
||||
/system/${LIB}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/libutilscallstack.so,VNDK-SP,
|
||||
/system/${LIB}/libvintf.so,FWK-ONLY,
|
||||
/system/${LIB}/libvndksupport.so,LL-NDK,
|
||||
/system/${LIB}/libvorbisidec.so,VNDK,
|
||||
/system/${LIB}/libvulkan.so,LL-NDK,
|
||||
/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
|
||||
/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
|
||||
/system/${LIB}/libwfds.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-service.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifi-system-iface.so,VNDK,
|
||||
/system/${LIB}/libwifi-system.so,FWK-ONLY,
|
||||
/system/${LIB}/libwifikeystorehal.so,FWK-ONLY,
|
||||
/system/${LIB}/libwilhelm.so,FWK-ONLY,
|
||||
/system/${LIB}/libxml2.so,VNDK,
|
||||
/system/${LIB}/libyuv.so,VNDK,
|
||||
/system/${LIB}/libz.so,VNDK-SP,
|
||||
/system/${LIB}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.cameraservice.common@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.cameraservice.device@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.cameraservice.service@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.displayservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.schedulerservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.sensorservice@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.stats@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.frameworks.vr.composer@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.atrace@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@4.0-util.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.common@5.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio.effect@5.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.audio@5.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.authsecret@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.audiocontrol@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.evs@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.automotive.vehicle@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.biometrics.face@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth.a2dp@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth.audio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.bluetooth@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.boot@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.broadcastradio@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.common@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.device@3.5.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.metadata@3.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.provider@2.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.camera.provider@2.5.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas.native@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.cas@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.configstore@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.confirmationui-support-lib.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.confirmationui@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.contexthub@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.drm@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.dumpstate@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.fastboot@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gatekeeper@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss.measurement_corrections@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss.visibility_control@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.gnss@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.allocator@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.allocator@3.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.bufferqueue@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.graphics.composer@2.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health.storage@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.health@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.input.classifier@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.input.common@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.ir@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.keymaster@3.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.keymaster@4.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.light@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.bufferpool@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.bufferpool@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.c2@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media.omx@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.media@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.memtrack@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.neuralnetworks@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.neuralnetworks@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.neuralnetworks@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.nfc@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.oemlock@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power.stats@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.power@1.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.config@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.config@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.config@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio.deprecated@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.radio@1.4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.secure_element@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.secure_element@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.sensors@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.sensors@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.0-core.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.soundtrigger@2.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.config@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tetheroffload.control@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.thermal@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.cec@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.cec@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.tv.input@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb.gadget@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.usb@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vibrator@1.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.vr@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.weaver@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.hostapd@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.hostapd@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.offload@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi.supplicant@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hardware.wifi@1.3.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.allocator@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.memory.block@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0-utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.hidl.token@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.net.netd@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.net.netd@1.1.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.suspend@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/android.system.wifi.keystore@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libadf.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioroute.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libaudioutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libbinder.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcamera_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo-arm-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo-i686-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo_minimal-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo_minimal-arm-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo_minimal-i686-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.scudo_minimal-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcn-cbor.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcodec2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcodec2_hidl@1.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcodec2_vndk.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcrypto_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libcurl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdiskconfig.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libdumpstateutil.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libevent.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexif.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libexpat.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libfmq.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgatekeeper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libgui.so,VNDK-Private,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhardware_legacy.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhidlallocatorutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libhidlcache.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libjpeg.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_messages.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libkeymaster_portable.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_abr.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libldacBT_enc.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/liblz4.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_helper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmedia_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmemtrack.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libminijail.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libmkbootimg_abi_check.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnetutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libnl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libopus.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpagemap.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpcre2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpiex.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpng.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpower.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprocinfo.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-full.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libprotobuf-cpp-lite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libpuresoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libradio_metadata.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libselinux.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsoftkeymasterdevice.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libspeexresampler.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsqlite.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libssl.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_amrnb_common.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_bufferpool@2.0.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_bufferqueue_helper.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_enc_common.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_flacdec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_foundation.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_omx_utils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_softomx.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libstagefright_xmlparser.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsuspend.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libsysutils.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyalsa.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libtinyxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libui.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libusbhost.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvixl-arm64.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libvorbisidec.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libwifi-system-iface.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libxml2.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libyuv.so,VNDK,
|
||||
/system/${LIB}/vndk${VNDK_VER}/libziparchive.so,VNDK,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.1.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.common@1.2.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@2.1.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.graphics.mapper@3.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.memory.token@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/android.hidl.safe_union@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/hw/android.hidl.memory@1.0-impl.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbacktrace.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libbinderthreadstate.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libblas.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcompiler_rt.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libdexfile.so,VNDK-SP-Private,Workaround for degenerated VDNK
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libhwbinder_noltopgo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libion.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libjsoncpp.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/liblzma.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libprocessgroup.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwind.so,VNDK-SP-Private,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libunwindstack.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libutilscallstack.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp${VNDK_VER}/libz.so,VNDK-SP,
|
||||
/vendor/${LIB}/hidl.tests.vendor@1.0.so,VND-ONLY,
|
||||
/vendor/${LIB}/hidl.tests.vendor@1.1.so,VND-ONLY,
|
||||
/vendor/${LIB}/libavservices_minijail_vendor.so,VND-ONLY,Framework module should link libavservices_minijail.so
|
||||
/vendor/${LIB}/libcld80211.so,VND-ONLY,
|
||||
/vendor/${LIB}/libeffects.so,VND-ONLY,
|
||||
/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY,
|
||||
/vendor/${LIB}/libnbaio_mono.so,VND-ONLY,
|
||||
/vendor/${LIB}/libreference-ril.so,VND-ONLY,
|
||||
/vendor/${LIB}/libril.so,VND-ONLY,
|
||||
/vendor/${LIB}/librilutils.so,VND-ONLY,
|
||||
/vendor/${LIB}/libtinycompress.so,VND-ONLY,
|
||||
/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libaudiopreprocessing.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libbundlewrapper.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libdownmix.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libeffectproxy.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libldnhncr.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libreverbwrapper.so,VND-ONLY,
|
||||
/vendor/${LIB}/soundfx/libvisualizer.so,VND-ONLY,
|
||||
[regex]^.*/android\.hardware\.graphics\.mapper@\d+\.\d+-impl\.so$,SP-HAL,
|
||||
[regex]^.*/android\.hardware\.renderscript@1\.0-impl\.so$,SP-HAL,
|
||||
[regex]^.*/gralloc\..*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libEGL_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLES_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv1_CM_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv2_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv3_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libPVRRS\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libRSDriver.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/vulkan.*\.so$,SP-HAL,
|
||||
|
@@ -1,5 +0,0 @@
|
||||
/system/${LIB}/libEGL.so:[regex]/vendor/${LIB}/egl/libEGL[A-Za-z0-9_-]*\.so
|
||||
/system/${LIB}/libEGL.so:[regex]/vendor/${LIB}/egl/libGLES[A-Za-z0-9_-]*\.so
|
||||
/apex/com.android.runtime/${LIB}/bionic/libc.so:/apex/com.android.runtime/${LIB}/libc_malloc_debug.so
|
||||
/apex/com.android.runtime/${LIB}/bionic/libc.so:/apex/com.android.runtime/${LIB}/libicuuc.so
|
||||
/apex/com.android.runtime/${LIB}/bionic/libc.so:/system/${LIB}/libnetd_client.so
|
||||
@@ -1,59 +0,0 @@
|
||||
Path,Tag,Comments
|
||||
/apex/com.android.runtime/${LIB}/bionic/libc.so,LL-NDK,
|
||||
/apex/com.android.runtime/${LIB}/bionic/libdl.so,LL-NDK,
|
||||
/apex/com.android.runtime/${LIB}/bionic/libm.so,LL-NDK,
|
||||
/system/${LIB}/libEGL.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv1_CM.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv2.so,LL-NDK,
|
||||
/system/${LIB}/libGLESv3.so,LL-NDK,
|
||||
/system/${LIB}/libandroid_net.so,LL-NDK,
|
||||
/system/${LIB}/libc.so,LL-NDK,
|
||||
/system/${LIB}/libdl.so,LL-NDK,
|
||||
/system/${LIB}/libft2.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/liblog.so,LL-NDK,
|
||||
/system/${LIB}/libm.so,LL-NDK,
|
||||
/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/libnativewindow.so,LL-NDK,
|
||||
/system/${LIB}/libstdc++.so,LL-NDK,
|
||||
/system/${LIB}/libsync.so,LL-NDK,
|
||||
/system/${LIB}/libvndksupport.so,LL-NDK,
|
||||
/system/${LIB}/libvulkan.so,LL-NDK,
|
||||
/system/${LIB}/libz.so,LL-NDK,
|
||||
/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp/libbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp/libc++.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private,
|
||||
/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libft2.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/libion.so,VNDK-SP,
|
||||
/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp/libmediandk.so,FWK-ONLY-RS,
|
||||
/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect,
|
||||
/system/${LIB}/vndk-sp/libutils.so,VNDK-SP,
|
||||
[regex]^.*/android\.hardware\.graphics\.mapper@\d+\.\d+-impl\.so$,SP-HAL,
|
||||
[regex]^.*/android\.hardware\.renderscript@1\.0-impl\.so$,SP-HAL,
|
||||
[regex]^.*/gralloc\..*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libEGL_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLES_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv1_CM_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv2_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libGLESv3_.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libPVRRS\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/libRSDriver.*\.so$,SP-HAL,
|
||||
[regex]^/vendor/.*/vulkan.*\.so$,SP-HAL,
|
||||
|
@@ -1,88 +0,0 @@
|
||||
ifneq ($(filter $(YOUR_DEVICE_NAME),$(TARGET_DEVICE)),)
|
||||
|
||||
|
||||
VNDK_SP_LIBRARIES := ##_VNDK_SP_##
|
||||
|
||||
VNDK_SP_EXT_LIBRARIES := ##_VNDK_SP_EXT_##
|
||||
|
||||
EXTRA_VENDOR_LIBRARIES := ##_EXTRA_VENDOR_LIBS_##
|
||||
|
||||
# FIXME: Generate INSTALL_IN_HW_SUBDIR automatically
|
||||
INSTALL_IN_HW_SUBDIR := android.hidl.memory@1.0-impl
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# VNDK Modules
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# Start from Android P, VNDK directory will always be versioned.
|
||||
ifdef PLATFORM_VNDK_VERSION
|
||||
VNDK_SP_DIR := vndk-sp-$(PLATFORM_VNDK_VERSION)
|
||||
else
|
||||
VNDK_SP_DIR := vndk-sp
|
||||
endif
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
define define-vndk-lib
|
||||
include $$(CLEAR_VARS)
|
||||
LOCAL_MODULE := $1.$2
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_PREBUILT_MODULE_FILE := $$(TARGET_OUT_INTERMEDIATE_LIBRARIES)/$1.so
|
||||
LOCAL_STRIP_MODULE := false
|
||||
LOCAL_MULTILIB := first
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_INSTALLED_MODULE_STEM := $1.so
|
||||
LOCAL_MODULE_SUFFIX := .so
|
||||
LOCAL_MODULE_RELATIVE_PATH := $3$(if $(filter $1,$(INSTALL_IN_HW_SUBDIR)),/hw)
|
||||
LOCAL_VENDOR_MODULE := $4
|
||||
include $$(BUILD_PREBUILT)
|
||||
|
||||
ifneq ($$(TARGET_2ND_ARCH),)
|
||||
ifneq ($$(TARGET_TRANSLATE_2ND_ARCH),true)
|
||||
include $$(CLEAR_VARS)
|
||||
LOCAL_MODULE := $1.$2
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_PREBUILT_MODULE_FILE := $$($$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES)/$1.so
|
||||
LOCAL_STRIP_MODULE := false
|
||||
LOCAL_MULTILIB := 32
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_INSTALLED_MODULE_STEM := $1.so
|
||||
LOCAL_MODULE_SUFFIX := .so
|
||||
LOCAL_MODULE_RELATIVE_PATH := $3$(if $(filter $1,$(INSTALL_IN_HW_SUBDIR)),/hw)
|
||||
LOCAL_VENDOR_MODULE := $4
|
||||
include $$(BUILD_PREBUILT)
|
||||
endif # TARGET_TRANSLATE_2ND_ARCH is not true
|
||||
endif # TARGET_2ND_ARCH is not empty
|
||||
endef
|
||||
|
||||
$(foreach lib,$(VNDK_SP_LIBRARIES),\
|
||||
$(eval $(call define-vndk-lib,$(lib),vndk-sp-gen,$(VNDK_SP_DIR),)))
|
||||
$(foreach lib,$(VNDK_SP_EXT_LIBRARIES),\
|
||||
$(eval $(call define-vndk-lib,$(lib),vndk-sp-ext-gen,$(VNDK_SP_DIR),true)))
|
||||
$(foreach lib,$(EXTRA_VENDOR_LIBRARIES),\
|
||||
$(eval $(call define-vndk-lib,$(lib),vndk-ext-gen,,true)))
|
||||
|
||||
VNDK_SP_DIR :=
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Phony Package
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := $(YOUR_DEVICE_NAME)-vndk
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_REQUIRED_MODULES := \
|
||||
$(addsuffix .vndk-sp-gen,$(VNDK_SP_LIBRARIES)) \
|
||||
$(addsuffix .vndk-sp-ext-gen,$(VNDK_SP_EXT_LIBRARIES)) \
|
||||
$(addsuffix .vndk-ext-gen,$(EXTRA_VENDOR_LIBRARIES))
|
||||
include $(BUILD_PHONY_PACKAGE)
|
||||
|
||||
# Unset variables
|
||||
VNDK_SP_LIBRARIES :=
|
||||
VNDK_SP_EXT_LIBRARIES :=
|
||||
EXTRA_VENDOR_LIBRARIES :=
|
||||
INSTALL_IN_HW_SUBDIR :=
|
||||
|
||||
endif # ifneq ($(filter $(YOUR_DEVICE_NAME),$(TARGET_DEVICE)),)
|
||||
@@ -1,89 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# pylint: disable=unused-import,import-error
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
try:
|
||||
from tempfile import TemporaryDirectory
|
||||
except ImportError:
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
|
||||
class TemporaryDirectory(object):
|
||||
def __init__(self, suffix='', prefix='tmp', dir=None):
|
||||
# pylint: disable=redefined-builtin
|
||||
self.name = tempfile.mkdtemp(suffix, prefix, dir)
|
||||
|
||||
|
||||
def __del__(self):
|
||||
self.cleanup()
|
||||
|
||||
|
||||
def __enter__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
def __exit__(self, exc, value, tb):
|
||||
self.cleanup()
|
||||
|
||||
|
||||
def cleanup(self):
|
||||
if self.name:
|
||||
shutil.rmtree(self.name)
|
||||
self.name = None
|
||||
|
||||
|
||||
if sys.version_info >= (3, 0):
|
||||
from os import makedirs
|
||||
else:
|
||||
import os
|
||||
|
||||
|
||||
def makedirs(path, exist_ok):
|
||||
if exist_ok and os.path.exists(path):
|
||||
return
|
||||
os.makedirs(path)
|
||||
|
||||
|
||||
if sys.version_info >= (3, 0):
|
||||
from io import StringIO
|
||||
else:
|
||||
from StringIO import StringIO
|
||||
|
||||
|
||||
try:
|
||||
from unittest.mock import patch
|
||||
except ImportError:
|
||||
import contextlib
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def patch(target, mock):
|
||||
obj, attr = target.rsplit('.')
|
||||
obj = __import__(obj)
|
||||
original_value = getattr(obj, attr)
|
||||
setattr(obj, attr, mock)
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
setattr(obj, attr, original_value)
|
||||
|
||||
|
||||
if sys.version_info >= (3, 2):
|
||||
from unittest import TestCase
|
||||
else:
|
||||
import unittest
|
||||
|
||||
|
||||
class TestCase(unittest.TestCase):
|
||||
def assertRegex(self, text, expected_regex, msg=None):
|
||||
# pylint: disable=deprecated-method
|
||||
self.assertRegexpMatches(text, expected_regex, msg)
|
||||
|
||||
|
||||
def assertNotRegex(self, text, unexpected_regex, msg=None):
|
||||
# pylint: disable=deprecated-method
|
||||
self.assertNotRegexpMatches(text, unexpected_regex, msg)
|
||||
@@ -1,191 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import collections
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def detect_ndk_dir():
|
||||
ndk_dir = os.getenv('NDK')
|
||||
if not ndk_dir:
|
||||
error_msg = '''error: NDK toolchain is required for this test case.
|
||||
error:
|
||||
error: Steps:
|
||||
error: 1. Download NDK from https://developer.android.com/ndk/downloads/
|
||||
error: 2. Unzip the archive (android-ndk-r15c-linux-x86_64.zip)
|
||||
error: 3. Set environment variable NDK to the extracted directory
|
||||
error: (export NDK=android-ndk-r15c)
|
||||
error:'''
|
||||
print(error_msg, file=sys.stderr)
|
||||
raise ValueError('NDK toolchain not specified')
|
||||
|
||||
if not os.path.exists(ndk_dir):
|
||||
raise ValueError('NDK toolchain not found')
|
||||
|
||||
return ndk_dir
|
||||
|
||||
|
||||
def detect_api_level(ndk_dir):
|
||||
try:
|
||||
apis = []
|
||||
pattern = re.compile('android-(\\d+)')
|
||||
for name in os.listdir(os.path.join(ndk_dir, 'platforms')):
|
||||
match = pattern.match(name)
|
||||
if match:
|
||||
apis.append(int(match.group(1)))
|
||||
if not apis:
|
||||
raise ValueError('failed to find latest api')
|
||||
return 'android-{}'.format(max(apis))
|
||||
except IOError:
|
||||
raise ValueError('failed to find latest api')
|
||||
|
||||
|
||||
def detect_host():
|
||||
if sys.platform.startswith('linux'):
|
||||
return 'linux-x86_64'
|
||||
if sys.platform.startswith('darwin'):
|
||||
return 'darwin-x86_64'
|
||||
raise NotImplementedError('unknown host platform')
|
||||
|
||||
|
||||
def get_gcc_dir(ndk_dir, arch, host):
|
||||
return os.path.join(ndk_dir, 'toolchains', arch, 'prebuilt', host)
|
||||
|
||||
|
||||
def get_clang_dir(ndk_dir, host):
|
||||
return os.path.join(ndk_dir, 'toolchains', 'llvm', 'prebuilt', host)
|
||||
|
||||
|
||||
def get_platform_dir(ndk_dir, api, subdirs):
|
||||
return os.path.join(ndk_dir, 'platforms', api, *subdirs)
|
||||
|
||||
|
||||
class Target(object):
|
||||
def __init__(self, name, triple, cflags, ldflags, gcc_toolchain_dir,
|
||||
clang_dir, ndk_include, ndk_lib):
|
||||
self.name = name
|
||||
self.target_triple = triple
|
||||
self.target_cflags = cflags
|
||||
self.target_ldflags = ldflags
|
||||
|
||||
self.gcc_toolchain_dir = gcc_toolchain_dir
|
||||
self.clang_dir = clang_dir
|
||||
self.ndk_include = ndk_include
|
||||
self.ndk_lib = ndk_lib
|
||||
|
||||
|
||||
def check_paths(self):
|
||||
def check_path(path):
|
||||
if os.path.exists(path):
|
||||
return True
|
||||
print('error: File not found:', path, file=sys.stderr)
|
||||
return False
|
||||
|
||||
ld_exeutable = os.path.join(
|
||||
self.gcc_toolchain_dir, 'bin', self.target_triple + '-ld')
|
||||
|
||||
success = check_path(self.gcc_toolchain_dir)
|
||||
success &= check_path(ld_exeutable)
|
||||
success &= check_path(self.clang_dir)
|
||||
success &= check_path(self.ndk_include)
|
||||
success &= check_path(self.ndk_lib)
|
||||
return success
|
||||
|
||||
|
||||
def compile(self, obj_file, src_file, cflags):
|
||||
clang = os.path.join(self.clang_dir, 'bin', 'clang')
|
||||
|
||||
cmd = [clang, '-o', obj_file, '-c', src_file]
|
||||
cmd.extend(['-fPIE', '-fPIC'])
|
||||
cmd.extend(['-gcc-toolchain', self.gcc_toolchain_dir])
|
||||
cmd.extend(['-target', self.target_triple])
|
||||
cmd.extend(['-isystem', self.ndk_include])
|
||||
cmd.extend(cflags)
|
||||
cmd.extend(self.target_cflags)
|
||||
subprocess.check_call(cmd)
|
||||
|
||||
|
||||
def link(self, out_file, obj_files, ldflags):
|
||||
if '-shared' in ldflags:
|
||||
crtbegin = os.path.join(self.ndk_lib, 'crtbegin_so.o')
|
||||
crtend = os.path.join(self.ndk_lib, 'crtend_so.o')
|
||||
else:
|
||||
crtbegin = os.path.join(self.ndk_lib, 'crtbegin_static.o')
|
||||
crtend = os.path.join(self.ndk_lib, 'crtend_android.o')
|
||||
|
||||
clang = os.path.join(self.clang_dir, 'bin', 'clang')
|
||||
|
||||
cmd = [clang, '-o', out_file]
|
||||
cmd.extend(['-fPIE', '-fPIC', '-Wl,--no-undefined', '-nostdlib'])
|
||||
cmd.append('-L' + self.ndk_lib)
|
||||
cmd.extend(['-gcc-toolchain', self.gcc_toolchain_dir])
|
||||
cmd.extend(['-target', self.target_triple])
|
||||
cmd.append(crtbegin)
|
||||
cmd.extend(obj_files)
|
||||
cmd.append(crtend)
|
||||
cmd.extend(ldflags)
|
||||
cmd.extend(self.target_ldflags)
|
||||
if '-shared' not in ldflags:
|
||||
cmd.append('-Wl,-pie')
|
||||
subprocess.check_call(cmd)
|
||||
|
||||
|
||||
def create_targets(ndk_dir=None, api=None, host=None):
|
||||
if ndk_dir is None:
|
||||
ndk_dir = detect_ndk_dir()
|
||||
if api is None:
|
||||
api = detect_api_level(ndk_dir)
|
||||
if host is None:
|
||||
host = detect_host()
|
||||
|
||||
targets = collections.OrderedDict()
|
||||
|
||||
targets['arm'] = Target(
|
||||
'arm', 'arm-linux-androideabi', [], [],
|
||||
get_gcc_dir(ndk_dir, 'arm-linux-androideabi-4.9', host),
|
||||
get_clang_dir(ndk_dir, host),
|
||||
get_platform_dir(ndk_dir, api, ['arch-arm', 'usr', 'include']),
|
||||
get_platform_dir(ndk_dir, api, ['arch-arm', 'usr', 'lib']))
|
||||
|
||||
targets['arm64'] = Target(
|
||||
'arm64', 'aarch64-linux-android', [], [],
|
||||
get_gcc_dir(ndk_dir, 'aarch64-linux-android-4.9', host),
|
||||
get_clang_dir(ndk_dir, host),
|
||||
get_platform_dir(ndk_dir, api, ['arch-arm64', 'usr', 'include']),
|
||||
get_platform_dir(ndk_dir, api, ['arch-arm64', 'usr', 'lib']))
|
||||
|
||||
targets['x86'] = Target(
|
||||
'x86', 'i686-linux-android', ['-m32'], ['-m32'],
|
||||
get_gcc_dir(ndk_dir, 'x86-4.9', host),
|
||||
get_clang_dir(ndk_dir, host),
|
||||
get_platform_dir(ndk_dir, api, ['arch-x86', 'usr', 'include']),
|
||||
get_platform_dir(ndk_dir, api, ['arch-x86', 'usr', 'lib']))
|
||||
|
||||
targets['x86_64'] = Target(
|
||||
'x86_64', 'x86_64-linux-android', ['-m64'], ['-m64'],
|
||||
get_gcc_dir(ndk_dir, 'x86_64-4.9', host),
|
||||
get_clang_dir(ndk_dir, host),
|
||||
get_platform_dir(ndk_dir, api, ['arch-x86_64', 'usr', 'include']),
|
||||
get_platform_dir(ndk_dir, api, ['arch-x86_64', 'usr', 'lib64']))
|
||||
|
||||
targets['mips'] = Target(
|
||||
'mips', 'mipsel-linux-android', [], [],
|
||||
get_gcc_dir(ndk_dir, 'mipsel-linux-android-4.9', host),
|
||||
get_clang_dir(ndk_dir, host),
|
||||
get_platform_dir(ndk_dir, api, ['arch-mips', 'usr', 'include']),
|
||||
get_platform_dir(ndk_dir, api, ['arch-mips', 'usr', 'lib']))
|
||||
|
||||
targets['mips64'] = Target(
|
||||
'mips64', 'mips64el-linux-android',
|
||||
['-march=mips64el', '-mcpu=mips64r6'],
|
||||
['-march=mips64el', '-mcpu=mips64r6'],
|
||||
get_gcc_dir(ndk_dir, 'mips64el-linux-android-4.9', host),
|
||||
get_clang_dir(ndk_dir, host),
|
||||
get_platform_dir(ndk_dir, api, ['arch-mips64', 'usr', 'include']),
|
||||
get_platform_dir(ndk_dir, api, ['arch-mips64', 'usr', 'lib64']))
|
||||
|
||||
return targets
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
#
|
||||
# Copyright (C) 2018 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.
|
||||
#
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
python3 -m unittest discover "$@"
|
||||
python -m unittest discover "$@"
|
||||
@@ -1,107 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import (
|
||||
DepsInsightCommand, ModuleInfo, PT_SYSTEM, PT_VENDOR)
|
||||
|
||||
from .compat import StringIO, patch
|
||||
from .utils import GraphBuilder
|
||||
|
||||
|
||||
class DepsInsightCommandTest(unittest.TestCase):
|
||||
_PATH_FIELD = 0
|
||||
_ELF_CLASS_FIELD = 1
|
||||
_TAGS_FIELD = 2
|
||||
_DEPS_FIELD = 3
|
||||
_USERS_FIELD = 4
|
||||
_SOURCE_DIRS_FIELD = 5
|
||||
|
||||
|
||||
@classmethod
|
||||
def _get_module(cls, strs, mods, path):
|
||||
for mod in mods:
|
||||
if strs[mod[cls._PATH_FIELD]] == path:
|
||||
return mod
|
||||
return None
|
||||
|
||||
|
||||
@classmethod
|
||||
def _get_module_deps(cls, strs, mods, path):
|
||||
mod = cls._get_module(strs, mods, path)
|
||||
result = set()
|
||||
for deps in mod[cls._DEPS_FIELD]:
|
||||
result.update(strs[mods[x][cls._PATH_FIELD]] for x in deps)
|
||||
return result
|
||||
|
||||
|
||||
@classmethod
|
||||
def _get_module_users(cls, strs, mods, path):
|
||||
mod = cls._get_module(strs, mods, path)
|
||||
users = mod[cls._USERS_FIELD]
|
||||
return set(strs[mods[x][cls._PATH_FIELD]] for x in users)
|
||||
|
||||
|
||||
def test_serialize_data_with_all_deps(self):
|
||||
# compute_degenerated_vndk() should not remove bad dependencies from
|
||||
# the output of deps-insight. This test checks the existance of bad
|
||||
# dependencies.
|
||||
|
||||
gb = GraphBuilder()
|
||||
|
||||
libsystem = gb.add_lib32(PT_SYSTEM, 'libsystem')
|
||||
|
||||
libsystem2 = gb.add_lib32(
|
||||
PT_SYSTEM, 'libsystem2', dt_needed=['libsystem.so'])
|
||||
|
||||
libvndk = gb.add_lib32(
|
||||
PT_SYSTEM, 'libvndk', dt_needed=['libvendor_bad.so'],
|
||||
extra_dir='vndk')
|
||||
|
||||
libvendor = gb.add_lib32(
|
||||
PT_VENDOR, 'libvendor', dt_needed=['libvndk.so'])
|
||||
|
||||
libvendor_bad = gb.add_lib32(
|
||||
PT_VENDOR, 'libvendor_bad', extra_dir='vndk')
|
||||
|
||||
gb.resolve()
|
||||
|
||||
with patch('sys.stderr', StringIO()):
|
||||
vndk_sets = gb.graph.compute_degenerated_vndk(set(), None)
|
||||
|
||||
self.assertNotIn(libvendor_bad, libvndk.deps_good)
|
||||
|
||||
strs, mods = DepsInsightCommand.serialize_data(
|
||||
list(gb.graph.all_libs()), vndk_sets, ModuleInfo())
|
||||
|
||||
# libsystem
|
||||
deps = self._get_module_deps(strs, mods, libsystem.path)
|
||||
self.assertFalse(deps)
|
||||
users = self._get_module_users(strs, mods, libsystem.path)
|
||||
self.assertIn(libsystem2.path, users)
|
||||
|
||||
# libsystem2
|
||||
deps = self._get_module_deps(strs, mods, libsystem2.path)
|
||||
self.assertIn(libsystem.path, deps)
|
||||
users = self._get_module_users(strs, mods, libsystem2.path)
|
||||
self.assertFalse(users)
|
||||
|
||||
# libvndk
|
||||
deps = self._get_module_deps(strs, mods, libvndk.path)
|
||||
self.assertIn(libvendor_bad.path, deps)
|
||||
users = self._get_module_users(strs, mods, libvndk.path)
|
||||
self.assertIn(libvendor.path, users)
|
||||
|
||||
# libvendor
|
||||
deps = self._get_module_deps(strs, mods, libvendor.path)
|
||||
self.assertIn(libvndk.path, deps)
|
||||
users = self._get_module_users(strs, mods, libvendor.path)
|
||||
self.assertFalse(users)
|
||||
|
||||
# libvendor_bad
|
||||
deps = self._get_module_deps(strs, mods, libvendor_bad.path)
|
||||
self.assertFalse(deps)
|
||||
users = self._get_module_users(strs, mods, libvendor_bad.path)
|
||||
self.assertIn(libvndk.path, users)
|
||||
@@ -1,122 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import unittest
|
||||
import zipfile
|
||||
|
||||
from vndk_definition_tool import DexFileReader, UnicodeSurrogateDecodeError
|
||||
|
||||
from .compat import TemporaryDirectory
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
INPUT_DIR = os.path.join(SCRIPT_DIR, 'testdata', 'test_dex_file')
|
||||
|
||||
|
||||
class ModifiedUTF8Test(unittest.TestCase):
|
||||
def test_encode(self):
|
||||
self.assertEqual(b'\xc0\x80', u'\u0000'.encode('mutf-8'))
|
||||
self.assertEqual(b'\x09', u'\u0009'.encode('mutf-8'))
|
||||
self.assertEqual(b'\x7f', u'\u007f'.encode('mutf-8'))
|
||||
self.assertEqual(b'\xc2\x80', u'\u0080'.encode('mutf-8'))
|
||||
self.assertEqual(b'\xdf\xbf', u'\u07ff'.encode('mutf-8'))
|
||||
self.assertEqual(b'\xe0\xa0\x80', u'\u0800'.encode('mutf-8'))
|
||||
self.assertEqual(b'\xe7\xbf\xbf', u'\u7fff'.encode('mutf-8'))
|
||||
self.assertEqual(b'\xed\xa0\x81\xed\xb0\x80',
|
||||
u'\U00010400'.encode('mutf-8'))
|
||||
|
||||
|
||||
def test_decode(self):
|
||||
self.assertEqual(u'\u0000', b'\xc0\x80'.decode('mutf-8'))
|
||||
self.assertEqual(u'\u0009', b'\x09'.decode('mutf-8'))
|
||||
self.assertEqual(u'\u007f', b'\x7f'.decode('mutf-8'))
|
||||
self.assertEqual(u'\u0080', b'\xc2\x80'.decode('mutf-8'))
|
||||
self.assertEqual(u'\u07ff', b'\xdf\xbf'.decode('mutf-8'))
|
||||
self.assertEqual(u'\u0800', b'\xe0\xa0\x80'.decode('mutf-8'))
|
||||
self.assertEqual(u'\u7fff', b'\xe7\xbf\xbf'.decode('mutf-8'))
|
||||
self.assertEqual(u'\U00010400',
|
||||
b'\xed\xa0\x81\xed\xb0\x80'.decode('mutf-8'))
|
||||
|
||||
|
||||
def test_decode_exception(self):
|
||||
# Low surrogate does not come after high surrogate
|
||||
with self.assertRaises(UnicodeSurrogateDecodeError):
|
||||
b'\xed\xa0\x81\x40'.decode('mutf-8')
|
||||
|
||||
# Low surrogate without prior high surrogate
|
||||
with self.assertRaises(UnicodeSurrogateDecodeError):
|
||||
b'\xed\xb0\x80\x40'.decode('mutf-8')
|
||||
|
||||
# Unexpected end after high surrogate
|
||||
with self.assertRaises(UnicodeSurrogateDecodeError):
|
||||
b'\xed\xa0\x81'.decode('mutf-8')
|
||||
|
||||
# Unexpected end after low surrogate
|
||||
with self.assertRaises(UnicodeSurrogateDecodeError):
|
||||
b'\xed\xb0\x80'.decode('mutf-8')
|
||||
|
||||
# Out-of-order surrogate
|
||||
with self.assertRaises(UnicodeSurrogateDecodeError):
|
||||
b'\xed\xb0\x80\xed\xa0\x81'.decode('mutf-8')
|
||||
|
||||
|
||||
class DexFileTest(unittest.TestCase):
|
||||
def _assemble_smali(self, dest, source):
|
||||
"""Assemble a smali source file. Skip the test if the smali command is
|
||||
unavailable."""
|
||||
try:
|
||||
subprocess.check_call(['smali', 'a', source, '-o', dest])
|
||||
except EnvironmentError:
|
||||
self.skipTest('smali not available')
|
||||
|
||||
|
||||
def _create_zip_file(self, dest, paths):
|
||||
"""Create a zip file from several input files."""
|
||||
with zipfile.ZipFile(dest, 'w') as zip_file:
|
||||
for path in paths:
|
||||
zip_file.write(path, os.path.basename(path))
|
||||
|
||||
|
||||
def test_generate_classes_dex_names(self):
|
||||
seq = DexFileReader.generate_classes_dex_names()
|
||||
self.assertEqual('classes.dex', next(seq))
|
||||
self.assertEqual('classes2.dex', next(seq))
|
||||
self.assertEqual('classes3.dex', next(seq))
|
||||
|
||||
|
||||
def test_enumerate_dex_strings_buf(self):
|
||||
with TemporaryDirectory() as tmp_dir:
|
||||
smali_file = os.path.join(INPUT_DIR, 'Hello.smali')
|
||||
classes_dex = os.path.join(tmp_dir, 'classes.dex')
|
||||
self._assemble_smali(classes_dex, smali_file)
|
||||
|
||||
with open(classes_dex, 'rb') as classes_dex:
|
||||
buf = classes_dex.read()
|
||||
|
||||
strs = set(DexFileReader.enumerate_dex_strings_buf(buf))
|
||||
|
||||
self.assertIn(b'hello', strs)
|
||||
self.assertIn(b'world', strs)
|
||||
|
||||
|
||||
def test_enumerate_dex_strings_apk(self):
|
||||
with TemporaryDirectory() as tmp_dir:
|
||||
smali_file = os.path.join(INPUT_DIR, 'Hello.smali')
|
||||
classes_dex = os.path.join(tmp_dir, 'classes.dex')
|
||||
self._assemble_smali(classes_dex, smali_file)
|
||||
|
||||
smali_file = os.path.join(INPUT_DIR, 'Example.smali')
|
||||
classes2_dex = os.path.join(tmp_dir, 'classes2.dex')
|
||||
self._assemble_smali(classes2_dex, smali_file)
|
||||
|
||||
zip_file = os.path.join(tmp_dir, 'example.apk')
|
||||
self._create_zip_file(zip_file, [classes_dex, classes2_dex])
|
||||
|
||||
strs = set(DexFileReader.enumerate_dex_strings_apk(zip_file))
|
||||
|
||||
self.assertIn(b'hello', strs)
|
||||
self.assertIn(b'world', strs)
|
||||
self.assertIn(b'foo', strs)
|
||||
self.assertIn(b'bar', strs)
|
||||
@@ -1,222 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import Elf_Sym, ELF
|
||||
|
||||
from .compat import StringIO
|
||||
|
||||
|
||||
class ElfSymTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.sym_local = Elf_Sym(0, 0, 4, 0, 0, 1)
|
||||
self.sym_global = Elf_Sym(0, 0, 4, 17, 0, 1)
|
||||
self.sym_weak = Elf_Sym(0, 0, 4, 33, 0, 1)
|
||||
self.sym_undef = Elf_Sym(0, 0, 4, 16, 0, 0)
|
||||
|
||||
|
||||
def test_is_local(self):
|
||||
self.assertTrue(self.sym_local.is_local)
|
||||
self.assertFalse(self.sym_global.is_local)
|
||||
self.assertFalse(self.sym_weak.is_local)
|
||||
|
||||
|
||||
def test_is_global(self):
|
||||
self.assertFalse(self.sym_local.is_global)
|
||||
self.assertTrue(self.sym_global.is_global)
|
||||
self.assertFalse(self.sym_weak.is_global)
|
||||
|
||||
|
||||
def test_is_weak(self):
|
||||
self.assertFalse(self.sym_local.is_weak)
|
||||
self.assertFalse(self.sym_global.is_weak)
|
||||
self.assertTrue(self.sym_weak.is_weak)
|
||||
|
||||
|
||||
def test_is_undef(self):
|
||||
self.assertFalse(self.sym_global.is_undef)
|
||||
self.assertTrue(self.sym_undef.is_undef)
|
||||
|
||||
|
||||
class ELFTest(unittest.TestCase):
|
||||
def test_get_ei_class_from_name(self):
|
||||
self.assertEqual(ELF.ELFCLASS32, ELF.get_ei_class_from_name('32'))
|
||||
self.assertEqual(ELF.ELFCLASS64, ELF.get_ei_class_from_name('64'))
|
||||
|
||||
|
||||
def test_get_ei_data_from_name(self):
|
||||
self.assertEqual(ELF.ELFDATA2LSB,
|
||||
ELF.get_ei_data_from_name('Little-Endian'))
|
||||
self.assertEqual(ELF.ELFDATA2MSB,
|
||||
ELF.get_ei_data_from_name('Big-Endian'))
|
||||
|
||||
|
||||
def test_get_e_machine_from_name(self):
|
||||
self.assertEqual(0, ELF.get_e_machine_from_name('EM_NONE'))
|
||||
self.assertEqual(3, ELF.get_e_machine_from_name('EM_386'))
|
||||
self.assertEqual(8, ELF.get_e_machine_from_name('EM_MIPS'))
|
||||
self.assertEqual(40, ELF.get_e_machine_from_name('EM_ARM'))
|
||||
self.assertEqual(62, ELF.get_e_machine_from_name('EM_X86_64'))
|
||||
self.assertEqual(183, ELF.get_e_machine_from_name('EM_AARCH64'))
|
||||
|
||||
|
||||
def test_repr(self):
|
||||
elf = ELF()
|
||||
self.assertEqual(elf, eval(repr(elf)))
|
||||
|
||||
elf = ELF(ei_class=ELF.ELFCLASS32, ei_data=ELF.ELFDATA2LSB,
|
||||
e_machine=183, dt_rpath=['a'], dt_runpath=['b'],
|
||||
dt_needed=['c', 'd'], exported_symbols={'e', 'f', 'g'})
|
||||
self.assertEqual(elf, eval(repr(elf)))
|
||||
|
||||
|
||||
def test_class_name(self):
|
||||
self.assertEqual('None', ELF().elf_class_name)
|
||||
|
||||
elf = ELF(ELF.ELFCLASS32)
|
||||
self.assertEqual('32', elf.elf_class_name)
|
||||
self.assertTrue(elf.is_32bit)
|
||||
self.assertFalse(elf.is_64bit)
|
||||
|
||||
elf = ELF(ELF.ELFCLASS64)
|
||||
self.assertEqual('64', elf.elf_class_name)
|
||||
self.assertFalse(elf.is_32bit)
|
||||
self.assertTrue(elf.is_64bit)
|
||||
|
||||
|
||||
def test_endianness(self):
|
||||
self.assertEqual('None', ELF().elf_data_name)
|
||||
self.assertEqual('Little-Endian',
|
||||
ELF(None, ELF.ELFDATA2LSB).elf_data_name)
|
||||
self.assertEqual('Big-Endian',
|
||||
ELF(None, ELF.ELFDATA2MSB).elf_data_name)
|
||||
|
||||
|
||||
def test_machine_name(self):
|
||||
self.assertEqual('EM_NONE', ELF(e_machine=0).elf_machine_name)
|
||||
self.assertEqual('EM_386', ELF(e_machine=3).elf_machine_name)
|
||||
self.assertEqual('EM_MIPS', ELF(e_machine=8).elf_machine_name)
|
||||
self.assertEqual('EM_ARM', ELF(e_machine=40).elf_machine_name)
|
||||
self.assertEqual('EM_X86_64', ELF(e_machine=62).elf_machine_name)
|
||||
self.assertEqual('EM_AARCH64', ELF(e_machine=183).elf_machine_name)
|
||||
|
||||
|
||||
def test_dt_rpath_runpath(self):
|
||||
elf = ELF()
|
||||
self.assertEqual([], elf.dt_rpath)
|
||||
self.assertEqual([], elf.dt_runpath)
|
||||
|
||||
elf = ELF(None, None, 0, ['a'], ['b'])
|
||||
self.assertEqual(['a'], elf.dt_rpath)
|
||||
self.assertEqual(['b'], elf.dt_runpath)
|
||||
|
||||
|
||||
def test_dump(self):
|
||||
elf = ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB, 183, ['a'], ['b'],
|
||||
['libc.so', 'libm.so'], {'hello', 'world'}, {'d', 'e'})
|
||||
|
||||
f = StringIO()
|
||||
elf.dump(f)
|
||||
actual_output = f.getvalue()
|
||||
|
||||
self.assertEqual('EI_CLASS\t32\n'
|
||||
'EI_DATA\t\tLittle-Endian\n'
|
||||
'E_MACHINE\tEM_AARCH64\n'
|
||||
'FILE_SIZE\t0\n'
|
||||
'RO_SEG_FILE_SIZE\t0\n'
|
||||
'RO_SEG_MEM_SIZE\t0\n'
|
||||
'RW_SEG_FILE_SIZE\t0\n'
|
||||
'RW_SEG_MEM_SIZE\t0\n'
|
||||
'DT_RPATH\ta\n'
|
||||
'DT_RUNPATH\tb\n'
|
||||
'DT_NEEDED\tlibc.so\n'
|
||||
'DT_NEEDED\tlibm.so\n'
|
||||
'EXP_SYMBOL\thello\n'
|
||||
'EXP_SYMBOL\tworld\n'
|
||||
'IMP_SYMBOL\td\n'
|
||||
'IMP_SYMBOL\te\n',
|
||||
actual_output)
|
||||
|
||||
|
||||
def test_parse_dump_file(self):
|
||||
data = ('EI_CLASS\t64\n'
|
||||
'EI_DATA\t\tLittle-Endian\n'
|
||||
'E_MACHINE\tEM_AARCH64\n'
|
||||
'FILE_SIZE\t90\n'
|
||||
'RO_SEG_FILE_SIZE\t18\n'
|
||||
'RO_SEG_MEM_SIZE\t24\n'
|
||||
'RW_SEG_FILE_SIZE\t42\n'
|
||||
'RW_SEG_MEM_SIZE\t81\n'
|
||||
'DT_RPATH\trpath_1\n'
|
||||
'DT_RPATH\trpath_2\n'
|
||||
'DT_RUNPATH\trunpath_1\n'
|
||||
'DT_RUNPATH\trunpath_2\n'
|
||||
'DT_NEEDED\tlibc.so\n'
|
||||
'DT_NEEDED\tlibm.so\n'
|
||||
'EXP_SYMBOL\texported_1\n'
|
||||
'EXP_SYMBOL\texported_2\n'
|
||||
'IMP_SYMBOL\timported_1\n'
|
||||
'IMP_SYMBOL\timported_2\n')
|
||||
|
||||
def check_parse_dump_file_result(res):
|
||||
self.assertEqual(ELF.ELFCLASS64, res.ei_class)
|
||||
self.assertEqual(ELF.ELFDATA2LSB, res.ei_data)
|
||||
self.assertEqual(183, res.e_machine)
|
||||
self.assertEqual(90, res.file_size)
|
||||
self.assertEqual(18, res.ro_seg_file_size)
|
||||
self.assertEqual(24, res.ro_seg_mem_size)
|
||||
self.assertEqual(42, res.rw_seg_file_size)
|
||||
self.assertEqual(81, res.rw_seg_mem_size)
|
||||
self.assertEqual(['rpath_1', 'rpath_2'], res.dt_rpath)
|
||||
self.assertEqual(['runpath_1', 'runpath_2'], res.dt_runpath)
|
||||
self.assertEqual(['libc.so', 'libm.so'], res.dt_needed)
|
||||
self.assertSetEqual({'exported_1', 'exported_2'},
|
||||
res.exported_symbols)
|
||||
self.assertSetEqual({'imported_1', 'imported_2'},
|
||||
res.imported_symbols)
|
||||
|
||||
# Parse ELF dump from the string buffer.
|
||||
check_parse_dump_file_result(ELF.load_dumps(data))
|
||||
|
||||
# Parse ELF dump from the given file path.
|
||||
with tempfile.NamedTemporaryFile('w+') as f:
|
||||
f.write(data)
|
||||
f.flush()
|
||||
f.seek(0)
|
||||
|
||||
check_parse_dump_file_result(ELF.load_dump(f.name))
|
||||
|
||||
|
||||
class ELFJniLibTest(unittest.TestCase):
|
||||
def test_lib_deps(self):
|
||||
elf = ELF(dt_needed=['libnativehelper.so'])
|
||||
self.assertTrue(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(dt_needed=['libandroid_runtime.so'])
|
||||
self.assertTrue(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(dt_needed=['libc.so'])
|
||||
self.assertFalse(elf.is_jni_lib())
|
||||
|
||||
|
||||
def test_jni_symbols(self):
|
||||
elf = ELF(imported_symbols={'JNI_CreateJavaVM'})
|
||||
self.assertTrue(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(exported_symbols={'JNI_CreateJavaVM'})
|
||||
self.assertTrue(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(imported_symbols={'Java_com_example_Example_test'})
|
||||
self.assertTrue(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(exported_symbols={'Java_com_example_Example_test'})
|
||||
self.assertTrue(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(imported_symbols={'printf'})
|
||||
self.assertFalse(elf.is_jni_lib())
|
||||
|
||||
elf = ELF(exported_symbols={'printf'})
|
||||
self.assertFalse(elf.is_jni_lib())
|
||||
@@ -1,106 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import ELFLinkData, PT_SYSTEM, PT_VENDOR
|
||||
|
||||
|
||||
class ELFLinkDataTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.x = ELFLinkData(PT_SYSTEM, '/system/lib/libx.so', None, 0)
|
||||
self.y = ELFLinkData(PT_SYSTEM, '/system/lib/liby.so', None, 0)
|
||||
self.z = ELFLinkData(PT_SYSTEM, '/system/lib/libz.so', None, 0)
|
||||
self.w = ELFLinkData(PT_SYSTEM, '/system/lib/libw.so', None, 0)
|
||||
self.v = ELFLinkData(PT_VENDOR, '/vendor/lib/libv.so', None, 0)
|
||||
|
||||
self.x.add_needed_dep(self.y)
|
||||
self.x.add_dlopen_dep(self.z)
|
||||
|
||||
self.z.add_needed_dep(self.w)
|
||||
self.z.add_dlopen_dep(self.w)
|
||||
|
||||
|
||||
def test_add_dep_and_accessors(self):
|
||||
self.assertIn(self.y, self.x.deps_needed_all)
|
||||
self.assertIn(self.x, self.y.users_needed_all)
|
||||
self.assertNotIn(self.y, self.x.deps_dlopen_all)
|
||||
self.assertNotIn(self.x, self.y.users_dlopen_all)
|
||||
|
||||
self.assertIn(self.z, self.x.deps_dlopen_all)
|
||||
self.assertIn(self.x, self.z.users_dlopen_all)
|
||||
self.assertNotIn(self.z, self.x.deps_needed_all)
|
||||
self.assertNotIn(self.x, self.z.users_needed_all)
|
||||
|
||||
|
||||
def test_remove_dep(self):
|
||||
self.assertIn(self.y, self.x.deps_needed_all)
|
||||
self.assertIn(self.x, self.y.users_needed_all)
|
||||
|
||||
with self.assertRaises(KeyError):
|
||||
self.x.hide_dlopen_dep(self.y)
|
||||
self.assertIn(self.y, self.x.deps_needed_all)
|
||||
self.assertIn(self.x, self.y.users_needed_all)
|
||||
|
||||
self.x.hide_needed_dep(self.y)
|
||||
self.assertIn(self.y, self.x.deps_needed_hidden)
|
||||
self.assertIn(self.x, self.y.users_needed_hidden)
|
||||
self.assertNotIn(self.y, self.x.deps_needed)
|
||||
self.assertNotIn(self.x, self.y.users_needed)
|
||||
|
||||
|
||||
def test_num_deps(self):
|
||||
self.assertEqual(2, self.x.num_deps)
|
||||
self.assertEqual(0, self.y.num_deps)
|
||||
self.assertEqual(0, self.w.num_deps)
|
||||
self.assertEqual(0, self.v.num_deps)
|
||||
|
||||
# NEEDED and DLOPEN are counted twice.
|
||||
self.assertEqual(2, self.z.num_deps)
|
||||
|
||||
|
||||
def test_num_users(self):
|
||||
self.assertEqual(0, self.x.num_users)
|
||||
self.assertEqual(1, self.y.num_users)
|
||||
self.assertEqual(1, self.z.num_users)
|
||||
self.assertEqual(0, self.v.num_users)
|
||||
|
||||
# NEEDED and DLOPEN are counted twice.
|
||||
self.assertEqual(2, self.w.num_users)
|
||||
|
||||
|
||||
def test_has_dep(self):
|
||||
self.assertTrue(self.x.has_dep(self.y))
|
||||
self.assertTrue(self.x.has_dep(self.z))
|
||||
self.assertFalse(self.x.has_dep(self.x))
|
||||
self.assertFalse(self.x.has_dep(self.w))
|
||||
|
||||
|
||||
def test_has_user(self):
|
||||
self.assertTrue(self.y.has_user(self.x))
|
||||
self.assertTrue(self.z.has_user(self.x))
|
||||
self.assertFalse(self.x.has_user(self.x))
|
||||
self.assertFalse(self.w.has_user(self.x))
|
||||
|
||||
|
||||
def test_is_system_lib(self):
|
||||
self.assertTrue(self.x.is_system_lib())
|
||||
self.assertFalse(self.v.is_system_lib())
|
||||
|
||||
|
||||
def test_get_dep_linked_symbols(self):
|
||||
self.x.linked_symbols['c'] = self.y
|
||||
self.x.linked_symbols['b'] = self.y
|
||||
self.x.linked_symbols['a'] = self.y
|
||||
|
||||
self.x.linked_symbols['w'] = self.z
|
||||
self.x.linked_symbols['z'] = self.z
|
||||
self.x.linked_symbols['y'] = self.z
|
||||
self.x.linked_symbols['x'] = self.z
|
||||
|
||||
self.assertEqual(['a', 'b', 'c'],
|
||||
self.x.get_dep_linked_symbols(self.y))
|
||||
|
||||
self.assertEqual(['w', 'x', 'y', 'z'],
|
||||
self.x.get_dep_linked_symbols(self.z))
|
||||
@@ -1,604 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
from vndk_definition_tool import (
|
||||
ELF, ELFLinker, GenericRefs, PT_SYSTEM, PT_VENDOR, VNDKLibDir)
|
||||
|
||||
from .compat import StringIO, TestCase, patch
|
||||
from .utils import GraphBuilder
|
||||
|
||||
|
||||
class ELFLinkerTest(TestCase):
|
||||
def _create_normal_graph(self):
|
||||
gb = GraphBuilder()
|
||||
|
||||
gb.add_multilib(PT_SYSTEM, 'libdl',
|
||||
exported_symbols={'dlclose', 'dlopen', 'dlsym'})
|
||||
|
||||
gb.add_multilib(PT_SYSTEM, 'libm', exported_symbols={'cos', 'sin'})
|
||||
|
||||
gb.add_multilib(PT_SYSTEM, 'libc', dt_needed=['libdl.so', 'libm.so'],
|
||||
exported_symbols={'fclose', 'fopen', 'fread'},
|
||||
imported_symbols={'dlclose', 'dlopen', 'cos', 'sin'})
|
||||
|
||||
gb.add_multilib(PT_SYSTEM, 'libRS', dt_needed=['libdl.so'],
|
||||
exported_symbols={'rsContextCreate'},
|
||||
imported_symbols={'dlclose', 'dlopen', 'dlsym'})
|
||||
|
||||
gb.add_multilib(PT_SYSTEM, 'libcutils',
|
||||
dt_needed=['libc.so', 'libdl.so'],
|
||||
imported_symbols={'dlclose', 'dlopen', 'fclose',
|
||||
'fopen'})
|
||||
|
||||
gb.add_multilib(PT_VENDOR, 'libEGL',
|
||||
dt_needed=['libc.so', 'libcutils.so', 'libdl.so'],
|
||||
exported_symbols={'eglGetDisplay'},
|
||||
imported_symbols={'fclose', 'fopen'})
|
||||
|
||||
gb.resolve()
|
||||
return gb
|
||||
|
||||
|
||||
def _get_paths_from_nodes(self, nodes):
|
||||
return sorted([node.path for node in nodes])
|
||||
|
||||
|
||||
def test_get_lib(self):
|
||||
gb = self._create_normal_graph()
|
||||
graph = gb.graph
|
||||
|
||||
node = graph.get_lib('/system/lib/libc.so')
|
||||
self.assertEqual(gb.libc_32, node)
|
||||
self.assertEqual('/system/lib/libc.so', node.path)
|
||||
|
||||
node = graph.get_lib('/system/lib64/libdl.so')
|
||||
self.assertEqual(gb.libdl_64, node)
|
||||
self.assertEqual('/system/lib64/libdl.so', node.path)
|
||||
|
||||
node = graph.get_lib('/vendor/lib64/libEGL.so')
|
||||
self.assertEqual(gb.libEGL_64, node)
|
||||
self.assertEqual('/vendor/lib64/libEGL.so', node.path)
|
||||
|
||||
self.assertEqual(None, graph.get_lib('/no/such/path.so'))
|
||||
|
||||
|
||||
def test_map_paths_to_libs(self):
|
||||
gb = self._create_normal_graph()
|
||||
graph = gb.graph
|
||||
|
||||
bad = []
|
||||
paths = ['/system/lib/libc.so', '/system/lib/libdl.so']
|
||||
nodes = graph.get_libs(paths, bad.append)
|
||||
|
||||
self.assertEqual([], bad)
|
||||
self.assertEqual(2, len(nodes))
|
||||
self.assertEqual(paths, self._get_paths_from_nodes(nodes))
|
||||
|
||||
bad = []
|
||||
paths = ['/no/such/path.so', '/system/lib64/libdl.so']
|
||||
nodes = graph.get_libs(paths, bad.append)
|
||||
self.assertEqual(['/no/such/path.so'], bad)
|
||||
self.assertEqual(['/system/lib64/libdl.so'],
|
||||
self._get_paths_from_nodes(nodes))
|
||||
|
||||
|
||||
def test_elf_class_and_partitions(self):
|
||||
gb = self._create_normal_graph()
|
||||
graph = gb.graph
|
||||
self.assertEqual(5, len(graph.lib_pt[PT_SYSTEM].lib32))
|
||||
self.assertEqual(5, len(graph.lib_pt[PT_SYSTEM].lib64))
|
||||
self.assertEqual(1, len(graph.lib_pt[PT_VENDOR].lib32))
|
||||
self.assertEqual(1, len(graph.lib_pt[PT_VENDOR].lib64))
|
||||
|
||||
|
||||
def test_deps(self):
|
||||
gb = self._create_normal_graph()
|
||||
|
||||
# Check the dependencies of libc.so.
|
||||
node = gb.graph.get_lib('/system/lib/libc.so')
|
||||
self.assertEqual(['/system/lib/libdl.so', '/system/lib/libm.so'],
|
||||
self._get_paths_from_nodes(node.deps_all))
|
||||
|
||||
# Check the dependencies of libRS.so.
|
||||
node = gb.graph.get_lib('/system/lib64/libRS.so')
|
||||
self.assertEqual(['/system/lib64/libdl.so'],
|
||||
self._get_paths_from_nodes(node.deps_all))
|
||||
|
||||
# Check the dependencies of libEGL.so.
|
||||
node = gb.graph.get_lib('/vendor/lib64/libEGL.so')
|
||||
self.assertEqual(['/system/lib64/libc.so', '/system/lib64/libcutils.so',
|
||||
'/system/lib64/libdl.so'],
|
||||
self._get_paths_from_nodes(node.deps_all))
|
||||
|
||||
|
||||
def test_linked_symbols(self):
|
||||
gb = self._create_normal_graph()
|
||||
graph = gb.graph
|
||||
|
||||
# Check the unresolved symbols.
|
||||
for lib_set in graph.lib_pt:
|
||||
for lib in lib_set.values():
|
||||
self.assertEqual(set(), lib.unresolved_symbols)
|
||||
|
||||
# Check the linked symbols.
|
||||
for lib in ('lib', 'lib64'):
|
||||
libdl = graph.get_lib('/system/' + lib + '/libdl.so')
|
||||
libm = graph.get_lib('/system/' + lib + '/libm.so')
|
||||
libc = graph.get_lib('/system/' + lib + '/libc.so')
|
||||
libRS = graph.get_lib('/system/' + lib + '/libRS.so')
|
||||
libcutils = \
|
||||
graph.get_lib('/system/' + lib + '/libcutils.so')
|
||||
libEGL = graph.get_lib('/vendor/' + lib + '/libEGL.so')
|
||||
|
||||
# Check the linked symbols for libc.so.
|
||||
self.assertIs(libdl, libc.linked_symbols['dlclose'])
|
||||
self.assertIs(libdl, libc.linked_symbols['dlopen'])
|
||||
self.assertIs(libm, libc.linked_symbols['cos'])
|
||||
self.assertIs(libm, libc.linked_symbols['sin'])
|
||||
|
||||
# Check the linked symbols for libRS.so.
|
||||
self.assertIs(libdl, libRS.linked_symbols['dlclose'])
|
||||
self.assertIs(libdl, libRS.linked_symbols['dlopen'])
|
||||
self.assertIs(libdl, libRS.linked_symbols['dlsym'])
|
||||
|
||||
# Check the linked symbols for libcutils.so.
|
||||
self.assertIs(libdl, libcutils.linked_symbols['dlclose'])
|
||||
self.assertIs(libdl, libcutils.linked_symbols['dlopen'])
|
||||
self.assertIs(libc, libcutils.linked_symbols['fclose'])
|
||||
self.assertIs(libc, libcutils.linked_symbols['fopen'])
|
||||
|
||||
# Check the linked symbols for libEGL.so.
|
||||
self.assertIs(libc, libEGL.linked_symbols['fclose'])
|
||||
self.assertIs(libc, libEGL.linked_symbols['fopen'])
|
||||
|
||||
|
||||
def test_unresolved_symbols(self):
|
||||
gb = GraphBuilder()
|
||||
gb.add_lib(PT_SYSTEM, ELF.ELFCLASS64, 'libfoo', dt_needed=[],
|
||||
exported_symbols={'foo', 'bar'},
|
||||
imported_symbols={'__does_not_exist'})
|
||||
gb.resolve()
|
||||
|
||||
lib = gb.graph.get_lib('/system/lib64/libfoo.so')
|
||||
self.assertEqual({'__does_not_exist'}, lib.unresolved_symbols)
|
||||
|
||||
|
||||
def test_users(self):
|
||||
gb = self._create_normal_graph()
|
||||
graph = gb.graph
|
||||
|
||||
# Check the users of libc.so.
|
||||
node = graph.get_lib('/system/lib/libc.so')
|
||||
self.assertEqual(['/system/lib/libcutils.so', '/vendor/lib/libEGL.so'],
|
||||
self._get_paths_from_nodes(node.users_all))
|
||||
|
||||
# Check the users of libdl.so.
|
||||
node = graph.get_lib('/system/lib/libdl.so')
|
||||
self.assertEqual(['/system/lib/libRS.so', '/system/lib/libc.so',
|
||||
'/system/lib/libcutils.so', '/vendor/lib/libEGL.so'],
|
||||
self._get_paths_from_nodes(node.users_all))
|
||||
|
||||
# Check the users of libRS.so.
|
||||
node = graph.get_lib('/system/lib64/libRS.so')
|
||||
self.assertEqual([], self._get_paths_from_nodes(node.users_all))
|
||||
|
||||
# Check the users of libEGL.so.
|
||||
node = graph.get_lib('/vendor/lib64/libEGL.so')
|
||||
self.assertEqual([], self._get_paths_from_nodes(node.users_all))
|
||||
|
||||
|
||||
def test_compute_predefined_sp_hal(self):
|
||||
gb = GraphBuilder()
|
||||
|
||||
# HIDL SP-HAL implementation.
|
||||
gb.add_multilib(PT_SYSTEM, 'gralloc.default', extra_dir='hw')
|
||||
gb.add_multilib(PT_SYSTEM, 'gralloc.chipset', extra_dir='hw')
|
||||
gb.add_multilib(PT_SYSTEM, 'android.hardware.graphics.mapper@2.0-impl',
|
||||
extra_dir='hw')
|
||||
|
||||
# NDK loader libraries should not be considered as SP-HALs.
|
||||
gb.add_multilib(PT_SYSTEM, 'libvulkan')
|
||||
gb.add_multilib(PT_SYSTEM, 'libEGL')
|
||||
gb.add_multilib(PT_SYSTEM, 'libGLESv1_CM')
|
||||
gb.add_multilib(PT_SYSTEM, 'libGLESv2')
|
||||
gb.add_multilib(PT_SYSTEM, 'libGLESv3')
|
||||
|
||||
# OpenGL implementation.
|
||||
gb.add_multilib(PT_VENDOR, 'libEGL_chipset', extra_dir='egl')
|
||||
gb.add_multilib(PT_VENDOR, 'libGLES_chipset', extra_dir='egl')
|
||||
gb.add_multilib(PT_VENDOR, 'libGLESv1_CM_chipset', extra_dir='egl')
|
||||
gb.add_multilib(PT_VENDOR, 'libGLESv2_chipset', extra_dir='egl')
|
||||
gb.add_multilib(PT_VENDOR, 'libGLESv3_chipset', extra_dir='egl')
|
||||
|
||||
# Renderscript implementation.
|
||||
gb.add_multilib(PT_VENDOR, 'libRSDriver_chipset')
|
||||
gb.add_multilib(PT_VENDOR, 'libPVRRS')
|
||||
|
||||
# Vulkan implementation.
|
||||
gb.add_multilib(PT_VENDOR, 'vulkan.chipset', extra_dir='hw')
|
||||
|
||||
# Some un-related libraries.
|
||||
gb.add_multilib(PT_SYSTEM, 'libfoo')
|
||||
gb.add_multilib(PT_VENDOR, 'libfoo')
|
||||
|
||||
gb.resolve()
|
||||
|
||||
# Compute SP-HAL.
|
||||
sp_hals = set(lib.path for lib in gb.graph.compute_predefined_sp_hal())
|
||||
|
||||
for lib in ('lib', 'lib64'):
|
||||
# Check HIDL SP-HAL implementation.
|
||||
self.assertIn('/system/' + lib + '/hw/gralloc.default.so', sp_hals)
|
||||
self.assertIn('/system/' + lib + '/hw/gralloc.chipset.so', sp_hals)
|
||||
self.assertIn('/system/' + lib + '/hw/'
|
||||
'android.hardware.graphics.mapper@2.0-impl.so',
|
||||
sp_hals)
|
||||
|
||||
|
||||
# Check that NDK loaders are not SP-HALs.
|
||||
self.assertNotIn('/system/' + lib + '/libvulkan.so', sp_hals)
|
||||
self.assertNotIn('/system/' + lib + '/libEGL.so', sp_hals)
|
||||
self.assertNotIn('/system/' + lib + '/libGLESv1_CM.so', sp_hals)
|
||||
self.assertNotIn('/system/' + lib + '/libGLESv2.so', sp_hals)
|
||||
self.assertNotIn('/system/' + lib + '/libGLESv3.so', sp_hals)
|
||||
|
||||
# Check that OpenGL implementations are SP-HALs.
|
||||
self.assertIn('/vendor/' + lib + '/egl/libEGL_chipset.so', sp_hals)
|
||||
self.assertIn('/vendor/' + lib + '/egl/libGLES_chipset.so',
|
||||
sp_hals)
|
||||
self.assertIn('/vendor/' + lib + '/egl/libGLESv1_CM_chipset.so',
|
||||
sp_hals)
|
||||
self.assertIn('/vendor/' + lib + '/egl/libGLESv2_chipset.so',
|
||||
sp_hals)
|
||||
self.assertIn('/vendor/' + lib + '/egl/libGLESv3_chipset.so',
|
||||
sp_hals)
|
||||
|
||||
# Check that Renderscript implementations are SP-HALs.
|
||||
self.assertIn('/vendor/' + lib + '/libRSDriver_chipset.so', sp_hals)
|
||||
self.assertIn('/vendor/' + lib + '/libPVRRS.so', sp_hals)
|
||||
|
||||
# Check that vulkan implementation are SP-HALs.
|
||||
self.assertIn('/vendor/' + lib + '/libPVRRS.so', sp_hals)
|
||||
|
||||
# Check that un-related libraries are not SP-HALs.
|
||||
self.assertNotIn('/system/' + lib + '/libfoo.so', sp_hals)
|
||||
self.assertNotIn('/vendor/' + lib + '/libfoo.so', sp_hals)
|
||||
|
||||
|
||||
def test_compute_sp_lib(self):
|
||||
# Create graph.
|
||||
gb = GraphBuilder()
|
||||
|
||||
# LL-NDK (should be excluded from result)
|
||||
gb.add_multilib(PT_SYSTEM, 'libc')
|
||||
|
||||
libEGL_32, libEGL_64 = \
|
||||
gb.add_multilib(PT_SYSTEM, 'libEGL',
|
||||
dt_needed=['libc.so', 'libutils.so'])
|
||||
|
||||
# LL-NDK dependencies
|
||||
gb.add_multilib(PT_SYSTEM, 'libutils',
|
||||
dt_needed=['libc.so', 'libcutils.so'])
|
||||
|
||||
# VNDK-SP used by both LL-NDK and SP-HAL
|
||||
gb.add_multilib(PT_SYSTEM, 'libsp_both_vs')
|
||||
|
||||
# VNDK-SP used by LL-NDK
|
||||
gb.add_multilib(PT_SYSTEM, 'libcutils_dep', dt_needed=['libc.so'])
|
||||
gb.add_multilib(PT_SYSTEM, 'libcutils',
|
||||
dt_needed=['libc.so', 'libcutils_dep.so',
|
||||
'libsp_both_vs.so'])
|
||||
|
||||
# VNDK-SP used by SP-HAL
|
||||
gb.add_multilib(PT_SYSTEM, 'libhidlbase')
|
||||
gb.add_multilib(PT_SYSTEM, 'libhidlmemory',
|
||||
dt_needed=['libhidlbase.so', 'libsp_both_vs.so'])
|
||||
|
||||
# SP-HAL dependencies
|
||||
gb.add_multilib(PT_VENDOR, 'libllvm_vendor_dep')
|
||||
gb.add_multilib(PT_VENDOR, 'libllvm_vendor',
|
||||
dt_needed=['libc.so', 'libllvm_vendor_dep.so'])
|
||||
|
||||
# SP-HAL
|
||||
libEGL_chipset_32, libEGL_chipset_64 = \
|
||||
gb.add_multilib(PT_VENDOR, 'libEGL_chipset', extra_dir='egl',
|
||||
dt_needed=['libc.so', 'libllvm_vendor.so',
|
||||
'libhidlmemory.so'])
|
||||
|
||||
gb.resolve()
|
||||
|
||||
# Add dlopen() dependencies from libEGL to libEGL_chipset.
|
||||
libEGL_32.add_dlopen_dep(libEGL_chipset_32)
|
||||
libEGL_64.add_dlopen_dep(libEGL_chipset_64)
|
||||
|
||||
# Create generic reference.
|
||||
class MockGenericRefs(object):
|
||||
# pylint: disable=too-few-public-methods
|
||||
def classify_lib(self, lib):
|
||||
if 'libllvm_vendor' in lib.path:
|
||||
return GenericRefs.NEW_LIB
|
||||
return GenericRefs.EXPORT_EQUAL
|
||||
|
||||
sp_lib = gb.graph.compute_sp_lib(MockGenericRefs())
|
||||
|
||||
self.assertEqual(2 * 1, len(sp_lib.sp_hal))
|
||||
self.assertEqual(2 * 2, len(sp_lib.sp_hal_dep))
|
||||
self.assertEqual(2 * 2, len(sp_lib.vndk_sp_hal))
|
||||
self.assertEqual(2 * 2, len(sp_lib.ll_ndk))
|
||||
self.assertEqual(2 * 3, len(sp_lib.ll_ndk_private))
|
||||
self.assertEqual(2 * 1, len(sp_lib.vndk_sp_both))
|
||||
|
||||
sp_hal = self._get_paths_from_nodes(sp_lib.sp_hal)
|
||||
sp_hal_dep = self._get_paths_from_nodes(sp_lib.sp_hal_dep)
|
||||
vndk_sp_hal = self._get_paths_from_nodes(sp_lib.vndk_sp_hal)
|
||||
|
||||
ll_ndk = self._get_paths_from_nodes(sp_lib.ll_ndk)
|
||||
ll_ndk_private = self._get_paths_from_nodes(sp_lib.ll_ndk_private)
|
||||
|
||||
vndk_sp_both = self._get_paths_from_nodes(sp_lib.vndk_sp_both)
|
||||
|
||||
for lib_dir in ('lib', 'lib64'):
|
||||
# VNDK-SP used by both LL-NDK and SP-HAL
|
||||
self.assertIn('/system/{}/libsp_both_vs.so'.format(lib_dir),
|
||||
vndk_sp_both)
|
||||
|
||||
# VNDK-SP used by LL-NDK
|
||||
self.assertIn('/system/{}/libcutils.so'.format(lib_dir),
|
||||
ll_ndk_private)
|
||||
self.assertIn('/system/{}/libcutils_dep.so'.format(lib_dir),
|
||||
ll_ndk_private)
|
||||
self.assertIn('/system/{}/libutils.so'.format(lib_dir),
|
||||
ll_ndk_private)
|
||||
|
||||
# VNDK-SP used by SP-HAL
|
||||
self.assertIn('/system/{}/libhidlbase.so'.format(lib_dir),
|
||||
vndk_sp_hal)
|
||||
self.assertIn('/system/{}/libhidlmemory.so'.format(lib_dir),
|
||||
vndk_sp_hal)
|
||||
|
||||
# SP-HAL dependencies
|
||||
self.assertIn('/vendor/{}/libllvm_vendor.so'.format(lib_dir),
|
||||
sp_hal_dep)
|
||||
self.assertIn('/vendor/{}/libllvm_vendor_dep.so'.format(lib_dir),
|
||||
sp_hal_dep)
|
||||
|
||||
# SP-HAL
|
||||
self.assertIn('/vendor/{}/egl/libEGL_chipset.so'.format(lib_dir),
|
||||
sp_hal)
|
||||
|
||||
# LL-NDK
|
||||
self.assertIn('/system/{}/libEGL.so'.format(lib_dir), ll_ndk)
|
||||
self.assertIn('/system/{}/libc.so'.format(lib_dir), ll_ndk)
|
||||
|
||||
# LL-NDK must not in sp_hal, sp_hal_dep, and vndk_sp_hal.
|
||||
libc_path = '/system/{}/libc.so'.format(lib_dir)
|
||||
self.assertNotIn(libc_path, sp_hal)
|
||||
self.assertNotIn(libc_path, sp_hal_dep)
|
||||
self.assertNotIn(libc_path, vndk_sp_hal)
|
||||
self.assertNotIn(libc_path, ll_ndk_private)
|
||||
|
||||
|
||||
def test_link_vndk_ver_dirs(self):
|
||||
gb = GraphBuilder()
|
||||
|
||||
libc_32, libc_64 = gb.add_multilib(PT_SYSTEM, 'libc')
|
||||
|
||||
libvndk_a_32, libvndk_a_64 = gb.add_multilib(
|
||||
PT_SYSTEM, 'libvndk_a', extra_dir='vndk-28',
|
||||
dt_needed=['libc.so', 'libvndk_b.so', 'libvndk_sp_b.so'])
|
||||
|
||||
libvndk_b_32, libvndk_b_64 = gb.add_multilib(
|
||||
PT_SYSTEM, 'libvndk_b', extra_dir='vndk-28',
|
||||
dt_needed=['libc.so', 'libvndk_sp_b.so'])
|
||||
|
||||
libvndk_c_32, libvndk_c_64 = gb.add_multilib(
|
||||
PT_VENDOR, 'libvndk_c', extra_dir='vndk-28',
|
||||
dt_needed=['libc.so', 'libvndk_d.so', 'libvndk_sp_d.so'])
|
||||
|
||||
libvndk_d_32, libvndk_d_64 = gb.add_multilib(
|
||||
PT_VENDOR, 'libvndk_d', extra_dir='vndk-28',
|
||||
dt_needed=['libc.so', 'libvndk_sp_d.so'])
|
||||
|
||||
libvndk_sp_a_32, libvndk_sp_a_64 = gb.add_multilib(
|
||||
PT_SYSTEM, 'libvndk_sp_a', extra_dir='vndk-sp-28',
|
||||
dt_needed=['libc.so', 'libvndk_sp_b.so'])
|
||||
|
||||
libvndk_sp_b_32, libvndk_sp_b_64 = gb.add_multilib(
|
||||
PT_SYSTEM, 'libvndk_sp_b', extra_dir='vndk-sp-28',
|
||||
dt_needed=['libc.so'])
|
||||
|
||||
libvndk_sp_c_32, libvndk_sp_c_64 = gb.add_multilib(
|
||||
PT_VENDOR, 'libvndk_sp_c', extra_dir='vndk-sp-28',
|
||||
dt_needed=['libc.so', 'libvndk_sp_d.so'])
|
||||
|
||||
libvndk_sp_d_32, libvndk_sp_d_64 = gb.add_multilib(
|
||||
PT_VENDOR, 'libvndk_sp_d', extra_dir='vndk-sp-28',
|
||||
dt_needed=['libc.so'])
|
||||
|
||||
gb.resolve(VNDKLibDir.create_from_version('28'), '28')
|
||||
|
||||
# 32-bit shared libraries
|
||||
self.assertIn(libc_32, libvndk_a_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_b_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_c_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_d_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_sp_a_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_sp_b_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_sp_c_32.deps_all)
|
||||
self.assertIn(libc_32, libvndk_sp_d_32.deps_all)
|
||||
|
||||
self.assertIn(libvndk_b_32, libvndk_a_32.deps_all)
|
||||
self.assertIn(libvndk_sp_b_32, libvndk_a_32.deps_all)
|
||||
self.assertIn(libvndk_sp_b_32, libvndk_b_32.deps_all)
|
||||
self.assertIn(libvndk_sp_b_32, libvndk_sp_a_32.deps_all)
|
||||
|
||||
self.assertIn(libvndk_d_32, libvndk_c_32.deps_all)
|
||||
self.assertIn(libvndk_sp_d_32, libvndk_c_32.deps_all)
|
||||
self.assertIn(libvndk_sp_d_32, libvndk_d_32.deps_all)
|
||||
self.assertIn(libvndk_sp_d_32, libvndk_sp_c_32.deps_all)
|
||||
|
||||
# 64-bit shared libraries
|
||||
self.assertIn(libc_64, libvndk_a_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_b_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_c_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_d_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_sp_a_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_sp_b_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_sp_c_64.deps_all)
|
||||
self.assertIn(libc_64, libvndk_sp_d_64.deps_all)
|
||||
|
||||
self.assertIn(libvndk_b_64, libvndk_a_64.deps_all)
|
||||
self.assertIn(libvndk_sp_b_64, libvndk_a_64.deps_all)
|
||||
self.assertIn(libvndk_sp_b_64, libvndk_b_64.deps_all)
|
||||
self.assertIn(libvndk_sp_b_64, libvndk_sp_a_64.deps_all)
|
||||
|
||||
self.assertIn(libvndk_d_64, libvndk_c_64.deps_all)
|
||||
self.assertIn(libvndk_sp_d_64, libvndk_c_64.deps_all)
|
||||
self.assertIn(libvndk_sp_d_64, libvndk_d_64.deps_all)
|
||||
self.assertIn(libvndk_sp_d_64, libvndk_sp_c_64.deps_all)
|
||||
|
||||
|
||||
def test_rewrite_apex_modules(self):
|
||||
graph = ELFLinker()
|
||||
|
||||
libfoo = graph.add_lib(PT_SYSTEM, '/system/apex/foo/lib/libfoo.so',
|
||||
ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB))
|
||||
libbar = graph.add_lib(PT_SYSTEM, '/system/apex/bar/lib/libbar.so',
|
||||
ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB))
|
||||
|
||||
graph.rewrite_apex_modules()
|
||||
|
||||
self.assertEqual(libfoo.path, '/apex/foo/lib/libfoo.so')
|
||||
self.assertEqual(libbar.path, '/apex/bar/lib/libbar.so')
|
||||
|
||||
|
||||
def test_link_apex_modules(self):
|
||||
graph = ELFLinker()
|
||||
|
||||
libfoo = graph.add_lib(PT_SYSTEM, '/system/apex/foo/lib/libfoo.so',
|
||||
ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB))
|
||||
libbar = graph.add_lib(PT_SYSTEM, '/system/lib/libbar.so',
|
||||
ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB,
|
||||
dt_needed=['libfoo.so']))
|
||||
|
||||
graph.rewrite_apex_modules()
|
||||
graph.resolve_deps()
|
||||
|
||||
self.assertIn(libfoo, libbar.deps_all)
|
||||
|
||||
|
||||
def test_link_apex_bionic(self):
|
||||
graph = ELFLinker()
|
||||
|
||||
libc = graph.add_lib(
|
||||
PT_SYSTEM, '/system/apex/com.android.runtime/lib/bionic/libc.so',
|
||||
ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB))
|
||||
libbar = graph.add_lib(
|
||||
PT_SYSTEM, '/system/lib/libbar.so',
|
||||
ELF(ELF.ELFCLASS32, ELF.ELFDATA2LSB, dt_needed=['libc.so']))
|
||||
|
||||
graph.rewrite_apex_modules()
|
||||
graph.resolve_deps()
|
||||
|
||||
self.assertIn(libc, libbar.deps_all)
|
||||
|
||||
|
||||
class ELFLinkerDlopenDepsTest(TestCase):
|
||||
def test_add_dlopen_deps(self):
|
||||
gb = GraphBuilder()
|
||||
liba = gb.add_lib32(PT_SYSTEM, 'liba')
|
||||
libb = gb.add_lib32(PT_SYSTEM, 'libb')
|
||||
gb.resolve()
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode='w') as tmp_file:
|
||||
tmp_file.write('/system/lib/liba.so: /system/lib/libb.so')
|
||||
tmp_file.seek(0)
|
||||
gb.graph.add_dlopen_deps(tmp_file.name)
|
||||
|
||||
self.assertIn(libb, liba.deps_dlopen)
|
||||
self.assertIn(liba, libb.users_dlopen)
|
||||
|
||||
self.assertNotIn(libb, liba.deps_needed)
|
||||
self.assertNotIn(liba, libb.users_needed)
|
||||
|
||||
|
||||
def test_add_dlopen_deps_lib_subst(self):
|
||||
gb = GraphBuilder()
|
||||
liba_32, liba_64 = gb.add_multilib(PT_SYSTEM, 'liba')
|
||||
libb_32, libb_64 = gb.add_multilib(PT_SYSTEM, 'libb')
|
||||
gb.resolve()
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode='w') as tmp_file:
|
||||
tmp_file.write('/system/${LIB}/liba.so: /system/${LIB}/libb.so')
|
||||
tmp_file.seek(0)
|
||||
gb.graph.add_dlopen_deps(tmp_file.name)
|
||||
|
||||
self.assertIn(libb_32, liba_32.deps_dlopen)
|
||||
self.assertIn(liba_32, libb_32.users_dlopen)
|
||||
|
||||
self.assertIn(libb_64, liba_64.deps_dlopen)
|
||||
self.assertIn(liba_64, libb_64.users_dlopen)
|
||||
|
||||
|
||||
def test_add_dlopen_deps_lib_subset_single_bitness(self):
|
||||
gb = GraphBuilder()
|
||||
liba_32, liba_64 = gb.add_multilib(PT_SYSTEM, 'liba')
|
||||
libb_32 = gb.add_lib32(PT_SYSTEM, 'libb')
|
||||
gb.resolve()
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode='w') as tmp_file:
|
||||
tmp_file.write('/system/${LIB}/libb.so: /system/${LIB}/liba.so')
|
||||
tmp_file.seek(0)
|
||||
|
||||
stderr = StringIO()
|
||||
with patch('sys.stderr', stderr):
|
||||
gb.graph.add_dlopen_deps(tmp_file.name)
|
||||
|
||||
self.assertEqual('', stderr.getvalue())
|
||||
|
||||
self.assertIn(liba_32, libb_32.deps_dlopen)
|
||||
self.assertIn(libb_32, liba_32.users_dlopen)
|
||||
|
||||
self.assertEqual(0, len(liba_64.users_dlopen))
|
||||
|
||||
|
||||
def test_add_dlopen_deps_regex(self):
|
||||
gb = GraphBuilder()
|
||||
liba = gb.add_lib32(PT_SYSTEM, 'liba')
|
||||
libb = gb.add_lib32(PT_SYSTEM, 'libb')
|
||||
gb.resolve()
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode='w') as tmp_file:
|
||||
tmp_file.write('[regex].*libb\\.so: [regex].*/${LIB}/liba\\.so')
|
||||
tmp_file.seek(0)
|
||||
|
||||
stderr = StringIO()
|
||||
with patch('sys.stderr', stderr):
|
||||
gb.graph.add_dlopen_deps(tmp_file.name)
|
||||
|
||||
self.assertEqual('', stderr.getvalue())
|
||||
|
||||
self.assertIn(liba, libb.deps_dlopen)
|
||||
self.assertIn(libb, liba.users_dlopen)
|
||||
|
||||
|
||||
def test_add_dlopen_deps_error(self):
|
||||
gb = GraphBuilder()
|
||||
gb.add_lib32(PT_SYSTEM, 'liba')
|
||||
gb.add_lib32(PT_SYSTEM, 'libb')
|
||||
gb.resolve()
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode='w') as tmp_file:
|
||||
tmp_file.write('/system/lib/libc.so: /system/lib/libd.so')
|
||||
tmp_file.seek(0)
|
||||
|
||||
stderr = StringIO()
|
||||
with patch('sys.stderr', stderr):
|
||||
gb.graph.add_dlopen_deps(tmp_file.name)
|
||||
|
||||
self.assertRegex(
|
||||
stderr.getvalue(),
|
||||
'error:' + re.escape(tmp_file.name) + ':1: ' +
|
||||
'Failed to add dlopen dependency from .* to .*\\.\n')
|
||||
@@ -1,92 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import ELFResolver
|
||||
|
||||
|
||||
class ELFResolverTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
lib_set = {
|
||||
'/system/lib/liba.so': 'a',
|
||||
'/system/lib/libb.so': 'b',
|
||||
'/vendor/lib/liba.so': 'a2',
|
||||
'/vendor/lib/libc.so': 'c',
|
||||
'/vendor/lib/libd.so': 'd',
|
||||
'/system/lib/hw/libe.so': 'e',
|
||||
'/vendor/lib/hw/libf.so': 'f',
|
||||
}
|
||||
|
||||
self.resolver = ELFResolver(lib_set, ['/system/lib', '/vendor/lib'])
|
||||
|
||||
|
||||
def test_get_candidates(self):
|
||||
r = self.resolver
|
||||
|
||||
self.assertEqual(
|
||||
['/system/lib/libx.so', '/vendor/lib/libx.so'],
|
||||
list(r.get_candidates('/system/lib/libreq.so', 'libx.so')))
|
||||
|
||||
self.assertEqual(
|
||||
['/C/libx.so', '/system/lib/libx.so', '/vendor/lib/libx.so'],
|
||||
list(r.get_candidates('/system/lib/libreq.so', 'libx.so', ['/C'])))
|
||||
|
||||
self.assertEqual(
|
||||
['/C/libx.so', '/D/libx.so', '/system/lib/libx.so',
|
||||
'/vendor/lib/libx.so'],
|
||||
list(r.get_candidates('/system/lib/libreq.so', 'libx.so',
|
||||
['/C', '/D'])))
|
||||
|
||||
self.assertEqual(
|
||||
['/E/libx.so', '/system/lib/libx.so', '/vendor/lib/libx.so'],
|
||||
list(r.get_candidates('/system/lib/libreq.so', 'libx.so', None,
|
||||
['/E'])))
|
||||
|
||||
self.assertEqual(
|
||||
['/E/libx.so', '/F/libx.so', '/system/lib/libx.so',
|
||||
'/vendor/lib/libx.so'],
|
||||
list(r.get_candidates('/system/lib/libreq.so', 'libx.so', None,
|
||||
['/E', '/F'])))
|
||||
|
||||
self.assertEqual(
|
||||
['/C/libx.so', '/D/libx.so', '/E/libx.so', '/F/libx.so',
|
||||
'/system/lib/libx.so', '/vendor/lib/libx.so'],
|
||||
list(r.get_candidates('/system/lib/libreq.so', 'libx.so',
|
||||
['/C', '/D'], ['/E', '/F'])))
|
||||
|
||||
# Test app-specific search paths.
|
||||
self.assertEqual(
|
||||
['/system/app/example/lib/armeabi-v7a/libx.so',
|
||||
'/C/libx.so', '/D/libx.so', '/E/libx.so', '/F/libx.so',
|
||||
'/system/lib/libx.so', '/vendor/lib/libx.so'],
|
||||
list(r.get_candidates(
|
||||
'/system/app/example/lib/armeabi-v7a/libreq.so',
|
||||
'libx.so',
|
||||
['/C', '/D'], ['/E', '/F'])))
|
||||
|
||||
|
||||
def test_resolve(self):
|
||||
r = self.resolver
|
||||
self.assertEqual('a', r.resolve('/system/lib/libreq.so', 'liba.so'))
|
||||
self.assertEqual('c', r.resolve('/system/lib/libreq.so', 'libc.so'))
|
||||
|
||||
self.assertEqual(None, r.resolve('/system/lib/libreq.so', 'libe.so'))
|
||||
self.assertEqual(
|
||||
'e',
|
||||
r.resolve('/system/lib/libreq.so', 'libe.so',
|
||||
dt_rpath=['/system/lib/hw']))
|
||||
self.assertEqual(
|
||||
'e',
|
||||
r.resolve('/system/lib/libreq.so', 'libe.so',
|
||||
dt_runpath=['/system/lib/hw']))
|
||||
|
||||
self.assertEqual(
|
||||
'a2',
|
||||
r.resolve('/system/lib/libreq.so', 'liba.so',
|
||||
dt_rpath=['/vendor/lib']))
|
||||
self.assertEqual(
|
||||
'a2',
|
||||
r.resolve('/system/lib/libreq.so', 'liba.so',
|
||||
dt_runpath=['/vendor/lib']))
|
||||
@@ -1,166 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
from .compat import TemporaryDirectory, makedirs
|
||||
from .ndk_toolchain import create_targets
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
VNDK_DEF_TOOL = os.path.join(SCRIPT_DIR, '..', 'vndk_definition_tool.py')
|
||||
|
||||
INPUT_DIR = os.path.join(SCRIPT_DIR, 'testdata', 'test_elfdump', 'input')
|
||||
EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'testdata', 'test_elfdump', 'expected')
|
||||
test_dir_base = None
|
||||
|
||||
|
||||
def run_elf_dump(path):
|
||||
cmd = [sys.executable, VNDK_DEF_TOOL, 'elfdump', path]
|
||||
return subprocess.check_output(cmd, universal_newlines=True)
|
||||
|
||||
|
||||
class ELFDumpTest(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.targets = create_targets()
|
||||
|
||||
if test_dir_base:
|
||||
cls.test_dir_base = test_dir_base
|
||||
else:
|
||||
cls.tmp_dir = TemporaryDirectory()
|
||||
cls.test_dir_base = cls.tmp_dir.name
|
||||
|
||||
cls._build_fixtures(cls.target_name)
|
||||
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
if not test_dir_base:
|
||||
cls.tmp_dir.cleanup()
|
||||
|
||||
|
||||
@classmethod
|
||||
def _build_fixtures(cls, target_name):
|
||||
target = cls.targets[target_name]
|
||||
|
||||
cls.expected_dir = os.path.join(EXPECTED_DIR, target_name)
|
||||
cls.test_dir = os.path.join(cls.test_dir_base, target_name)
|
||||
|
||||
makedirs(cls.test_dir, exist_ok=True)
|
||||
|
||||
# Compile main.o.
|
||||
src_file = os.path.join(INPUT_DIR, 'main.c')
|
||||
obj_file = os.path.join(cls.test_dir, 'main.o')
|
||||
target.compile(obj_file, src_file, [])
|
||||
|
||||
# Link main.out.
|
||||
out_file = os.path.join(cls.test_dir, 'main.out')
|
||||
target.link(out_file, [obj_file], ['-ldl', '-lc', '-lstdc++'])
|
||||
|
||||
# Compile test.o.
|
||||
src_file = os.path.join(INPUT_DIR, 'test.c')
|
||||
obj_file = os.path.join(cls.test_dir, 'test.o')
|
||||
target.compile(obj_file, src_file, [])
|
||||
|
||||
# Link libtest.so.
|
||||
out_file = os.path.join(cls.test_dir, 'libtest.so')
|
||||
target.link(out_file, [obj_file], ['-shared', '-lc'])
|
||||
|
||||
# Link libtest-rpath.so.
|
||||
out_file = os.path.join(cls.test_dir, 'libtest-rpath.so')
|
||||
target.link(out_file, [obj_file],
|
||||
['-shared', '-lc', '-Wl,-rpath,$ORIGIN/../lib',
|
||||
'-Wl,--disable-new-dtags'])
|
||||
|
||||
# Link libtest-rpath-multi.so.
|
||||
out_file = os.path.join(cls.test_dir, 'libtest-rpath-multi.so')
|
||||
target.link(out_file, [obj_file],
|
||||
['-shared', '-lc', '-Wl,-rpath,/system/lib:/vendor/lib',
|
||||
'-Wl,--disable-new-dtags'])
|
||||
|
||||
# Link libtest-runpath.so.
|
||||
out_file = os.path.join(cls.test_dir, 'libtest-runpath.so')
|
||||
target.link(out_file, [obj_file],
|
||||
['-shared', '-lc', '-Wl,-rpath,$ORIGIN/../lib',
|
||||
'-Wl,--enable-new-dtags'])
|
||||
|
||||
# Link libtest-runpath-multi.so.
|
||||
out_file = os.path.join(cls.test_dir, 'libtest-runpath-multi.so')
|
||||
target.link(out_file, [obj_file],
|
||||
['-shared', '-lc', '-Wl,-rpath,/system/lib:/vendor/lib',
|
||||
'-Wl,--enable-new-dtags'])
|
||||
|
||||
|
||||
def _remove_size_lines(self, lines):
|
||||
"""Remove file size information because they may vary."""
|
||||
prefixes = (
|
||||
'FILE_SIZE\t',
|
||||
'RO_SEG_FILE_SIZE\t',
|
||||
'RO_SEG_MEM_SIZE\t',
|
||||
'RW_SEG_FILE_SIZE\t',
|
||||
'RW_SEG_MEM_SIZE\t',
|
||||
)
|
||||
patt = re.compile('|'.join('(?:' + re.escape(x) +')' for x in prefixes))
|
||||
return [line for line in lines if not patt.match(line)]
|
||||
|
||||
|
||||
def _assert_equal_to_file(self, expected_file_name, actual):
|
||||
actual = actual.splitlines(True)
|
||||
expected_file_path = os.path.join(self.expected_dir, expected_file_name)
|
||||
with open(expected_file_path, 'r') as f:
|
||||
expected = f.readlines()
|
||||
self.assertEqual(self._remove_size_lines(expected),
|
||||
self._remove_size_lines(actual))
|
||||
|
||||
|
||||
def _test_main_out(self):
|
||||
out_file = os.path.join(self.test_dir, 'main.out')
|
||||
self._assert_equal_to_file('main.out.txt', run_elf_dump(out_file))
|
||||
|
||||
|
||||
def _test_libtest(self, expected_file_name, lib_name):
|
||||
lib_file = os.path.join(self.test_dir, lib_name)
|
||||
self._assert_equal_to_file(expected_file_name, run_elf_dump(lib_file))
|
||||
|
||||
|
||||
def create_target_test(target_name):
|
||||
def test_main(self):
|
||||
self._test_main_out()
|
||||
|
||||
def test_libtest(self):
|
||||
self._test_libtest('libtest.so.txt', 'libtest.so')
|
||||
|
||||
def test_libtest_rpath(self):
|
||||
self._test_libtest('libtest-rpath.so.txt', 'libtest-rpath.so')
|
||||
|
||||
def test_libtest_rpath_multi(self):
|
||||
self._test_libtest('libtest-rpath-multi.so.txt',
|
||||
'libtest-rpath-multi.so')
|
||||
|
||||
def test_libtest_runpath(self):
|
||||
self._test_libtest('libtest-runpath.so.txt', 'libtest-runpath.so')
|
||||
|
||||
def test_libtest_runpath_multi(self):
|
||||
self._test_libtest('libtest-runpath-multi.so.txt',
|
||||
'libtest-runpath-multi.so')
|
||||
|
||||
class_name = 'ELFDumpTest_' + target_name
|
||||
globals()[class_name] = type(
|
||||
class_name, (ELFDumpTest,),
|
||||
dict(test_main=test_main,
|
||||
test_libtest=test_libtest,
|
||||
test_libtest_rpath=test_libtest_rpath,
|
||||
test_libtest_rpath_multi=test_libtest_rpath_multi,
|
||||
test_libtest_runpath=test_libtest_runpath,
|
||||
test_libtest_runpath_multi=test_libtest_runpath_multi,
|
||||
target_name=target_name))
|
||||
|
||||
|
||||
for target in ('arm', 'arm64', 'mips', 'mips64', 'x86', 'x86_64'):
|
||||
create_target_test(target)
|
||||
@@ -1,95 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import GenericRefs
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class MockELF(object):
|
||||
# pylint: disable=too-few-public-methods
|
||||
def __init__(self, exported_symbols):
|
||||
self.exported_symbols = exported_symbols
|
||||
|
||||
|
||||
class MockLib(object):
|
||||
# pylint: disable=too-few-public-methods
|
||||
def __init__(self, path, exported_symbols):
|
||||
self.path = path
|
||||
self.elf = MockELF(exported_symbols)
|
||||
|
||||
|
||||
class GenericRefsTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.ref = GenericRefs()
|
||||
self.ref.add('/system/lib/libc.so',
|
||||
MockELF({'fclose', 'fopen', 'fread', 'fwrite'}))
|
||||
self.ref.add('/system/lib/libm.so',
|
||||
MockELF({'cos', 'sin', 'tan'}))
|
||||
self.ref.add('/system/lib64/libc.so',
|
||||
MockELF({'fclose', 'fopen', 'fread', 'fwrite'}))
|
||||
self.ref.add('/system/lib64/libm.so',
|
||||
MockELF({'cos', 'sin', 'tan'}))
|
||||
|
||||
|
||||
def test_create_from_sym_dir(self):
|
||||
input_dir = os.path.join(SCRIPT_DIR, 'testdata', 'test_generic_refs')
|
||||
|
||||
g = GenericRefs.create_from_sym_dir(input_dir)
|
||||
self.assertEqual(4, len(g.refs))
|
||||
|
||||
self.assertIn('/system/lib/libc.so', g.refs)
|
||||
self.assertIn('/system/lib/libm.so', g.refs)
|
||||
self.assertIn('/system/lib64/libc.so', g.refs)
|
||||
self.assertIn('/system/lib64/libm.so', g.refs)
|
||||
|
||||
self.assertEqual({'fclose', 'fopen', 'fread', 'fwrite'},
|
||||
g.refs['/system/lib/libc.so'].exported_symbols)
|
||||
self.assertEqual({'fclose', 'fopen', 'fread', 'fwrite'},
|
||||
g.refs['/system/lib64/libc.so'].exported_symbols)
|
||||
|
||||
self.assertEqual({'cos', 'sin', 'tan'},
|
||||
g.refs['/system/lib/libm.so'].exported_symbols)
|
||||
self.assertEqual({'cos', 'sin', 'tan'},
|
||||
g.refs['/system/lib64/libm.so'].exported_symbols)
|
||||
|
||||
|
||||
def test_classify_lib(self):
|
||||
libc_sub = MockLib('/system/lib/libc.so', {'fclose', 'fopen', 'fread'})
|
||||
libc_sup = MockLib('/system/lib/libc.so',
|
||||
{'fclose', 'fopen', 'fread', 'fwrite', 'open'})
|
||||
libc_eq = MockLib('/system/lib/libc.so',
|
||||
{'fclose', 'fopen', 'fread', 'fwrite'})
|
||||
libfoo = MockLib('/system/lib/libfoo.so', {})
|
||||
|
||||
self.assertEqual(GenericRefs.MODIFIED, self.ref.classify_lib(libc_sub))
|
||||
self.assertEqual(GenericRefs.EXPORT_SUPER_SET,
|
||||
self.ref.classify_lib(libc_sup))
|
||||
self.assertEqual(GenericRefs.EXPORT_EQUAL,
|
||||
self.ref.classify_lib(libc_eq))
|
||||
self.assertEqual(GenericRefs.NEW_LIB, self.ref.classify_lib(libfoo))
|
||||
|
||||
|
||||
def test_is_equivalent_lib(self):
|
||||
libc_sub = MockLib('/system/lib/libc.so', {'fclose', 'fopen', 'fread'})
|
||||
libc_sup = MockLib('/system/lib/libc.so',
|
||||
{'fclose', 'fopen', 'fread', 'fwrite', 'open'})
|
||||
libc_eq = MockLib('/system/lib/libc.so',
|
||||
{'fclose', 'fopen', 'fread', 'fwrite'})
|
||||
|
||||
self.assertFalse(self.ref.is_equivalent_lib(libc_sub))
|
||||
self.assertFalse(self.ref.is_equivalent_lib(libc_sup))
|
||||
|
||||
self.assertTrue(self.ref.is_equivalent_lib(libc_eq))
|
||||
|
||||
|
||||
def test_has_same_name_lib(self):
|
||||
self.assertTrue(self.ref.has_same_name_lib(
|
||||
MockLib('/vendor/lib/libc.so', {})))
|
||||
self.assertFalse(self.ref.has_same_name_lib(
|
||||
MockLib('/vendor/lib/lib_does_not_exist.so', {})))
|
||||
@@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import ModuleInfo
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class ModuleInfoTest(unittest.TestCase):
|
||||
def test_default(self):
|
||||
m = ModuleInfo.load_from_path_or_default(None)
|
||||
self.assertEqual([], m.get_module_path('/system/lib64/libA.so'))
|
||||
|
||||
|
||||
def test_get_module_path(self):
|
||||
json_path = os.path.join(SCRIPT_DIR, 'testdata', 'test_module_info',
|
||||
'module-info.json')
|
||||
m = ModuleInfo.load_from_path_or_default(json_path)
|
||||
|
||||
self.assertEqual(['system/core/libA'],
|
||||
m.get_module_path('/system/lib64/libA.so'))
|
||||
self.assertEqual(['frameworks/base/libB'],
|
||||
m.get_module_path('/system/lib64/libB.so'))
|
||||
self.assertEqual(['frameworks/base/libC'],
|
||||
m.get_module_path('/system/lib64/libC.so'))
|
||||
self.assertEqual(['frameworks/base/libC'],
|
||||
m.get_module_path('/system/lib64/hw/libC.so'))
|
||||
|
||||
self.assertEqual(
|
||||
[], m.get_module_path('/system/lib64/libdoes_not_exist.so'))
|
||||
@@ -1,49 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import scandir
|
||||
|
||||
|
||||
class ScanDirTest(unittest.TestCase):
|
||||
def test_scandir(self):
|
||||
testdata_dir = os.path.join(
|
||||
os.path.dirname(__file__), 'testdata', 'test_scandir')
|
||||
|
||||
num_entries = 0
|
||||
for ent in scandir(testdata_dir):
|
||||
num_entries += 1
|
||||
|
||||
self.assertEqual(ent.path, os.path.join(testdata_dir, ent.name))
|
||||
|
||||
if ent.name == 'test_file':
|
||||
self.assertTrue(ent.is_file())
|
||||
self.assertFalse(ent.is_dir())
|
||||
self.assertFalse(ent.is_symlink())
|
||||
elif ent.name == 'test_dir':
|
||||
self.assertFalse(ent.is_file())
|
||||
self.assertTrue(ent.is_dir())
|
||||
self.assertFalse(ent.is_symlink())
|
||||
elif ent.name == 'link_test_file':
|
||||
self.assertTrue(ent.is_file())
|
||||
self.assertFalse(ent.is_file(follow_symlinks=False))
|
||||
self.assertFalse(ent.is_dir())
|
||||
self.assertFalse(ent.is_dir(follow_symlinks=False))
|
||||
self.assertTrue(ent.is_symlink())
|
||||
elif ent.name == 'link_test_dir':
|
||||
self.assertFalse(ent.is_file())
|
||||
self.assertFalse(ent.is_file(follow_symlinks=False))
|
||||
self.assertTrue(ent.is_dir())
|
||||
self.assertFalse(ent.is_dir(follow_symlinks=False))
|
||||
self.assertTrue(ent.is_symlink())
|
||||
elif ent.name == 'link_does_not_exist':
|
||||
self.assertFalse(ent.is_file())
|
||||
self.assertFalse(ent.is_file(follow_symlinks=False))
|
||||
self.assertFalse(ent.is_dir())
|
||||
self.assertFalse(ent.is_dir(follow_symlinks=False))
|
||||
self.assertTrue(ent.is_symlink())
|
||||
else:
|
||||
self.fail('unexpected filename: ' + ent.name)
|
||||
|
||||
self.assertEqual(num_entries, 5)
|
||||
@@ -1,497 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import TaggedDict, TaggedPathDict, TaggedLibDict, \
|
||||
NUM_PARTITIONS, PT_SYSTEM, PT_VENDOR
|
||||
|
||||
from .compat import StringIO
|
||||
|
||||
|
||||
_TEST_DATA = '''Path,Tag
|
||||
/system/lib/lib_ll_ndk.so,ll-ndk
|
||||
/system/lib/lib_ll_ndk_private.so,ll-ndk-private
|
||||
/system/lib/lib_vndk_sp.so,vndk-sp
|
||||
/system/lib/lib_vndk_sp_private.so,vndk-sp-private
|
||||
/system/lib/lib_vndk.so,vndk
|
||||
/system/lib/lib_system_only.so,system-only
|
||||
/system/lib/lib_system_only_rs.so,system-only-rs
|
||||
/vendor/lib/lib_sp_hal.so,sp-hal
|
||||
/vendor/lib/lib_sp_hal_dep.so,sp-hal-dep
|
||||
/vendor/lib/lib_vendor_only.so,vendor-only
|
||||
/product/lib/lib_product_only.so,product-only
|
||||
/system_ext/lib/lib_system_ext_only.so,system_ext-only
|
||||
/system/lib/lib_remove.so,remove
|
||||
/system/lib/lib_hl_ndk.so,hl-ndk
|
||||
/system/lib/lib_vndk_private.so,vndk-private
|
||||
/system/lib/lib_vndk_sp_both.so,vndk-sp-both
|
||||
/system/lib/lib_vndk_sp_hal.so,vndk-sp-hal
|
||||
/system/lib/lib_vndk_indirect.so,vndk-private
|
||||
/system/lib/lib_vndk_sp_indirect.so,vndk-sp
|
||||
/system/lib/lib_vndk_sp_indirect_private.so,vndk-sp-private
|
||||
/system/lib/lib_fwk_only.so,system-only
|
||||
/system/lib/lib_fwk_only_rs.so,system-only-rs
|
||||
/vendor/lib/lib_vnd_only.so,vendor-only
|
||||
'''
|
||||
|
||||
_TEST_DATA_ALIAS_PATHS = {
|
||||
'/system/lib/lib_hl_ndk.so',
|
||||
'/system/lib/lib_vndk_indirect.so',
|
||||
'/system/lib/lib_vndk_sp_both.so',
|
||||
'/system/lib/lib_vndk_sp_hal.so',
|
||||
'/system/lib/lib_vndk_sp_indirect.so',
|
||||
'/system/lib/lib_vndk_sp_indirect_private.so',
|
||||
'/system/lib/lib_fwk_only.so',
|
||||
'/system/lib/lib_fwk_only_rs.so',
|
||||
'/vendor/lib/lib_vnd_only.so',
|
||||
}
|
||||
|
||||
|
||||
class TaggedDictTest(unittest.TestCase):
|
||||
def test_normalize_tag(self):
|
||||
self.assertEqual('ll_ndk', TaggedDict._normalize_tag('ll-ndk'))
|
||||
self.assertEqual('ll_ndk', TaggedDict._normalize_tag('LL-NDK'))
|
||||
self.assertEqual('ll_ndk', TaggedDict._normalize_tag('LL_NDK'))
|
||||
with self.assertRaises(ValueError):
|
||||
TaggedDict._normalize_tag('unknown-lib-tag')
|
||||
|
||||
|
||||
def _check_tag_visibility(self, d, from_tag, visible_tags):
|
||||
for to_tag in visible_tags:
|
||||
self.assertTrue(d.is_tag_visible(from_tag, to_tag))
|
||||
for to_tag in TaggedDict.TAGS:
|
||||
self.assertEqual(d.is_tag_visible(from_tag, to_tag),
|
||||
to_tag in visible_tags)
|
||||
|
||||
|
||||
def test_is_tag_visible(self):
|
||||
d = TaggedDict()
|
||||
|
||||
# LL-NDK
|
||||
visible_tags = {'ll_ndk', 'll_ndk_private'}
|
||||
self._check_tag_visibility(d, 'll_ndk', visible_tags)
|
||||
self._check_tag_visibility(d, 'll_ndk_private', visible_tags)
|
||||
|
||||
# VNDK-SP
|
||||
visible_tags = {
|
||||
'll_ndk', 'vndk_sp', 'vndk_sp_private', 'system_only_rs',
|
||||
}
|
||||
self._check_tag_visibility(d, 'vndk_sp', visible_tags)
|
||||
self._check_tag_visibility(d, 'vndk_sp_private', visible_tags)
|
||||
|
||||
# VNDK
|
||||
visible_tags = {
|
||||
'll_ndk', 'vndk_sp', 'vndk_sp_private', 'vndk', 'vndk_private',
|
||||
}
|
||||
self._check_tag_visibility(d, 'vndk', visible_tags)
|
||||
|
||||
# SYSTEM-ONLY and SYSTEM_EXT-ONLY
|
||||
visible_tags = {
|
||||
'll_ndk', 'll_ndk_private',
|
||||
'vndk_sp', 'vndk_sp_private',
|
||||
'vndk', 'vndk_private',
|
||||
'system_only', 'system_only_rs',
|
||||
'system_ext_only',
|
||||
'sp_hal'
|
||||
}
|
||||
self._check_tag_visibility(d, 'system_only', visible_tags)
|
||||
self._check_tag_visibility(d, 'system_only_rs', visible_tags)
|
||||
self._check_tag_visibility(d, 'system_ext_only', visible_tags)
|
||||
|
||||
# SP-HAL
|
||||
visible_tags = {'ll_ndk', 'vndk_sp', 'sp_hal', 'sp_hal_dep'}
|
||||
self._check_tag_visibility(d, 'sp_hal', visible_tags)
|
||||
self._check_tag_visibility(d, 'sp_hal_dep', visible_tags)
|
||||
|
||||
# VENDOR-ONLY
|
||||
visible_tags = {
|
||||
'll_ndk', 'vndk_sp', 'vndk', 'sp_hal', 'sp_hal_dep', 'vendor_only',
|
||||
}
|
||||
self._check_tag_visibility(d, 'vendor_only', visible_tags)
|
||||
|
||||
# PRODUCT-ONLY
|
||||
visible_tags = {
|
||||
'll_ndk', 'vndk_sp', 'vndk', 'sp_hal',
|
||||
# Remove the following after VNDK-ext can be checked separately.
|
||||
'sp_hal_dep', 'vendor_only',
|
||||
}
|
||||
self._check_tag_visibility(d, 'vendor_only', visible_tags)
|
||||
|
||||
# Remove
|
||||
self._check_tag_visibility(d, 'remove', set())
|
||||
|
||||
|
||||
class TaggedPathDictTest(unittest.TestCase):
|
||||
def test_enumerate_paths(self):
|
||||
tagged_paths = TaggedPathDict()
|
||||
|
||||
self.assertEqual(
|
||||
['/system/lib/libc.so'],
|
||||
list(tagged_paths._enumerate_paths('/system/lib/libc.so')))
|
||||
|
||||
self.assertEqual(
|
||||
['/system/lib/libc.so', '/system/lib64/libc.so'],
|
||||
list(tagged_paths._enumerate_paths('/system/${LIB}/libc.so')))
|
||||
|
||||
self.assertEqual(
|
||||
['/system/lib/vndk/libutils.so',
|
||||
'/system/lib64/vndk/libutils.so'],
|
||||
list(tagged_paths._enumerate_paths(
|
||||
'/system/${LIB}/vndk${VNDK_VER}/libutils.so')))
|
||||
|
||||
tagged_paths = TaggedPathDict(['current', '27', '28'])
|
||||
|
||||
self.assertEqual(
|
||||
['/system/lib/vndk/libutils.so',
|
||||
'/system/lib64/vndk/libutils.so',
|
||||
'/system/lib/vndk-27/libutils.so',
|
||||
'/system/lib64/vndk-27/libutils.so',
|
||||
'/system/lib/vndk-28/libutils.so',
|
||||
'/system/lib64/vndk-28/libutils.so'],
|
||||
list(tagged_paths._enumerate_paths(
|
||||
'/system/${LIB}/vndk${VNDK_VER}/libutils.so')))
|
||||
|
||||
self.assertEqual(
|
||||
['/system/lib/vndk/libutils.so',
|
||||
'/system/lib/vndk-27/libutils.so',
|
||||
'/system/lib/vndk-28/libutils.so'],
|
||||
list(tagged_paths._enumerate_paths(
|
||||
'/system/lib/vndk${VNDK_VER}/libutils.so')))
|
||||
|
||||
|
||||
def test_load_from_csv_empty(self):
|
||||
try:
|
||||
TaggedPathDict().load_from_csv(StringIO(''))
|
||||
except StopIteration:
|
||||
self.fail('empty file should be considered as a valid input')
|
||||
|
||||
|
||||
def test_load_from_csv_with_header(self):
|
||||
fp = StringIO('Path,Tag\nliba.so,system-only\n')
|
||||
d = TaggedPathDict()
|
||||
d.load_from_csv(fp)
|
||||
self.assertIn('liba.so', d.system_only)
|
||||
|
||||
fp = StringIO('Tag,Path\nsystem-only,liba.so\n')
|
||||
d = TaggedPathDict()
|
||||
d.load_from_csv(fp)
|
||||
self.assertIn('liba.so', d.system_only)
|
||||
|
||||
|
||||
def test_load_from_csv_without_header(self):
|
||||
fp = StringIO('liba.so,system-only\n')
|
||||
d = TaggedPathDict()
|
||||
d.load_from_csv(fp)
|
||||
self.assertIn('liba.so', d.system_only)
|
||||
|
||||
|
||||
def _check_test_data_loaded(self, d):
|
||||
# Paths
|
||||
self.assertIn('/system/lib/lib_ll_ndk.so', d.ll_ndk)
|
||||
self.assertIn('/system/lib/lib_ll_ndk_private.so', d.ll_ndk_private)
|
||||
self.assertIn('/system/lib/lib_vndk_sp.so', d.vndk_sp)
|
||||
self.assertIn('/system/lib/lib_vndk_sp_private.so', d.vndk_sp_private)
|
||||
self.assertIn('/system/lib/lib_vndk.so', d.vndk)
|
||||
self.assertIn('/system/lib/lib_vndk_private.so', d.vndk_private)
|
||||
self.assertIn('/system/lib/lib_system_only.so', d.system_only)
|
||||
self.assertIn('/system/lib/lib_system_only_rs.so', d.system_only_rs)
|
||||
self.assertIn('/vendor/lib/lib_sp_hal.so', d.sp_hal)
|
||||
self.assertIn('/vendor/lib/lib_sp_hal_dep.so', d.sp_hal_dep)
|
||||
self.assertIn('/vendor/lib/lib_vendor_only.so', d.vendor_only)
|
||||
self.assertIn('/system_ext/lib/lib_system_ext_only.so',
|
||||
d.system_ext_only)
|
||||
self.assertIn('/product/lib/lib_product_only.so', d.product_only)
|
||||
self.assertIn('/system/lib/lib_remove.so', d.remove)
|
||||
|
||||
# Aliases
|
||||
self.assertIn('/system/lib/lib_hl_ndk.so', d.system_only)
|
||||
self.assertIn('/system/lib/lib_vndk_sp_both.so', d.vndk_sp)
|
||||
self.assertIn('/system/lib/lib_vndk_sp_hal.so', d.vndk_sp)
|
||||
|
||||
|
||||
def test_load_from_csv_tags(self):
|
||||
fp = StringIO(_TEST_DATA)
|
||||
d = TaggedPathDict()
|
||||
d.load_from_csv(fp)
|
||||
self._check_test_data_loaded(d)
|
||||
|
||||
|
||||
def test_create_from_csv(self):
|
||||
d = TaggedPathDict.create_from_csv(StringIO(_TEST_DATA))
|
||||
self._check_test_data_loaded(d)
|
||||
|
||||
|
||||
def test_create_from_csv_path(self):
|
||||
with tempfile.NamedTemporaryFile('w+') as f:
|
||||
f.write(_TEST_DATA)
|
||||
f.flush()
|
||||
|
||||
d = TaggedPathDict.create_from_csv_path(f.name)
|
||||
self._check_test_data_loaded(d)
|
||||
|
||||
|
||||
def test_get_path_tag(self):
|
||||
fp = StringIO(_TEST_DATA)
|
||||
d = TaggedPathDict()
|
||||
d.load_from_csv(fp)
|
||||
|
||||
self.assertEqual('ll_ndk', d.get_path_tag('/system/lib/lib_ll_ndk.so'))
|
||||
self.assertEqual('ll_ndk_private',
|
||||
d.get_path_tag('/system/lib/lib_ll_ndk_private.so'))
|
||||
self.assertEqual('vndk_sp',
|
||||
d.get_path_tag('/system/lib/lib_vndk_sp.so'))
|
||||
self.assertEqual('vndk_sp_private',
|
||||
d.get_path_tag('/system/lib/lib_vndk_sp_private.so'))
|
||||
self.assertEqual('vndk', d.get_path_tag('/system/lib/lib_vndk.so'))
|
||||
self.assertEqual('vndk_private',
|
||||
d.get_path_tag('/system/lib/lib_vndk_private.so'))
|
||||
self.assertEqual('system_only',
|
||||
d.get_path_tag('/system/lib/lib_system_only.so'))
|
||||
self.assertEqual('system_only_rs',
|
||||
d.get_path_tag('/system/lib/lib_system_only_rs.so'))
|
||||
self.assertEqual('sp_hal',
|
||||
d.get_path_tag('/vendor/lib/lib_sp_hal.so'))
|
||||
self.assertEqual('sp_hal_dep',
|
||||
d.get_path_tag('/vendor/lib/lib_sp_hal_dep.so'))
|
||||
self.assertEqual('vendor_only',
|
||||
d.get_path_tag('/vendor/lib/lib_vendor_only.so'))
|
||||
self.assertEqual('remove',
|
||||
d.get_path_tag('/system/lib/lib_remove.so'))
|
||||
|
||||
# Aliases
|
||||
self.assertEqual('system_only',
|
||||
d.get_path_tag('/system/lib/lib_hl_ndk.so'))
|
||||
self.assertEqual('vndk_sp',
|
||||
d.get_path_tag('/system/lib/lib_vndk_sp_hal.so'))
|
||||
self.assertEqual('vndk_sp',
|
||||
d.get_path_tag('/system/lib/lib_vndk_sp_both.so'))
|
||||
self.assertEqual('vndk_private',
|
||||
d.get_path_tag('/system/lib/lib_vndk_indirect.so'))
|
||||
self.assertEqual('vndk_sp',
|
||||
d.get_path_tag('/system/lib/lib_vndk_sp_indirect.so'))
|
||||
self.assertEqual('vndk_sp_private',
|
||||
d.get_path_tag('/system/lib/' +
|
||||
'lib_vndk_sp_indirect_private.so'))
|
||||
self.assertEqual('system_only',
|
||||
d.get_path_tag('/system/lib/lib_fwk_only.so'))
|
||||
self.assertEqual('system_only_rs',
|
||||
d.get_path_tag('/system/lib/lib_fwk_only_rs.so'))
|
||||
self.assertEqual('vendor_only',
|
||||
d.get_path_tag('/vendor/lib/lib_vendor_only.so'))
|
||||
|
||||
# Unmatched paths
|
||||
self.assertEqual('system_only',
|
||||
d.get_path_tag('/system/lib/unknown.so'))
|
||||
self.assertEqual('system_only',
|
||||
d.get_path_tag('/data/lib/unknown.so'))
|
||||
self.assertEqual('vendor_only',
|
||||
d.get_path_tag('/vendor/lib/unknown.so'))
|
||||
|
||||
|
||||
def _check_path_visibility(self, d, all_paths, from_paths, visible_paths):
|
||||
for from_path in from_paths:
|
||||
for to_path in all_paths:
|
||||
self.assertEqual(d.is_path_visible(from_path, to_path),
|
||||
to_path in visible_paths)
|
||||
|
||||
|
||||
def test_is_path_visible(self):
|
||||
fp = StringIO(_TEST_DATA)
|
||||
d = TaggedPathDict()
|
||||
d.load_from_csv(fp)
|
||||
|
||||
# Collect path universe set.
|
||||
all_paths = set()
|
||||
for tag in TaggedPathDict.TAGS:
|
||||
all_paths |= getattr(d, tag)
|
||||
all_paths -= _TEST_DATA_ALIAS_PATHS
|
||||
|
||||
# LL-NDK
|
||||
from_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_ll_ndk_private.so',
|
||||
}
|
||||
visible_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_ll_ndk_private.so',
|
||||
}
|
||||
self._check_path_visibility(d, all_paths, from_paths, visible_paths)
|
||||
|
||||
# VNDK-SP
|
||||
from_paths = {
|
||||
'/system/lib/lib_vndk_sp.so',
|
||||
'/system/lib/lib_vndk_sp_private.so',
|
||||
}
|
||||
visible_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_vndk_sp.so',
|
||||
'/system/lib/lib_vndk_sp_private.so',
|
||||
'/system/lib/lib_system_only_rs.so',
|
||||
}
|
||||
self._check_path_visibility(d, all_paths, from_paths, visible_paths)
|
||||
|
||||
# VNDK
|
||||
from_paths = {
|
||||
'/system/lib/lib_vndk.so',
|
||||
}
|
||||
visible_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_vndk_sp.so',
|
||||
'/system/lib/lib_vndk_sp_private.so',
|
||||
'/system/lib/lib_vndk.so',
|
||||
'/system/lib/lib_vndk_private.so',
|
||||
}
|
||||
self._check_path_visibility(d, all_paths, from_paths, visible_paths)
|
||||
|
||||
# SYSTEM-ONLY
|
||||
from_paths = {
|
||||
'/system/lib/lib_system_only.so',
|
||||
'/system/lib/lib_system_only_rs.so',
|
||||
}
|
||||
visible_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_ll_ndk_private.so',
|
||||
'/system/lib/lib_vndk_sp.so',
|
||||
'/system/lib/lib_vndk_sp_private.so',
|
||||
'/system/lib/lib_vndk.so',
|
||||
'/system/lib/lib_vndk_private.so',
|
||||
'/system/lib/lib_system_only.so',
|
||||
'/system/lib/lib_system_only_rs.so',
|
||||
'/vendor/lib/lib_sp_hal.so',
|
||||
'/system_ext/lib/lib_system_ext_only.so',
|
||||
}
|
||||
self._check_path_visibility(d, all_paths, from_paths, visible_paths)
|
||||
|
||||
# SP-HAL
|
||||
from_paths = {
|
||||
'/vendor/lib/lib_sp_hal.so',
|
||||
'/vendor/lib/lib_sp_hal_dep.so',
|
||||
}
|
||||
visible_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_vndk_sp.so',
|
||||
'/vendor/lib/lib_sp_hal.so',
|
||||
'/vendor/lib/lib_sp_hal_dep.so',
|
||||
}
|
||||
self._check_path_visibility(d, all_paths, from_paths, visible_paths)
|
||||
|
||||
# VENDOR-ONLY
|
||||
from_paths = {
|
||||
'/vendor/lib/lib_vendor_only.so',
|
||||
}
|
||||
visible_paths = {
|
||||
'/system/lib/lib_ll_ndk.so',
|
||||
'/system/lib/lib_vndk_sp.so',
|
||||
'/system/lib/lib_vndk.so',
|
||||
'/vendor/lib/lib_sp_hal.so',
|
||||
'/vendor/lib/lib_sp_hal_dep.so',
|
||||
'/vendor/lib/lib_vendor_only.so',
|
||||
}
|
||||
self._check_path_visibility(d, all_paths, from_paths, visible_paths)
|
||||
|
||||
|
||||
class MockSPLibResult(object):
|
||||
def __init__(self, sp_hal, sp_hal_dep):
|
||||
self.sp_hal = sp_hal
|
||||
self.sp_hal_dep = sp_hal_dep
|
||||
|
||||
|
||||
class MockELFLinkData(object):
|
||||
def __init__(self, path):
|
||||
self.path = path
|
||||
|
||||
|
||||
class MockELFGraph(object):
|
||||
def __init__(self):
|
||||
self.lib_pt = [dict() for i in range(NUM_PARTITIONS)]
|
||||
|
||||
|
||||
def add(self, path):
|
||||
partition = PT_VENDOR if path.startswith('/vendor') else PT_SYSTEM
|
||||
lib = MockELFLinkData(path)
|
||||
self.lib_pt[partition][path] = lib
|
||||
return lib
|
||||
|
||||
|
||||
def compute_sp_lib(self, generic_refs=None):
|
||||
vendor_libs = self.lib_pt[PT_VENDOR].values()
|
||||
return MockSPLibResult(
|
||||
set(v for v in vendor_libs if 'lib_sp_hal.so' in v.path),
|
||||
set(v for v in vendor_libs if 'lib_sp_hal_dep.so' in v.path))
|
||||
|
||||
|
||||
class TaggedLibDictTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tagged_paths = TaggedPathDict.create_from_csv(StringIO(_TEST_DATA))
|
||||
|
||||
self.graph = MockELFGraph()
|
||||
|
||||
self.lib_ll_ndk = self.graph.add('/system/lib/lib_ll_ndk.so')
|
||||
self.lib_ll_ndk_private = \
|
||||
self.graph.add('/system/lib/lib_ll_ndk_private.so')
|
||||
|
||||
self.lib_vndk_sp = self.graph.add('/system/lib/lib_vndk_sp.so')
|
||||
self.lib_vndk_sp_private = \
|
||||
self.graph.add('/system/lib/lib_vndk_sp_private.so')
|
||||
|
||||
self.lib_vndk = self.graph.add('/system/lib/lib_vndk.so')
|
||||
|
||||
self.lib_system_only = \
|
||||
self.graph.add('/system/lib/lib_system_only.so')
|
||||
self.lib_system_only_rs = \
|
||||
self.graph.add('/system/lib/lib_system_only_rs.so')
|
||||
|
||||
self.lib_sp_hal = self.graph.add('/vendor/lib/lib_sp_hal.so')
|
||||
self.lib_sp_hal_dep = self.graph.add('/vendor/lib/lib_sp_hal_dep.so')
|
||||
|
||||
self.lib_vendor_only = self.graph.add('/vendor/lib/lib_vendor_only.so')
|
||||
|
||||
self.tagged_libs = TaggedLibDict.create_from_graph(
|
||||
self.graph, self.tagged_paths)
|
||||
|
||||
|
||||
def test_create_from_graph(self):
|
||||
self.assertIn(self.lib_ll_ndk, self.tagged_libs.ll_ndk)
|
||||
self.assertIn(self.lib_ll_ndk_private,
|
||||
self.tagged_libs.ll_ndk_private)
|
||||
self.assertIn(self.lib_vndk_sp, self.tagged_libs.vndk_sp)
|
||||
self.assertIn(self.lib_vndk_sp_private,
|
||||
self.tagged_libs.vndk_sp_private)
|
||||
|
||||
self.assertIn(self.lib_vndk, self.tagged_libs.vndk)
|
||||
|
||||
self.assertIn(self.lib_system_only, self.tagged_libs.system_only)
|
||||
self.assertIn(self.lib_system_only_rs, self.tagged_libs.system_only_rs)
|
||||
|
||||
self.assertIn(self.lib_sp_hal, self.tagged_libs.sp_hal)
|
||||
self.assertIn(self.lib_sp_hal_dep, self.tagged_libs.sp_hal_dep)
|
||||
self.assertIn(self.lib_vendor_only, self.tagged_libs.vendor_only)
|
||||
|
||||
|
||||
def test_get_path_tag(self):
|
||||
d = self.tagged_libs
|
||||
|
||||
self.assertEqual('ll_ndk', d.get_path_tag(self.lib_ll_ndk))
|
||||
self.assertEqual('ll_ndk_private',
|
||||
d.get_path_tag(self.lib_ll_ndk_private))
|
||||
self.assertEqual('vndk_sp', d.get_path_tag(self.lib_vndk_sp))
|
||||
self.assertEqual('vndk_sp_private',
|
||||
d.get_path_tag(self.lib_vndk_sp_private))
|
||||
self.assertEqual('vndk', d.get_path_tag(self.lib_vndk))
|
||||
self.assertEqual('system_only', d.get_path_tag(self.lib_system_only))
|
||||
self.assertEqual('system_only_rs',
|
||||
d.get_path_tag(self.lib_system_only_rs))
|
||||
self.assertEqual('sp_hal', d.get_path_tag(self.lib_sp_hal))
|
||||
self.assertEqual('sp_hal_dep', d.get_path_tag(self.lib_sp_hal_dep))
|
||||
self.assertEqual('vendor_only', d.get_path_tag(self.lib_vendor_only))
|
||||
|
||||
# Unmatched paths
|
||||
tag = d.get_path_tag(MockELFLinkData('/system/lib/unknown.so'))
|
||||
self.assertEqual('system_only', tag)
|
||||
tag = d.get_path_tag(MockELFLinkData('/data/lib/unknown.so'))
|
||||
self.assertEqual('system_only', tag)
|
||||
tag = d.get_path_tag(MockELFLinkData('/vendor/lib/unknown.so'))
|
||||
self.assertEqual('vendor_only', tag)
|
||||
@@ -1,135 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from vndk_definition_tool import (PT_SYSTEM, PT_VENDOR)
|
||||
|
||||
from .compat import StringIO, TestCase, patch
|
||||
from .utils import GraphBuilder
|
||||
|
||||
|
||||
class ELFLinkerVNDKTest(TestCase):
|
||||
def test_normalize_partition_tags_bad_vendor_deps(self):
|
||||
"""Check whether normalize_partition_tags() hides the dependencies from
|
||||
the system partition to the vendor partition if the dependencies are
|
||||
not SP-HAL libraries."""
|
||||
|
||||
gb = GraphBuilder()
|
||||
libfwk = gb.add_lib32(PT_SYSTEM, 'libfwk', dt_needed=['libvnd.so'])
|
||||
libvnd = gb.add_lib32(PT_VENDOR, 'libvnd')
|
||||
gb.resolve()
|
||||
|
||||
self.assertIn(libvnd, libfwk.deps_needed)
|
||||
self.assertIn(libfwk, libvnd.users_needed)
|
||||
|
||||
stderr = StringIO()
|
||||
with patch('sys.stderr', stderr):
|
||||
gb.graph.normalize_partition_tags(set(), None)
|
||||
|
||||
self.assertRegex(
|
||||
stderr.getvalue(),
|
||||
'error: .*: system exe/lib must not depend on vendor lib .*. '
|
||||
'Assume such dependency does not exist.')
|
||||
|
||||
self.assertNotIn(libvnd, libfwk.deps_needed)
|
||||
self.assertNotIn(libfwk, libvnd.users_needed)
|
||||
|
||||
self.assertIn(libvnd, libfwk.deps_needed_hidden)
|
||||
self.assertIn(libfwk, libvnd.users_needed_hidden)
|
||||
|
||||
self.assertIn(libvnd, libfwk.deps_all)
|
||||
self.assertIn(libvnd, libfwk.deps_needed_all)
|
||||
self.assertNotIn(libvnd, libfwk.deps_good)
|
||||
|
||||
self.assertIn(libfwk, libvnd.users_all)
|
||||
self.assertIn(libfwk, libvnd.users_needed_all)
|
||||
self.assertNotIn(libfwk, libvnd.users_good)
|
||||
|
||||
|
||||
def test_normalize_partition_tags_sp_hal(self):
|
||||
"""Check whether normalize_partition_tags() keep dependencies to SP-HAL
|
||||
libraries as-is."""
|
||||
|
||||
gb = GraphBuilder()
|
||||
libfwk = gb.add_lib32(PT_SYSTEM, 'libfwk', dt_needed=['libsphal.so'])
|
||||
libsphal = gb.add_lib32(PT_VENDOR, 'libsphal')
|
||||
gb.resolve()
|
||||
|
||||
self.assertIn(libsphal, libfwk.deps_needed)
|
||||
self.assertIn(libfwk, libsphal.users_needed)
|
||||
|
||||
gb.graph.normalize_partition_tags({libsphal}, None)
|
||||
|
||||
# SP-HALs should be kept as-is.
|
||||
self.assertIn(libsphal, libfwk.deps_needed)
|
||||
self.assertIn(libfwk, libsphal.users_needed)
|
||||
|
||||
|
||||
def test_vndk(self):
|
||||
"""Check the computation of vndk without generic references."""
|
||||
|
||||
gb = GraphBuilder()
|
||||
gb.add_lib32(PT_SYSTEM, 'libfwk')
|
||||
libvndk = gb.add_lib32(PT_SYSTEM, 'libvndk', extra_dir='vndk')
|
||||
libvndk_sp = gb.add_lib32(PT_SYSTEM, 'libutils', extra_dir='vndk-sp')
|
||||
libvnd = gb.add_lib32(PT_VENDOR, 'libvnd',
|
||||
dt_needed=['libvndk.so', 'libutils.so'])
|
||||
gb.resolve()
|
||||
|
||||
self.assertIn(libvndk, libvnd.deps_all)
|
||||
self.assertIn(libvndk_sp, libvnd.deps_all)
|
||||
|
||||
vndk_sets = gb.graph.compute_degenerated_vndk(None)
|
||||
|
||||
self.assertIn(libvndk, vndk_sets.vndk)
|
||||
self.assertIn(libvndk_sp, vndk_sets.vndk_sp)
|
||||
|
||||
|
||||
def test_vndk_bad_vendor_deps(self):
|
||||
"""Check the computation of vndk without generic references."""
|
||||
|
||||
gb = GraphBuilder()
|
||||
|
||||
libvndk = gb.add_lib32(
|
||||
PT_SYSTEM, 'libvndk', dt_needed=['libvnd_bad.so'],
|
||||
extra_dir='vndk')
|
||||
|
||||
libvndk_sp = gb.add_lib32(
|
||||
PT_SYSTEM, 'libutils', dt_needed=['libvnd_bad.so'],
|
||||
extra_dir='vndk-sp')
|
||||
|
||||
libvnd_bad = gb.add_lib32(PT_VENDOR, 'libvnd_bad', extra_dir='vndk-sp')
|
||||
|
||||
gb.resolve()
|
||||
|
||||
self.assertIn(libvnd_bad, libvndk.deps_all)
|
||||
self.assertIn(libvnd_bad, libvndk_sp.deps_all)
|
||||
|
||||
with patch('sys.stderr', StringIO()):
|
||||
vndk_sets = gb.graph.compute_degenerated_vndk(None)
|
||||
|
||||
self.assertNotIn(libvnd_bad, vndk_sets.vndk)
|
||||
self.assertNotIn(libvnd_bad, vndk_sets.vndk_sp)
|
||||
|
||||
|
||||
def test_ll_ndk_private_without_sp_hal(self):
|
||||
"""Check the computation of ll_ndk_private excludes sp_hal."""
|
||||
|
||||
gb = GraphBuilder()
|
||||
libEGL = gb.add_lib32(PT_SYSTEM, 'libEGL',
|
||||
dt_needed=['libEGL_dep.so'])
|
||||
libEGL_dep = gb.add_lib32(PT_SYSTEM, 'libEGL_dep')
|
||||
libEGL_chipset = gb.add_lib32(PT_VENDOR, 'libEGL_chipset',
|
||||
extra_dir='egl',
|
||||
dt_needed=['libEGL.so'])
|
||||
gb.resolve()
|
||||
|
||||
libEGL.add_dlopen_dep(libEGL_chipset)
|
||||
|
||||
vndk_sets = gb.graph.compute_degenerated_vndk(None)
|
||||
|
||||
self.assertIn(libEGL, vndk_sets.ll_ndk)
|
||||
self.assertIn(libEGL_dep, vndk_sets.ll_ndk_private)
|
||||
self.assertIn(libEGL_chipset, vndk_sets.sp_hal)
|
||||
|
||||
self.assertNotIn(libEGL_chipset, vndk_sets.ll_ndk_private)
|
||||
@@ -1,219 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import posixpath
|
||||
import unittest
|
||||
|
||||
from vndk_definition_tool import VNDKLibDir
|
||||
|
||||
from .compat import StringIO
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class VNDKLibDirTest(unittest.TestCase):
|
||||
def test_create_vndk_dir_suffix(self):
|
||||
self.assertEqual('', VNDKLibDir.create_vndk_dir_suffix('current'))
|
||||
self.assertEqual('-28', VNDKLibDir.create_vndk_dir_suffix('28'))
|
||||
|
||||
|
||||
def test_create_vndk_sp_dir_name(self):
|
||||
self.assertEqual(
|
||||
'vndk-sp', VNDKLibDir.create_vndk_sp_dir_name('current'))
|
||||
self.assertEqual(
|
||||
'vndk-sp-28', VNDKLibDir.create_vndk_sp_dir_name('28'))
|
||||
|
||||
|
||||
def test_create_vndk_dir_name(self):
|
||||
self.assertEqual(
|
||||
'vndk', VNDKLibDir.create_vndk_dir_name('current'))
|
||||
self.assertEqual(
|
||||
'vndk-28', VNDKLibDir.create_vndk_dir_name('28'))
|
||||
|
||||
|
||||
def test_extract_vndk_version_from_name(self):
|
||||
self.assertEqual(
|
||||
'current', VNDKLibDir.extract_version_from_name('vndk'))
|
||||
self.assertEqual(
|
||||
'current', VNDKLibDir.extract_version_from_name('vndk-sp'))
|
||||
self.assertEqual(
|
||||
'28', VNDKLibDir.extract_version_from_name('vndk-28'))
|
||||
self.assertEqual(
|
||||
'28', VNDKLibDir.extract_version_from_name('vndk-sp-28'))
|
||||
self.assertEqual(
|
||||
'p', VNDKLibDir.extract_version_from_name('vndk-p'))
|
||||
self.assertEqual(
|
||||
'p', VNDKLibDir.extract_version_from_name('vndk-sp-p'))
|
||||
|
||||
|
||||
def test_extract_vndk_version_from_path(self):
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk/libexample.so')
|
||||
self.assertEqual('current', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk-sp/libexample.so')
|
||||
self.assertEqual('current', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk-28/libexample.so')
|
||||
self.assertEqual('28', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk-sp-28/libexample.so')
|
||||
self.assertEqual('28', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk-p/libexample.so')
|
||||
self.assertEqual('p', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk-sp-p/libexample.so')
|
||||
self.assertEqual('p', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/vndk-sp-p/hw/libexample.so')
|
||||
self.assertEqual('p', ans)
|
||||
|
||||
ans = VNDKLibDir.extract_version_from_path(
|
||||
'/system/lib64/libexample.so')
|
||||
self.assertEqual(None, ans)
|
||||
|
||||
|
||||
def test_is_in_vndk_sp_dir(self):
|
||||
self.assertFalse(VNDKLibDir.is_in_vndk_sp_dir('/system/lib/liba.so'))
|
||||
self.assertFalse(
|
||||
VNDKLibDir.is_in_vndk_sp_dir('/system/lib/vndk/liba.so'))
|
||||
self.assertFalse(
|
||||
VNDKLibDir.is_in_vndk_sp_dir('/system/lib/vndk-28/liba.so'))
|
||||
self.assertFalse(
|
||||
VNDKLibDir.is_in_vndk_sp_dir('/system/lib/vndk-spec/liba.so'))
|
||||
self.assertTrue(
|
||||
VNDKLibDir.is_in_vndk_sp_dir('/system/lib/vndk-sp/liba.so'))
|
||||
self.assertTrue(
|
||||
VNDKLibDir.is_in_vndk_sp_dir('/system/lib/vndk-sp-28/liba.so'))
|
||||
|
||||
|
||||
def test_is_in_vndk_dir(self):
|
||||
self.assertFalse(VNDKLibDir.is_in_vndk_dir('/system/lib/liba.so'))
|
||||
self.assertTrue(VNDKLibDir.is_in_vndk_dir('/system/lib/vndk/liba.so'))
|
||||
self.assertTrue(
|
||||
VNDKLibDir.is_in_vndk_dir('/system/lib/vndk-28/liba.so'))
|
||||
self.assertTrue(
|
||||
VNDKLibDir.is_in_vndk_dir('/system/lib/vndk-spec/liba.so'))
|
||||
self.assertFalse(
|
||||
VNDKLibDir.is_in_vndk_dir('/system/lib/vndk-sp/liba.so'))
|
||||
self.assertFalse(
|
||||
VNDKLibDir.is_in_vndk_dir('/system/lib/vndk-sp-28/liba.so'))
|
||||
|
||||
|
||||
def test_get_vndk_lib_dirs(self):
|
||||
for version in ('current', '28'):
|
||||
for lib_dir in ('lib', 'lib64'):
|
||||
vndk_sp_name = VNDKLibDir.create_vndk_sp_dir_name(version)
|
||||
vndk_name = VNDKLibDir.create_vndk_dir_name(version)
|
||||
|
||||
expected_vndk_sp = [
|
||||
posixpath.join('/vendor', lib_dir, vndk_sp_name),
|
||||
posixpath.join('/system', lib_dir, vndk_sp_name),
|
||||
]
|
||||
expected_vndk = [
|
||||
posixpath.join('/vendor', lib_dir, vndk_name),
|
||||
posixpath.join('/system', lib_dir, vndk_name),
|
||||
]
|
||||
|
||||
vndk_sp_dirs, vndk_dirs = \
|
||||
VNDKLibDir.get_vndk_lib_dirs(lib_dir, version)
|
||||
self.assertEqual(expected_vndk_sp, vndk_sp_dirs)
|
||||
self.assertEqual(expected_vndk, vndk_dirs)
|
||||
|
||||
|
||||
def test_add_version_current(self):
|
||||
vndk_lib_dirs = VNDKLibDir()
|
||||
vndk_lib_dirs.append('current')
|
||||
self.assertIn('current', vndk_lib_dirs)
|
||||
|
||||
|
||||
def test_create_from_dirs_unversioned(self):
|
||||
input_dir = os.path.join(
|
||||
SCRIPT_DIR, 'testdata', 'test_vndk_lib_dir', 'vndk_unversioned')
|
||||
|
||||
vndk_lib_dirs = VNDKLibDir.create_from_dirs(
|
||||
[os.path.join(input_dir, 'system')],
|
||||
[os.path.join(input_dir, 'vendor')])
|
||||
|
||||
self.assertIn('current', vndk_lib_dirs)
|
||||
|
||||
|
||||
def test_create_from_dirs_versioned(self):
|
||||
input_dir = os.path.join(
|
||||
SCRIPT_DIR, 'testdata', 'test_vndk_lib_dir', 'vndk_versioned')
|
||||
|
||||
vndk_lib_dirs = VNDKLibDir.create_from_dirs(
|
||||
[os.path.join(input_dir, 'system')],
|
||||
[os.path.join(input_dir, 'vendor')])
|
||||
|
||||
self.assertIn('28', vndk_lib_dirs)
|
||||
|
||||
|
||||
def test_create_from_dirs_versioned_multiple(self):
|
||||
input_dir = os.path.join(
|
||||
SCRIPT_DIR, 'testdata', 'test_vndk_lib_dir',
|
||||
'vndk_versioned_multiple')
|
||||
|
||||
vndk_lib_dirs = VNDKLibDir.create_from_dirs(
|
||||
[os.path.join(input_dir, 'system')],
|
||||
[os.path.join(input_dir, 'vendor')])
|
||||
|
||||
self.assertIn('28', vndk_lib_dirs)
|
||||
self.assertIn('29', vndk_lib_dirs)
|
||||
|
||||
|
||||
def test_create_from_dirs_versioned_32bit_only(self):
|
||||
input_dir = os.path.join(
|
||||
SCRIPT_DIR, 'testdata', 'test_vndk_lib_dir', 'vndk_32')
|
||||
|
||||
vndk_lib_dirs = VNDKLibDir.create_from_dirs(
|
||||
[os.path.join(input_dir, 'system')],
|
||||
[os.path.join(input_dir, 'vendor')])
|
||||
|
||||
self.assertIn('28', vndk_lib_dirs)
|
||||
|
||||
|
||||
def test_get_property(self):
|
||||
property_file = StringIO('ro.vndk.version=example\n')
|
||||
ans = VNDKLibDir._get_property(property_file, 'ro.vndk.version')
|
||||
self.assertEqual('example', ans)
|
||||
|
||||
property_file = StringIO('# comments\n')
|
||||
ans = VNDKLibDir._get_property(property_file, 'ro.vndk.version')
|
||||
self.assertEqual(None, ans)
|
||||
|
||||
|
||||
def test_get_ro_vndk_version(self):
|
||||
input_dir = os.path.join(
|
||||
SCRIPT_DIR, 'testdata', 'test_vndk_lib_dir',
|
||||
'vndk_versioned_multiple')
|
||||
|
||||
vendor_dirs = [os.path.join(input_dir, 'vendor')]
|
||||
|
||||
self.assertEqual('29', VNDKLibDir.get_ro_vndk_version(vendor_dirs))
|
||||
|
||||
|
||||
def test_sorted_versions(self):
|
||||
self.assertEqual(
|
||||
['20', '10', '2', '1'],
|
||||
VNDKLibDir.sorted_version(['1', '2', '10', '20']))
|
||||
|
||||
self.assertEqual(
|
||||
['b', 'a', '20', '10', '2', '1'],
|
||||
VNDKLibDir.sorted_version(['1', '2', '10', '20', 'a', 'b']))
|
||||
|
||||
self.assertEqual(
|
||||
['a', '10b', '10', '2', '1'],
|
||||
VNDKLibDir.sorted_version(['1', '2', '10', 'a', '10b']))
|
||||
|
||||
self.assertEqual(
|
||||
['current', 'd', 'a', '10', '1'],
|
||||
VNDKLibDir.sorted_version(['1', '10', 'a', 'd', 'current']))
|
||||
@@ -1,13 +0,0 @@
|
||||
.class public LExample;
|
||||
|
||||
.super Ljava/lang/object;
|
||||
|
||||
.method public static <clinit>()V
|
||||
.locals 1
|
||||
|
||||
const-string v0, "foo"
|
||||
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
|
||||
|
||||
const-string v0, "bar"
|
||||
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
|
||||
.end method
|
||||
@@ -1,13 +0,0 @@
|
||||
.class public LHello;
|
||||
|
||||
.super Ljava/lang/object;
|
||||
|
||||
.method public static <clinit>()V
|
||||
.locals 1
|
||||
|
||||
const-string v0, "hello"
|
||||
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
|
||||
|
||||
const-string v0, "world"
|
||||
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
|
||||
.end method
|
||||
@@ -1,18 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
FILE_SIZE 6220
|
||||
RO_SEG_FILE_SIZE 880
|
||||
RO_SEG_MEM_SIZE 880
|
||||
RW_SEG_FILE_SIZE 280
|
||||
RW_SEG_MEM_SIZE 280
|
||||
DT_RPATH /system/lib
|
||||
DT_RPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,17 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
FILE_SIZE 6220
|
||||
RO_SEG_FILE_SIZE 864
|
||||
RO_SEG_MEM_SIZE 864
|
||||
RW_SEG_FILE_SIZE 280
|
||||
RW_SEG_MEM_SIZE 280
|
||||
DT_RPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,18 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
FILE_SIZE 6220
|
||||
RO_SEG_FILE_SIZE 880
|
||||
RO_SEG_MEM_SIZE 880
|
||||
RW_SEG_FILE_SIZE 280
|
||||
RW_SEG_MEM_SIZE 280
|
||||
DT_RUNPATH /system/lib
|
||||
DT_RUNPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,17 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
FILE_SIZE 6220
|
||||
RO_SEG_FILE_SIZE 864
|
||||
RO_SEG_MEM_SIZE 864
|
||||
RW_SEG_FILE_SIZE 280
|
||||
RW_SEG_MEM_SIZE 280
|
||||
DT_RUNPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,16 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
FILE_SIZE 6220
|
||||
RO_SEG_FILE_SIZE 844
|
||||
RO_SEG_MEM_SIZE 844
|
||||
RW_SEG_FILE_SIZE 272
|
||||
RW_SEG_MEM_SIZE 272
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,20 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
FILE_SIZE 6776
|
||||
RO_SEG_FILE_SIZE 1646
|
||||
RO_SEG_MEM_SIZE 1646
|
||||
RW_SEG_FILE_SIZE 344
|
||||
RW_SEG_MEM_SIZE 348
|
||||
DT_NEEDED libdl.so
|
||||
DT_NEEDED libc.so
|
||||
DT_NEEDED libstdc++.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __libc_init
|
||||
IMP_SYMBOL dlclose
|
||||
IMP_SYMBOL dlopen
|
||||
IMP_SYMBOL dlsym
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,22 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
FILE_SIZE 7296
|
||||
RO_SEG_FILE_SIZE 1248
|
||||
RO_SEG_MEM_SIZE 1248
|
||||
RW_SEG_FILE_SIZE 520
|
||||
RW_SEG_MEM_SIZE 520
|
||||
DT_RPATH /system/lib
|
||||
DT_RPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __bss_start__
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,21 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
FILE_SIZE 7296
|
||||
RO_SEG_FILE_SIZE 1248
|
||||
RO_SEG_MEM_SIZE 1248
|
||||
RW_SEG_FILE_SIZE 520
|
||||
RW_SEG_MEM_SIZE 520
|
||||
DT_RPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __bss_start__
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,22 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
FILE_SIZE 7296
|
||||
RO_SEG_FILE_SIZE 1248
|
||||
RO_SEG_MEM_SIZE 1248
|
||||
RW_SEG_FILE_SIZE 520
|
||||
RW_SEG_MEM_SIZE 520
|
||||
DT_RUNPATH /system/lib
|
||||
DT_RUNPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __bss_start__
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,21 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
FILE_SIZE 7296
|
||||
RO_SEG_FILE_SIZE 1248
|
||||
RO_SEG_MEM_SIZE 1248
|
||||
RW_SEG_FILE_SIZE 520
|
||||
RW_SEG_MEM_SIZE 520
|
||||
DT_RUNPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __bss_start__
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,20 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
FILE_SIZE 7296
|
||||
RO_SEG_FILE_SIZE 1232
|
||||
RO_SEG_MEM_SIZE 1232
|
||||
RW_SEG_FILE_SIZE 504
|
||||
RW_SEG_MEM_SIZE 504
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __bss_start__
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,28 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
FILE_SIZE 8256
|
||||
RO_SEG_FILE_SIZE 2410
|
||||
RO_SEG_MEM_SIZE 2410
|
||||
RW_SEG_FILE_SIZE 664
|
||||
RW_SEG_MEM_SIZE 664
|
||||
DT_NEEDED libdl.so
|
||||
DT_NEEDED libc.so
|
||||
DT_NEEDED libstdc++.so
|
||||
EXP_SYMBOL __FINI_ARRAY__
|
||||
EXP_SYMBOL __INIT_ARRAY__
|
||||
EXP_SYMBOL __PREINIT_ARRAY__
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __bss_start__
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL main
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __libc_init
|
||||
IMP_SYMBOL dlclose
|
||||
IMP_SYMBOL dlopen
|
||||
IMP_SYMBOL dlsym
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,25 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 6660
|
||||
RO_SEG_FILE_SIZE 1180
|
||||
RO_SEG_MEM_SIZE 1180
|
||||
RW_SEG_FILE_SIZE 308
|
||||
RW_SEG_MEM_SIZE 308
|
||||
DT_RPATH /system/lib
|
||||
DT_RPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL _gp_disp
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,24 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 6660
|
||||
RO_SEG_FILE_SIZE 1164
|
||||
RO_SEG_MEM_SIZE 1164
|
||||
RW_SEG_FILE_SIZE 308
|
||||
RW_SEG_MEM_SIZE 308
|
||||
DT_RPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL _gp_disp
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,25 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 6660
|
||||
RO_SEG_FILE_SIZE 1180
|
||||
RO_SEG_MEM_SIZE 1180
|
||||
RW_SEG_FILE_SIZE 308
|
||||
RW_SEG_MEM_SIZE 308
|
||||
DT_RUNPATH /system/lib
|
||||
DT_RUNPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL _gp_disp
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,24 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 6660
|
||||
RO_SEG_FILE_SIZE 1164
|
||||
RO_SEG_MEM_SIZE 1164
|
||||
RW_SEG_FILE_SIZE 308
|
||||
RW_SEG_MEM_SIZE 308
|
||||
DT_RUNPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL _gp_disp
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,23 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 6660
|
||||
RO_SEG_FILE_SIZE 1164
|
||||
RO_SEG_MEM_SIZE 1164
|
||||
RW_SEG_FILE_SIZE 300
|
||||
RW_SEG_MEM_SIZE 300
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL _gp_disp
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,34 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 7936
|
||||
RO_SEG_FILE_SIZE 2384
|
||||
RO_SEG_MEM_SIZE 2384
|
||||
RW_SEG_FILE_SIZE 396
|
||||
RW_SEG_MEM_SIZE 416
|
||||
DT_NEEDED libdl.so
|
||||
DT_NEEDED libc.so
|
||||
DT_NEEDED libstdc++.so
|
||||
EXP_SYMBOL _DYNAMIC_LINKING
|
||||
EXP_SYMBOL __CTOR_LIST__
|
||||
EXP_SYMBOL __DTOR_LIST__
|
||||
EXP_SYMBOL __FINI_ARRAY__
|
||||
EXP_SYMBOL __INIT_ARRAY__
|
||||
EXP_SYMBOL __PREINIT_ARRAY__
|
||||
EXP_SYMBOL __RLD_MAP
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL main
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __libc_init
|
||||
IMP_SYMBOL dlclose
|
||||
IMP_SYMBOL dlopen
|
||||
IMP_SYMBOL dlsym
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,24 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 7640
|
||||
RO_SEG_FILE_SIZE 2092
|
||||
RO_SEG_MEM_SIZE 2092
|
||||
RW_SEG_FILE_SIZE 104
|
||||
RW_SEG_MEM_SIZE 104
|
||||
DT_RPATH /system/lib
|
||||
DT_RPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,23 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 7640
|
||||
RO_SEG_FILE_SIZE 2092
|
||||
RO_SEG_MEM_SIZE 2092
|
||||
RW_SEG_FILE_SIZE 104
|
||||
RW_SEG_MEM_SIZE 104
|
||||
DT_RPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,24 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 7640
|
||||
RO_SEG_FILE_SIZE 2092
|
||||
RO_SEG_MEM_SIZE 2092
|
||||
RW_SEG_FILE_SIZE 104
|
||||
RW_SEG_MEM_SIZE 104
|
||||
DT_RUNPATH /system/lib
|
||||
DT_RUNPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,23 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 7640
|
||||
RO_SEG_FILE_SIZE 2092
|
||||
RO_SEG_MEM_SIZE 2092
|
||||
RW_SEG_FILE_SIZE 104
|
||||
RW_SEG_MEM_SIZE 104
|
||||
DT_RUNPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,22 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 7640
|
||||
RO_SEG_FILE_SIZE 2060
|
||||
RO_SEG_MEM_SIZE 2060
|
||||
RW_SEG_FILE_SIZE 104
|
||||
RW_SEG_MEM_SIZE 104
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,32 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_MIPS
|
||||
FILE_SIZE 9568
|
||||
RO_SEG_FILE_SIZE 3448
|
||||
RO_SEG_MEM_SIZE 3448
|
||||
RW_SEG_FILE_SIZE 216
|
||||
RW_SEG_MEM_SIZE 240
|
||||
DT_NEEDED libdl.so
|
||||
DT_NEEDED libc.so
|
||||
DT_NEEDED libstdc++.so
|
||||
EXP_SYMBOL _DYNAMIC_LINKING
|
||||
EXP_SYMBOL __FINI_ARRAY__
|
||||
EXP_SYMBOL __INIT_ARRAY__
|
||||
EXP_SYMBOL __PREINIT_ARRAY__
|
||||
EXP_SYMBOL __RLD_MAP
|
||||
EXP_SYMBOL __bss_end__
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL __end__
|
||||
EXP_SYMBOL _bss_end__
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL _fbss
|
||||
EXP_SYMBOL _fdata
|
||||
EXP_SYMBOL _ftext
|
||||
EXP_SYMBOL main
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __libc_init
|
||||
IMP_SYMBOL dlclose
|
||||
IMP_SYMBOL dlopen
|
||||
IMP_SYMBOL dlsym
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,19 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_386
|
||||
FILE_SIZE 6212
|
||||
RO_SEG_FILE_SIZE 1364
|
||||
RO_SEG_MEM_SIZE 1364
|
||||
RW_SEG_FILE_SIZE 284
|
||||
RW_SEG_MEM_SIZE 284
|
||||
DT_RPATH /system/lib
|
||||
DT_RPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL __stack_chk_fail
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,18 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_386
|
||||
FILE_SIZE 6212
|
||||
RO_SEG_FILE_SIZE 1348
|
||||
RO_SEG_MEM_SIZE 1348
|
||||
RW_SEG_FILE_SIZE 284
|
||||
RW_SEG_MEM_SIZE 284
|
||||
DT_RPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL __stack_chk_fail
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,19 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_386
|
||||
FILE_SIZE 6212
|
||||
RO_SEG_FILE_SIZE 1364
|
||||
RO_SEG_MEM_SIZE 1364
|
||||
RW_SEG_FILE_SIZE 284
|
||||
RW_SEG_MEM_SIZE 284
|
||||
DT_RUNPATH /system/lib
|
||||
DT_RUNPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL __stack_chk_fail
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,18 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_386
|
||||
FILE_SIZE 6212
|
||||
RO_SEG_FILE_SIZE 1348
|
||||
RO_SEG_MEM_SIZE 1348
|
||||
RW_SEG_FILE_SIZE 284
|
||||
RW_SEG_MEM_SIZE 284
|
||||
DT_RUNPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL __stack_chk_fail
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,17 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_386
|
||||
FILE_SIZE 6212
|
||||
RO_SEG_FILE_SIZE 1316
|
||||
RO_SEG_MEM_SIZE 1316
|
||||
RW_SEG_FILE_SIZE 276
|
||||
RW_SEG_MEM_SIZE 276
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL __stack_chk_fail
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,21 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_386
|
||||
FILE_SIZE 6680
|
||||
RO_SEG_FILE_SIZE 1992
|
||||
RO_SEG_MEM_SIZE 1992
|
||||
RW_SEG_FILE_SIZE 288
|
||||
RW_SEG_MEM_SIZE 292
|
||||
DT_NEEDED libdl.so
|
||||
DT_NEEDED libc.so
|
||||
DT_NEEDED libstdc++.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __libc_init
|
||||
IMP_SYMBOL __stack_chk_fail
|
||||
IMP_SYMBOL dlclose
|
||||
IMP_SYMBOL dlopen
|
||||
IMP_SYMBOL dlsym
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,18 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_X86_64
|
||||
FILE_SIZE 6888
|
||||
RO_SEG_FILE_SIZE 1456
|
||||
RO_SEG_MEM_SIZE 1456
|
||||
RW_SEG_FILE_SIZE 560
|
||||
RW_SEG_MEM_SIZE 560
|
||||
DT_RPATH /system/lib
|
||||
DT_RPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,17 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_X86_64
|
||||
FILE_SIZE 6888
|
||||
RO_SEG_FILE_SIZE 1440
|
||||
RO_SEG_MEM_SIZE 1440
|
||||
RW_SEG_FILE_SIZE 560
|
||||
RW_SEG_MEM_SIZE 560
|
||||
DT_RPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,18 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_X86_64
|
||||
FILE_SIZE 6888
|
||||
RO_SEG_FILE_SIZE 1456
|
||||
RO_SEG_MEM_SIZE 1456
|
||||
RW_SEG_FILE_SIZE 560
|
||||
RW_SEG_MEM_SIZE 560
|
||||
DT_RUNPATH /system/lib
|
||||
DT_RUNPATH /vendor/lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,17 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_X86_64
|
||||
FILE_SIZE 6888
|
||||
RO_SEG_FILE_SIZE 1440
|
||||
RO_SEG_MEM_SIZE 1440
|
||||
RW_SEG_FILE_SIZE 560
|
||||
RW_SEG_MEM_SIZE 560
|
||||
DT_RUNPATH $ORIGIN/../lib
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,16 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_X86_64
|
||||
FILE_SIZE 6888
|
||||
RO_SEG_FILE_SIZE 1424
|
||||
RO_SEG_MEM_SIZE 1424
|
||||
RW_SEG_FILE_SIZE 544
|
||||
RW_SEG_MEM_SIZE 544
|
||||
DT_NEEDED libc.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
EXP_SYMBOL test
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __cxa_finalize
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,20 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_X86_64
|
||||
FILE_SIZE 7584
|
||||
RO_SEG_FILE_SIZE 2248
|
||||
RO_SEG_MEM_SIZE 2248
|
||||
RW_SEG_FILE_SIZE 664
|
||||
RW_SEG_MEM_SIZE 672
|
||||
DT_NEEDED libdl.so
|
||||
DT_NEEDED libc.so
|
||||
DT_NEEDED libstdc++.so
|
||||
EXP_SYMBOL __bss_start
|
||||
EXP_SYMBOL _edata
|
||||
EXP_SYMBOL _end
|
||||
IMP_SYMBOL __cxa_atexit
|
||||
IMP_SYMBOL __libc_init
|
||||
IMP_SYMBOL dlclose
|
||||
IMP_SYMBOL dlopen
|
||||
IMP_SYMBOL dlsym
|
||||
IMP_SYMBOL puts
|
||||
@@ -1,25 +0,0 @@
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc < 2) {
|
||||
puts("usage: main.out libtest.so");
|
||||
return 1;
|
||||
}
|
||||
|
||||
void *handle = dlopen(argv[1], RTLD_NOW);
|
||||
if (!handle) {
|
||||
puts("failed to open lib");
|
||||
return 1;
|
||||
}
|
||||
|
||||
void (*test)(void) = dlsym(handle, "test");
|
||||
if (!test) {
|
||||
puts("failed to find test() function");
|
||||
} else {
|
||||
test();
|
||||
}
|
||||
|
||||
dlclose(handle);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
extern void test();
|
||||
|
||||
extern int puts(const char *);
|
||||
|
||||
void test() {
|
||||
puts("hello world");
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
EXP_SYMBOL fclose
|
||||
EXP_SYMBOL fopen
|
||||
EXP_SYMBOL fread
|
||||
EXP_SYMBOL fwrite
|
||||
@@ -1,6 +0,0 @@
|
||||
EI_CLASS 32
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_ARM
|
||||
EXP_SYMBOL cos
|
||||
EXP_SYMBOL sin
|
||||
EXP_SYMBOL tan
|
||||
@@ -1,7 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
EXP_SYMBOL fclose
|
||||
EXP_SYMBOL fopen
|
||||
EXP_SYMBOL fread
|
||||
EXP_SYMBOL fwrite
|
||||
@@ -1,6 +0,0 @@
|
||||
EI_CLASS 64
|
||||
EI_DATA Little-Endian
|
||||
E_MACHINE EM_AARCH64
|
||||
EXP_SYMBOL cos
|
||||
EXP_SYMBOL sin
|
||||
EXP_SYMBOL tan
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"libA": { "path": ["system/core/libA"], "installed": ["out/target/product/generic_arm64/system/lib64/libA.so"] },
|
||||
"libB": { "path": ["frameworks/base/libB"], "installed": ["out/target/product/generic_arm64/system/lib64/libB.so"] },
|
||||
"libC": { "path": ["frameworks/base/libC"], "installed": ["out/target/product/generic_arm64/system/lib64/libC.so", "out/target/product/generic_arm64/system/lib64/hw/libC.so"] }
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
does_not_exist
|
||||
@@ -1 +0,0 @@
|
||||
test_dir
|
||||
@@ -1 +0,0 @@
|
||||
test_file
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user