mirror of
https://github.com/YTVanced/VancedMicroG
synced 2024-11-01 00:42:39 +00:00
commit
838770a615
11 changed files with 1 additions and 1054 deletions
21
.tx/config
21
.tx/config
|
@ -1,21 +0,0 @@
|
||||||
[main]
|
|
||||||
host = https://www.transifex.com
|
|
||||||
lang_map = he: iw, zh_TW: zh-rTW, es_MX: es-rMX, pt_BR: pt-rBR
|
|
||||||
|
|
||||||
[gmscore.strings]
|
|
||||||
file_filter = play-services-core/src/main/res/values-<lang>/strings.xml
|
|
||||||
source_file = play-services-core/src/main/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
||||||
|
|
||||||
[gmscore.plurals]
|
|
||||||
file_filter = play-services-core/src/main/res/values-<lang>/plurals.xml
|
|
||||||
source_file = play-services-core/src/main/res/values/plurals.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
||||||
|
|
||||||
[gmscore.permissions]
|
|
||||||
file_filter = play-services-core/src/main/res/values-<lang>/permissions.xml
|
|
||||||
source_file = play-services-core/src/main/res/values/permissions.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
|
@ -1,291 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="299.98224"
|
|
||||||
height="299.67419"
|
|
||||||
viewBox="0 0 299.98226 299.6742"
|
|
||||||
id="svg2"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.91 r13725"
|
|
||||||
sodipodi:docname="ic_gamepad.svg"
|
|
||||||
inkscape:export-filename="/home/marvin/Development/IDEA/microg_gradle_build_root/play-services-core/src/main/res/drawable-xxhdpi/ic_gamepad.png"
|
|
||||||
inkscape:export-xdpi="43.202557"
|
|
||||||
inkscape:export-ydpi="43.202557">
|
|
||||||
<defs
|
|
||||||
id="defs4">
|
|
||||||
<filter
|
|
||||||
style="color-interpolation-filters:sRGB;"
|
|
||||||
inkscape:label="Drop Shadow"
|
|
||||||
id="filter4067"
|
|
||||||
x="-0.5"
|
|
||||||
y="-0.5"
|
|
||||||
width="2"
|
|
||||||
height="2">
|
|
||||||
<feFlood
|
|
||||||
flood-opacity="1"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
id="feFlood4069" />
|
|
||||||
<feComposite
|
|
||||||
in="flood"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="in"
|
|
||||||
result="composite1"
|
|
||||||
id="feComposite4071" />
|
|
||||||
<feGaussianBlur
|
|
||||||
in="composite"
|
|
||||||
stdDeviation="6"
|
|
||||||
result="blur"
|
|
||||||
id="feGaussianBlur4073" />
|
|
||||||
<feComponentTransfer
|
|
||||||
id="feComponentTransfer13">
|
|
||||||
<feFuncA
|
|
||||||
type="linear"
|
|
||||||
slope="0.2"
|
|
||||||
id="feFuncA15" />
|
|
||||||
</feComponentTransfer>
|
|
||||||
<feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="6"
|
|
||||||
result="offset"
|
|
||||||
id="feOffset4075"
|
|
||||||
stdDeviation="8" />
|
|
||||||
<feComposite
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="offset"
|
|
||||||
operator="over"
|
|
||||||
result="composite2"
|
|
||||||
id="feComposite4077" />
|
|
||||||
</filter>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4266">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4268"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4270">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4272"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4274">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4276"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4278">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4280"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4282">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4284"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4286">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4288"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4290">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4292"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath4294">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 354.99922,92.361314 c -29.48241,0 -53.85,21.058586 -58.98632,49.011716 l -0.0234,-0.004 -19.10156,108.32813 a 24.999997,24.999997 0 0 0 20.27929,28.96094 24.999997,24.999997 0 0 0 22.00977,-6.94922 l 0.01,0.008 0.19141,-0.19336 44.16406,-44.16211 102.91407,0 44.16406,44.16211 0.1914,0.19336 0.0117,-0.008 a 24.999997,24.999997 0 0 0 22.00782,6.94922 24.999997,24.999997 0 0 0 20.27929,-28.96094 l -19.09961,-108.32813 -0.004,0 -0.0195,0.004 C 528.85138,113.4199 504.48183,92.361314 474.99941,92.361314 l -119.99804,0 -0.002,0 z"
|
|
||||||
id="path4296"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="2"
|
|
||||||
inkscape:cx="177.50974"
|
|
||||||
inkscape:cy="142.62777"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1016"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
fit-margin-left="11.5"
|
|
||||||
fit-margin-right="11.5"
|
|
||||||
fit-margin-top="56.5"
|
|
||||||
fit-margin-bottom="56.5"
|
|
||||||
units="px" />
|
|
||||||
<metadata
|
|
||||||
id="metadata7">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-265.00899,-35.861337)">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#689f38;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 534.00781,141.36914 -49.24023,8.68164 0.4082,2.31055 -190.17578,0 0,75 171.45703,0 44.16406,44.16211 0.19141,0.19336 0.01,-0.008 a 25,25 0 0 0 22.00976,6.94922 25,25 0 0 0 20.2793,-28.96093 L 534.01,141.36896 l -0.002,0 z"
|
|
||||||
id="rect4154"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
clip-path="url(#clipPath4294)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#8bc34a;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 355,92.361328 c -29.48242,0 -53.85001,21.058592 -58.98633,49.011722 l -0.0234,-0.004 -19.10156,108.32813 a 25,25 0 0 0 20.2793,28.96093 25,25 0 0 0 22.00976,-6.94922 l 0.008,0.008 0.1914,-0.19336 59.16407,-59.16211 96.45898,0 c 33.24,0 60,-26.76 60,-60 0,-33.24 -26.76,-60.000002 -60,-60.000002 l -120,0 z"
|
|
||||||
id="rect4152"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
clip-path="url(#clipPath4290)" />
|
|
||||||
<g
|
|
||||||
id="g4210"
|
|
||||||
clip-path="url(#clipPath4286)">
|
|
||||||
<path
|
|
||||||
id="rect4147"
|
|
||||||
d="m 349,122.36133 0,24 -24,0 0,16 24,0 0,24 16,0 0,-24 24,0 0,-16 -24,0 0,-24 -16,0 z"
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
<g
|
|
||||||
id="g4204">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="path4158"
|
|
||||||
cx="478"
|
|
||||||
cy="174.3622"
|
|
||||||
r="10" />
|
|
||||||
<circle
|
|
||||||
r="10"
|
|
||||||
cy="132.3622"
|
|
||||||
cx="478"
|
|
||||||
id="circle4164"
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4166"
|
|
||||||
cx="458"
|
|
||||||
cy="153.8622"
|
|
||||||
r="10" />
|
|
||||||
<circle
|
|
||||||
r="10"
|
|
||||||
cy="153.8622"
|
|
||||||
cx="498"
|
|
||||||
id="circle4168"
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 281.78571,250.21935 13.75,-106.07143 L 390,205.75506 321.96429,272.18363 Z"
|
|
||||||
id="path4187"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
clip-path="url(#clipPath4282)" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path4159"
|
|
||||||
d="m 534.00781,141.36914 -49.24023,8.68164 0.4082,2.31055 -190.17578,0 0,75 171.45703,0 44.16406,44.16211 0.19141,0.19336 0.01,-0.008 a 25,25 0 0 0 22.00976,6.94922 25,25 0 0 0 20.2793,-28.96093 L 534.01,141.36896 l -0.002,0 z"
|
|
||||||
style="opacity:1;fill:#689f38;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;"
|
|
||||||
clip-path="url(#clipPath4278)" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path4161"
|
|
||||||
d="m 355,92.361328 c -29.48242,0 -53.85001,21.058592 -58.98633,49.011722 l -0.0234,-0.004 -19.10156,108.32813 a 25,25 0 0 0 20.2793,28.96093 25,25 0 0 0 22.00976,-6.94922 l 0.008,0.008 0.1914,-0.19336 59.16407,-59.16211 96.45898,0 c 33.24,0 60,-26.76 60,-60 0,-33.24 -26.76,-60.000002 -60,-60.000002 l -120,0 z"
|
|
||||||
style="opacity:1;fill:#8bc34a;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4067)"
|
|
||||||
clip-path="url(#clipPath4274)" />
|
|
||||||
<g
|
|
||||||
id="g4163"
|
|
||||||
style="filter:url(#filter4067)"
|
|
||||||
clip-path="url(#clipPath4270)">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 349,122.36133 0,24 -24,0 0,16 24,0 0,24 16,0 0,-24 24,0 0,-16 -24,0 0,-24 -16,0 z"
|
|
||||||
id="path4165" />
|
|
||||||
<g
|
|
||||||
id="g4167">
|
|
||||||
<circle
|
|
||||||
r="10"
|
|
||||||
cy="174.3622"
|
|
||||||
cx="478"
|
|
||||||
id="circle4169"
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4171"
|
|
||||||
cx="478"
|
|
||||||
cy="132.3622"
|
|
||||||
r="10" />
|
|
||||||
<circle
|
|
||||||
r="10"
|
|
||||||
cy="153.8622"
|
|
||||||
cx="458"
|
|
||||||
id="circle4173"
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4175"
|
|
||||||
cx="498"
|
|
||||||
cy="153.8622"
|
|
||||||
r="10" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path4177"
|
|
||||||
d="m 281.78571,250.21935 13.75,-106.07143 L 390,205.75506 321.96429,272.18363 Z"
|
|
||||||
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath4266)" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 16 KiB |
|
@ -1,275 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="256"
|
|
||||||
height="256"
|
|
||||||
viewBox="0 0 256 256"
|
|
||||||
id="svg3059"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.91 r13725"
|
|
||||||
sodipodi:docname="ic_microg_settings.svg"
|
|
||||||
inkscape:export-filename="/home/marvin/Development/IDEA/microg_gradle_build_root/play-services-core/src/main/res/mipmap-mdpi/ic_microg_settings.png"
|
|
||||||
inkscape:export-xdpi="16.879999"
|
|
||||||
inkscape:export-ydpi="16.879999">
|
|
||||||
<metadata
|
|
||||||
id="metadata3069">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs3067">
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient3847">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#6a8592;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop3853" />
|
|
||||||
<stop
|
|
||||||
id="stop3851"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#627f8d;stop-opacity:1;" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient3847"
|
|
||||||
id="linearGradient3845"
|
|
||||||
x1="11.978406"
|
|
||||||
y1="2.0046263"
|
|
||||||
x2="11.978406"
|
|
||||||
y2="21.906435"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="scale(10.666667,10.666667)" />
|
|
||||||
<filter
|
|
||||||
style="color-interpolation-filters:sRGB;"
|
|
||||||
inkscape:label="Drop Shadow"
|
|
||||||
id="filter4067"
|
|
||||||
x="-0.5"
|
|
||||||
y="-0.5"
|
|
||||||
width="2"
|
|
||||||
height="2">
|
|
||||||
<feFlood
|
|
||||||
flood-opacity="1"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
id="feFlood4069" />
|
|
||||||
<feComposite
|
|
||||||
in="flood"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="in"
|
|
||||||
result="composite1"
|
|
||||||
id="feComposite4071" />
|
|
||||||
<feGaussianBlur
|
|
||||||
in="composite"
|
|
||||||
stdDeviation="6"
|
|
||||||
result="blur"
|
|
||||||
id="feGaussianBlur4073" />
|
|
||||||
<feComponentTransfer
|
|
||||||
id="feComponentTransfer13">
|
|
||||||
<feFuncA
|
|
||||||
type="linear"
|
|
||||||
slope="0.2"
|
|
||||||
id="feFuncA15" />
|
|
||||||
</feComponentTransfer>
|
|
||||||
<feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="6"
|
|
||||||
result="offset"
|
|
||||||
id="feOffset4075"
|
|
||||||
stdDeviation="8" />
|
|
||||||
<feComposite
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="offset"
|
|
||||||
operator="over"
|
|
||||||
result="composite2"
|
|
||||||
id="feComposite4077" />
|
|
||||||
</filter>
|
|
||||||
<filter
|
|
||||||
inkscape:label="Edge Tint/Shade"
|
|
||||||
inkscape:menu="Shadows and Glows"
|
|
||||||
inkscape:menu-tooltip="Adds a colorizable drop shadow inside"
|
|
||||||
color-interpolation-filters="sRGB"
|
|
||||||
id="filter4119">
|
|
||||||
<feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="5"
|
|
||||||
result="result11"
|
|
||||||
id="feOffset4123"
|
|
||||||
in="SourceGraphic" />
|
|
||||||
<feComposite
|
|
||||||
id="feComposite4151"
|
|
||||||
operator="in"
|
|
||||||
in="SourceGraphic"
|
|
||||||
result="result6"
|
|
||||||
in2="result11" />
|
|
||||||
<feFlood
|
|
||||||
id="feFlood4153"
|
|
||||||
flood-color="rgb(255,255,255)"
|
|
||||||
flood-opacity="0.20000000000000001"
|
|
||||||
result="result10" />
|
|
||||||
<feBlend
|
|
||||||
id="feBlend4157"
|
|
||||||
mode="normal"
|
|
||||||
in="result6"
|
|
||||||
result="result13"
|
|
||||||
in2="result10" />
|
|
||||||
<feComposite
|
|
||||||
id="feComposite4159"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="in"
|
|
||||||
result="result2" />
|
|
||||||
<feBlend
|
|
||||||
result="result12"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
mode="normal"
|
|
||||||
id="feBlend4161"
|
|
||||||
blend="normal" />
|
|
||||||
<feOffset
|
|
||||||
id="feOffset4149"
|
|
||||||
result="result11"
|
|
||||||
dy="-5"
|
|
||||||
dx="0"
|
|
||||||
in="SourceGraphic" />
|
|
||||||
<feComposite
|
|
||||||
result="result6"
|
|
||||||
in="result12"
|
|
||||||
operator="in"
|
|
||||||
in2="result11"
|
|
||||||
id="feComposite4125" />
|
|
||||||
<feFlood
|
|
||||||
result="result10"
|
|
||||||
in="result6"
|
|
||||||
flood-opacity="0.20000000000000001"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
id="feFlood4127" />
|
|
||||||
<feBlend
|
|
||||||
mode="normal"
|
|
||||||
in2="result10"
|
|
||||||
id="feBlend4129"
|
|
||||||
in="result6" />
|
|
||||||
<feComposite
|
|
||||||
result="result2"
|
|
||||||
operator="in"
|
|
||||||
in2="result12"
|
|
||||||
id="feComposite4131" />
|
|
||||||
<feBlend
|
|
||||||
blend="normal"
|
|
||||||
id="feBlend4133"
|
|
||||||
in="result2"
|
|
||||||
mode="normal"
|
|
||||||
in2="result12"
|
|
||||||
result="result12" />
|
|
||||||
</filter>
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1016"
|
|
||||||
id="namedview3065"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="2"
|
|
||||||
inkscape:cx="143.89356"
|
|
||||||
inkscape:cy="79.9122"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg3059" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="csccccccccssccccccccsccccccccsscccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="fill:url(#linearGradient3845);fill-opacity:1;filter:url(#filter4067)"
|
|
||||||
id="path3085"
|
|
||||||
d="M 207.25333,138.45333 C 207.68,135.04 208,131.62667 208,128 c 0,-3.62667 -0.32,-7.04 -0.74667,-10.45333 L 229.76,99.946667 c 2.02667,-1.6 2.56,-4.48 1.28,-6.826667 L 209.70667,56.213333 c -1.28,-2.346666 -4.16,-3.2 -6.50667,-2.346666 L 176.64,64.533333 C 171.09333,60.266667 165.12,56.746667 158.61333,54.08 L 154.56,25.813333 c -0.32,-2.56 -2.56,-4.48 -5.22667,-4.48 l -42.66666,0 c -2.66667,0 -4.90667,1.92 -5.22667,4.48 L 97.386667,54.08 C 90.88,56.746667 84.906667,60.373333 79.36,64.533333 L 52.8,53.866667 c -2.453333,-0.96 -5.226667,0 -6.506667,2.346666 L 24.96,93.12 c -1.386667,2.346667 -0.746667,5.226667 1.28,6.826667 L 48.746667,117.54667 C 48.32,120.96 48,124.48 48,128 c 0,3.52 0.32,7.04 0.746667,10.45333 l -22.506667,17.6 c -2.026667,1.6 -2.56,4.48 -1.28,6.82667 l 21.333333,36.90667 c 1.28,2.34666 4.16,3.2 6.506667,2.34666 l 26.56,-10.66666 c 5.546667,4.26666 11.52,7.78666 18.026667,10.45333 L 101.44,230.18667 c 0.32,2.56 2.56,4.48 5.22667,4.48 l 42.66666,0 c 2.66667,0 4.90667,-1.92 5.22667,-4.48 L 158.61333,201.92 c 6.50667,-2.66667 12.48,-6.29333 18.02667,-10.45333 l 26.56,10.66666 c 2.45333,0.96 5.22667,0 6.50667,-2.34666 L 231.04,162.88 c 1.28,-2.34667 0.74667,-5.22667 -1.28,-6.82667 z" />
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 256 V 256 H 0 z"
|
|
||||||
id="path3061"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="fill:none" />
|
|
||||||
<path
|
|
||||||
d="M 207.25333,138.45333 C 207.68,135.04 208,131.62667 208,128 c 0,-3.62667 -0.32,-7.04 -0.74667,-10.45333 L 229.76,99.946667 c 2.02667,-1.6 2.56,-4.48 1.28,-6.826667 L 209.70667,56.213333 c -1.28,-2.346666 -4.16,-3.2 -6.50667,-2.346666 L 176.64,64.533333 C 171.09333,60.266667 165.12,56.746667 158.61333,54.08 L 154.56,25.813333 c -0.32,-2.56 -2.56,-4.48 -5.22667,-4.48 l -42.66666,0 c -2.66667,0 -4.90667,1.92 -5.22667,4.48 L 97.386667,54.08 C 90.88,56.746667 84.906667,60.373333 79.36,64.533333 L 52.8,53.866667 c -2.453333,-0.96 -5.226667,0 -6.506667,2.346666 L 24.96,93.12 c -1.386667,2.346667 -0.746667,5.226667 1.28,6.826667 L 48.746667,117.54667 C 48.32,120.96 48,124.48 48,128 c 0,3.52 0.32,7.04 0.746667,10.45333 l -22.506667,17.6 c -2.026667,1.6 -2.56,4.48 -1.28,6.82667 l 21.333333,36.90667 c 1.28,2.34666 4.16,3.2 6.506667,2.34666 l 26.56,-10.66666 c 5.546667,4.26666 11.52,7.78666 18.026667,10.45333 L 101.44,230.18667 c 0.32,2.56 2.56,4.48 5.22667,4.48 l 42.66666,0 c 2.66667,0 4.90667,-1.92 5.22667,-4.48 L 158.61333,201.92 c 6.50667,-2.66667 12.48,-6.29333 18.02667,-10.45333 l 26.56,10.66666 c 2.45333,0.96 5.22667,0 6.50667,-2.34666 L 231.04,162.88 c 1.28,-2.34667 0.74667,-5.22667 -1.28,-6.82667 z"
|
|
||||||
id="path3063"
|
|
||||||
style="fill:url(#linearGradient3845);fill-opacity:1;filter:url(#filter4119)"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="csccccccccssccccccccsccccccccsscccccccc" />
|
|
||||||
<path
|
|
||||||
style="fill:#000000;fill-opacity:0.0627451"
|
|
||||||
d="m 168.08594,86.261719 -61.18164,3.882811 -21.070314,38.94043 0.929686,38.94043 69.212888,52.29102 2.63672,-18.39649 c 6.50667,-2.66667 12.48067,-6.29312 18.02734,-10.45312 l 26.5586,10.66601 c 2.45333,0.96 5.22781,9.6e-4 6.50781,-2.3457 l 21.33203,-36.90625 c 1.28,-2.34667 0.74738,-5.22813 -1.27929,-6.82813 L 207.25391,138.45312 C 207.68058,135.03979 208,131.62667 208,128 c 0,-3.62667 -0.31942,-7.0398 -0.74609,-10.45312 l 1.66601,-1.30274 z"
|
|
||||||
id="rect4273"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccccccccccccsccc" />
|
|
||||||
<g
|
|
||||||
transform="matrix(0.82891149,0,0,0.82891149,-202.06341,-173.42617)"
|
|
||||||
id="g6310"
|
|
||||||
inkscape:export-xdpi="102"
|
|
||||||
inkscape:export-ydpi="102"
|
|
||||||
style="filter:url(#filter4067)">
|
|
||||||
<path
|
|
||||||
d="m 437.1019,402.53183 a 55,55 0 0 1 -66.39087,8.74053"
|
|
||||||
sodipodi:open="true"
|
|
||||||
sodipodi:end="2.0943951"
|
|
||||||
sodipodi:start="0.78539816"
|
|
||||||
sodipodi:ry="55"
|
|
||||||
sodipodi:rx="55"
|
|
||||||
sodipodi:cy="363.64096"
|
|
||||||
sodipodi:cx="398.21103"
|
|
||||||
sodipodi:type="arc"
|
|
||||||
id="path6302"
|
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#92a6b1;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#a3ffe6;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="path6304"
|
|
||||||
sodipodi:type="arc"
|
|
||||||
sodipodi:cx="398.21103"
|
|
||||||
sodipodi:cy="363.64096"
|
|
||||||
sodipodi:rx="55"
|
|
||||||
sodipodi:ry="55"
|
|
||||||
sodipodi:start="2.0943951"
|
|
||||||
sodipodi:end="3.403392"
|
|
||||||
sodipodi:open="true"
|
|
||||||
d="M 370.71103,411.27236 A 55,55 0 0 1 345.08511,349.40592" />
|
|
||||||
<path
|
|
||||||
d="m 345.08511,349.40592 a 55,55 0 0 1 25.62592,-33.39636"
|
|
||||||
sodipodi:open="true"
|
|
||||||
sodipodi:end="4.1887902"
|
|
||||||
sodipodi:start="3.403392"
|
|
||||||
sodipodi:ry="55"
|
|
||||||
sodipodi:rx="55"
|
|
||||||
sodipodi:cy="363.64096"
|
|
||||||
sodipodi:cx="398.21103"
|
|
||||||
sodipodi:type="arc"
|
|
||||||
id="path6306"
|
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#d0dadc;stroke-width:30;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="path6308"
|
|
||||||
sodipodi:type="arc"
|
|
||||||
sodipodi:cx="398.21103"
|
|
||||||
sodipodi:cy="363.64096"
|
|
||||||
sodipodi:rx="55"
|
|
||||||
sodipodi:ry="55"
|
|
||||||
sodipodi:start="4.1887902"
|
|
||||||
sodipodi:end="5.4977871"
|
|
||||||
sodipodi:open="true"
|
|
||||||
d="m 370.71103,316.00956 a 55,55 0 0 1 66.39087,8.74053" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 11 KiB |
|
@ -62,7 +62,7 @@ def gitDirty = execResult('git', 'status', '--porcelain').size() > 0
|
||||||
def ourVersionBase = gitVersionBase.substring(0, gitVersionBase.lastIndexOf('.'))
|
def ourVersionBase = gitVersionBase.substring(0, gitVersionBase.lastIndexOf('.'))
|
||||||
def ourVersionMinor = Integer.parseInt(ourVersionBase.substring(ourVersionBase.lastIndexOf('.') + 1))
|
def ourVersionMinor = Integer.parseInt(ourVersionBase.substring(ourVersionBase.lastIndexOf('.') + 1))
|
||||||
def ourVersionCode = gmsVersionCode * 1000 + ourVersionMinor * 2 + (gitCommitCount > 0 || gitDirty ? 1 : 0)
|
def ourVersionCode = gmsVersionCode * 1000 + ourVersionMinor * 2 + (gitCommitCount > 0 || gitDirty ? 1 : 0)
|
||||||
def ourVersionName = "$ourVersionBase.$gmsVersionCode" + (gitCommitCount > 0 && !gitDirty ? "-$gitCommitCount" : "") + (gitDirty ? "-dirty" : "") + (gitCommitCount > 0 && !gitDirty ? " ($gitCommitId)" : "")
|
def ourVersionName = "$ourVersionBase.$gmsVersionCode" + "-vanced"
|
||||||
logger.lifecycle('Starting build for version {} ({})...', ourVersionName, ourVersionCode)
|
logger.lifecycle('Starting build for version {} ({})...', ourVersionName, ourVersionCode)
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
|
1
extern/RemoteDroidGuard
vendored
1
extern/RemoteDroidGuard
vendored
|
@ -1 +0,0 @@
|
||||||
Subproject commit 47073dd7a2a039593fe556af8f9f33e325febfa7
|
|
1
extern/Wearable
vendored
1
extern/Wearable
vendored
|
@ -1 +0,0 @@
|
||||||
Subproject commit 617a43e139c6470361e44015bf1964026f3107e7
|
|
|
@ -1,66 +0,0 @@
|
||||||
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
|
|
||||||
index e6da288..66684d3 100644
|
|
||||||
--- a/core/java/android/content/pm/PackageParser.java
|
|
||||||
+++ b/core/java/android/content/pm/PackageParser.java
|
|
||||||
@@ -447,10 +447,23 @@ public class PackageParser {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((flags&PackageManager.GET_SIGNATURES) != 0) {
|
|
||||||
- int N = (p.mSignatures != null) ? p.mSignatures.length : 0;
|
|
||||||
- if (N > 0) {
|
|
||||||
- pi.signatures = new Signature[N];
|
|
||||||
- System.arraycopy(p.mSignatures, 0, pi.signatures, 0, N);
|
|
||||||
+ boolean handledFakeSignature = false;
|
|
||||||
+ try {
|
|
||||||
+ if (p.requestedPermissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") && p.mAppMetaData != null
|
|
||||||
+ && p.mAppMetaData.get("fake-signature") instanceof String) {
|
|
||||||
+ pi.signatures = new Signature[] {new Signature(p.mAppMetaData.getString("fake-signature"))};
|
|
||||||
+ handledFakeSignature = true;
|
|
||||||
+ }
|
|
||||||
+ } catch (Throwable t) {
|
|
||||||
+ // We should never die because of any failures, this is system code!
|
|
||||||
+ Log.w("PackageParser.FAKE_PACKAGE_SIGNATURE", t);
|
|
||||||
+ }
|
|
||||||
+ if (!handledFakeSignature) {
|
|
||||||
+ int N = (p.mSignatures != null) ? p.mSignatures.length : 0;
|
|
||||||
+ if (N > 0) {
|
|
||||||
+ pi.signatures = new Signature[N];
|
|
||||||
+ System.arraycopy(p.mSignatures, 0, pi.signatures, 0, N);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pi;
|
|
||||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
|
||||||
index 558a475..4e7aa65 100644
|
|
||||||
--- a/core/res/AndroidManifest.xml
|
|
||||||
+++ b/core/res/AndroidManifest.xml
|
|
||||||
@@ -1562,6 +1562,13 @@
|
|
||||||
android:label="@string/permlab_getPackageSize"
|
|
||||||
android:description="@string/permdesc_getPackageSize" />
|
|
||||||
|
|
||||||
+ <!-- Allows an application to change the package signature as seen by applications -->
|
|
||||||
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
|
|
||||||
+ android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
|
|
||||||
+ android:protectionLevel="dangerous"
|
|
||||||
+ android:label="@string/permlab_fakePackageSignature"
|
|
||||||
+ android:description="@string/permdesc_fakePackageSignature" />
|
|
||||||
+
|
|
||||||
<!-- @deprecated No longer useful, see
|
|
||||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
|
||||||
for details. -->
|
|
||||||
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
|
||||||
index 790e166..8e66470 100644
|
|
||||||
--- a/core/res/res/values/strings.xml
|
|
||||||
+++ b/core/res/res/values/strings.xml
|
|
||||||
@@ -1135,6 +1135,11 @@
|
|
||||||
<string name="permdesc_getPackageSize">Allows the app to retrieve its code, data, and cache sizes</string>
|
|
||||||
|
|
||||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permlab_fakePackageSignature">mimic package signature</string>
|
|
||||||
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permdesc_fakePackageSignature">Allows the app to use mimic another app\'s package signature.</string>
|
|
||||||
+
|
|
||||||
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permlab_installPackages">directly install apps</string>
|
|
||||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permdesc_installPackages">Allows the app to install new or updated
|
|
|
@ -1,104 +0,0 @@
|
||||||
From 7357f8c0c8a6bdc09555ab47dae83f28346b8470 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Beno=C3=AEt=20Mauduit?= <bmauduit@beneth.fr>
|
|
||||||
Date: Wed, 22 Jun 2016 15:04:56 +0200
|
|
||||||
Subject: [PATCH 1/1] Add signature Spoofing permission
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
This is needed by GmsCore (https://microg.org/) to pretend
|
|
||||||
the existence of the official Play Services to applications calling
|
|
||||||
Google APIs.
|
|
||||||
|
|
||||||
Signed-off-by: Benoît Mauduit <bmauduit@beneth.fr>
|
|
||||||
---
|
|
||||||
core/res/AndroidManifest.xml | 7 +++++++
|
|
||||||
core/res/res/values/config.xml | 2 ++
|
|
||||||
core/res/res/values/strings.xml | 5 +++++
|
|
||||||
.../android/server/pm/PackageManagerService.java | 23 ++++++++++++++++++++--
|
|
||||||
4 files changed, 35 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
|
||||||
index ea0e39c..a936983 100644
|
|
||||||
--- a/core/res/AndroidManifest.xml
|
|
||||||
+++ b/core/res/AndroidManifest.xml
|
|
||||||
@@ -1654,6 +1654,13 @@
|
|
||||||
android:description="@string/permdesc_getPackageSize"
|
|
||||||
android:protectionLevel="normal" />
|
|
||||||
|
|
||||||
+ <!-- @hide Allows an application to change the package signature as
|
|
||||||
+ seen by applications -->
|
|
||||||
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
|
|
||||||
+ android:protectionLevel="dangerous"
|
|
||||||
+ android:label="@string/permlab_fakePackageSignature"
|
|
||||||
+ android:description="@string/permdesc_fakePackageSignature" />
|
|
||||||
+
|
|
||||||
<!-- @deprecated No longer useful, see
|
|
||||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
|
||||||
for details. -->
|
|
||||||
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
|
||||||
index c7846cf..916d8a5 100644
|
|
||||||
--- a/core/res/res/values/config.xml
|
|
||||||
+++ b/core/res/res/values/config.xml
|
|
||||||
@@ -1298,6 +1298,8 @@
|
|
||||||
<string-array name="config_locationProviderPackageNames" translatable="false">
|
|
||||||
<!-- The standard AOSP fused location provider -->
|
|
||||||
<item>com.android.location.fused</item>
|
|
||||||
+ <!-- The (faked) microg fused location provider -->
|
|
||||||
+ <item>com.google.android.gms</item>
|
|
||||||
</string-array>
|
|
||||||
|
|
||||||
<!-- This string array can be overriden to enable test location providers initially. -->
|
|
||||||
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
|
||||||
index 58135db..e65367a 100644
|
|
||||||
--- a/core/res/res/values/strings.xml
|
|
||||||
+++ b/core/res/res/values/strings.xml
|
|
||||||
@@ -616,6 +616,11 @@
|
|
||||||
<!-- Permissions -->
|
|
||||||
|
|
||||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
|
|
||||||
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Grant this permission with caution only!</string>
|
|
||||||
+
|
|
||||||
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permlab_statusBar">disable or modify status bar</string>
|
|
||||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permdesc_statusBar">Allows the app to disable the status bar or add and remove system icons.</string>
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
index 0493180..35f49d7 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
@@ -2816,8 +2816,27 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|
||||||
final Set<String> permissions = permissionsState.getPermissions(userId);
|
|
||||||
final PackageUserState state = ps.readUserState(userId);
|
|
||||||
|
|
||||||
- return PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
|
|
||||||
+ return mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
|
|
||||||
+ permissions);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
|
|
||||||
+ Set<String> permissions) {
|
|
||||||
+ try {
|
|
||||||
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
|
|
||||||
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
|
|
||||||
+ && p.mAppMetaData != null) {
|
|
||||||
+ String sig = p.mAppMetaData.getString("fake-signature");
|
|
||||||
+ if (sig != null) {
|
|
||||||
+ pi.signatures = new Signature[] {new Signature(sig)};
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } catch (Throwable t) {
|
|
||||||
+ // We should never die because of any failures, this is system code!
|
|
||||||
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
|
|
||||||
+ }
|
|
||||||
+ return pi;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
--
|
|
||||||
2.8.1
|
|
||||||
|
|
|
@ -1,104 +0,0 @@
|
||||||
From 7357f8c0c8a6bdc09555ab47dae83f28346b8470 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Beno=C3=AEt=20Mauduit?= <bmauduit@beneth.fr>
|
|
||||||
Date: Wed, 22 Jun 2016 15:04:56 +0200
|
|
||||||
Subject: [PATCH 1/1] Add signature Spoofing permission
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
This is needed by GmsCore (https://microg.org/) to pretend
|
|
||||||
the existence of the official Play Services to applications calling
|
|
||||||
Google APIs.
|
|
||||||
|
|
||||||
Signed-off-by: Benoît Mauduit <bmauduit@beneth.fr>
|
|
||||||
---
|
|
||||||
core/res/AndroidManifest.xml | 7 +++++++
|
|
||||||
core/res/res/values/config.xml | 2 ++
|
|
||||||
core/res/res/values/strings.xml | 5 +++++
|
|
||||||
.../android/server/pm/PackageManagerService.java | 23 ++++++++++++++++++++--
|
|
||||||
4 files changed, 35 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
|
||||||
index ea0e39c..a936983 100644
|
|
||||||
--- a/core/res/AndroidManifest.xml
|
|
||||||
+++ b/core/res/AndroidManifest.xml
|
|
||||||
@@ -1654,6 +1654,13 @@
|
|
||||||
android:description="@string/permdesc_getPackageSize"
|
|
||||||
android:protectionLevel="normal" />
|
|
||||||
|
|
||||||
+ <!-- @hide Allows an application to change the package signature as
|
|
||||||
+ seen by applications -->
|
|
||||||
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
|
|
||||||
+ android:protectionLevel="dangerous"
|
|
||||||
+ android:label="@string/permlab_fakePackageSignature"
|
|
||||||
+ android:description="@string/permdesc_fakePackageSignature" />
|
|
||||||
+
|
|
||||||
<!-- @deprecated No longer useful, see
|
|
||||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
|
||||||
for details. -->
|
|
||||||
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
|
||||||
index c7846cf..916d8a5 100644
|
|
||||||
--- a/core/res/res/values/config.xml
|
|
||||||
+++ b/core/res/res/values/config.xml
|
|
||||||
@@ -1298,6 +1298,8 @@
|
|
||||||
<string-array name="config_locationProviderPackageNames" translatable="false">
|
|
||||||
<!-- The standard AOSP fused location provider -->
|
|
||||||
<item>com.android.location.fused</item>
|
|
||||||
+ <!-- The (faked) microg fused location provider -->
|
|
||||||
+ <item>com.google.android.gms</item>
|
|
||||||
</string-array>
|
|
||||||
|
|
||||||
<!-- This string array can be overriden to enable test location providers initially. -->
|
|
||||||
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
|
||||||
index 58135db..e65367a 100644
|
|
||||||
--- a/core/res/res/values/strings.xml
|
|
||||||
+++ b/core/res/res/values/strings.xml
|
|
||||||
@@ -616,6 +616,11 @@
|
|
||||||
<!-- Permissions -->
|
|
||||||
|
|
||||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
|
|
||||||
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Grant this permission with caution only!</string>
|
|
||||||
+
|
|
||||||
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permlab_statusBar">disable or modify status bar</string>
|
|
||||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permdesc_statusBar">Allows the app to disable the status bar or add and remove system icons.</string>
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
index 0493180..35f49d7 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
@@ -3067,8 +3067,27 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|
||||||
? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
|
|
||||||
final PackageUserState state = ps.readUserState(userId);
|
|
||||||
|
|
||||||
- return PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
|
|
||||||
+ return mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
|
|
||||||
+ permissions);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
|
|
||||||
+ Set<String> permissions) {
|
|
||||||
+ try {
|
|
||||||
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
|
|
||||||
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
|
|
||||||
+ && p.mAppMetaData != null) {
|
|
||||||
+ String sig = p.mAppMetaData.getString("fake-signature");
|
|
||||||
+ if (sig != null) {
|
|
||||||
+ pi.signatures = new Signature[] {new Signature(sig)};
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } catch (Throwable t) {
|
|
||||||
+ // We should never die because of any failures, this is system code!
|
|
||||||
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
|
|
||||||
+ }
|
|
||||||
+ return pi;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
--
|
|
||||||
2.8.1
|
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
commit 4e9d677b35b9656c22c922c9abca4107ab95c9b4
|
|
||||||
Author: Bernhard Rosenkränzer <bero@lindev.ch>
|
|
||||||
Date: Tue Aug 29 00:34:27 2017 +0200
|
|
||||||
|
|
||||||
Add permission to allow an APK to fake a signature.
|
|
||||||
|
|
||||||
This is needed by GmsCore (https://microg.org/) to pretend
|
|
||||||
the existence of the official Play Services to applications calling
|
|
||||||
Google APIs.
|
|
||||||
|
|
||||||
Forward-ported from https://github.com/microg/android_packages_apps_GmsCore/blob/master/patches/android_frameworks_base-N.patch
|
|
||||||
|
|
||||||
Change-Id: I603fd09200432f7e1bf997072188cdfa6da1594f
|
|
||||||
Signed-off-by: Bernhard Rosenkränzer <bero@lindev.ch>
|
|
||||||
|
|
||||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
|
||||||
index 794d4f8b78b..b3189077256 100644
|
|
||||||
--- a/core/res/AndroidManifest.xml
|
|
||||||
+++ b/core/res/AndroidManifest.xml
|
|
||||||
@@ -2075,6 +2075,13 @@
|
|
||||||
android:description="@string/permdesc_getPackageSize"
|
|
||||||
android:protectionLevel="normal" />
|
|
||||||
|
|
||||||
+ <!-- @hide Allows an application to change the package signature as
|
|
||||||
+ seen by applications -->
|
|
||||||
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
|
|
||||||
+ android:protectionLevel="dangerous"
|
|
||||||
+ android:label="@string/permlab_fakePackageSignature"
|
|
||||||
+ android:description="@string/permdesc_fakePackageSignature" />
|
|
||||||
+
|
|
||||||
<!-- @deprecated No longer useful, see
|
|
||||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
|
||||||
for details. -->
|
|
||||||
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
|
||||||
index 3613acf44aa..d1636c862c5 100644
|
|
||||||
--- a/core/res/res/values/config.xml
|
|
||||||
+++ b/core/res/res/values/config.xml
|
|
||||||
@@ -1385,6 +1385,8 @@
|
|
||||||
<string-array name="config_locationProviderPackageNames" translatable="false">
|
|
||||||
<!-- The standard AOSP fused location provider -->
|
|
||||||
<item>com.android.location.fused</item>
|
|
||||||
+ <!-- The (faked) microg fused location provider (a free reimplementation) -->
|
|
||||||
+ <item>com.google.android.gms</item>
|
|
||||||
</string-array>
|
|
||||||
|
|
||||||
<!-- This string array can be overriden to enable test location providers initially. -->
|
|
||||||
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
|
||||||
index 3eebe7eb68d..7405386cd49 100644
|
|
||||||
--- a/core/res/res/values/strings.xml
|
|
||||||
+++ b/core/res/res/values/strings.xml
|
|
||||||
@@ -764,6 +764,10 @@
|
|
||||||
|
|
||||||
<!-- Permissions -->
|
|
||||||
|
|
||||||
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
|
|
||||||
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Legitimate uses include an emulator pretending to be what it emulates. Grant this permission with caution only!</string>
|
|
||||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permlab_statusBar">disable or modify status bar</string>
|
|
||||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
index f36b762c5e9..048a057d39c 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
@@ -3571,8 +3571,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
|
||||||
flags |= MATCH_ANY_USER;
|
|
||||||
}
|
|
||||||
|
|
||||||
- PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
|
|
||||||
+ PackageInfo packageInfo = mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
|
|
||||||
+ permissions);
|
|
||||||
|
|
||||||
if (packageInfo == null) {
|
|
||||||
return null;
|
|
||||||
@@ -3584,6 +3585,24 @@ public class PackageManagerService extends IPackageManager.Stub
|
|
||||||
return packageInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
|
|
||||||
+ Set<String> permissions) {
|
|
||||||
+ try {
|
|
||||||
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
|
|
||||||
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
|
|
||||||
+ && p.mAppMetaData != null) {
|
|
||||||
+ String sig = p.mAppMetaData.getString("fake-signature");
|
|
||||||
+ if (sig != null) {
|
|
||||||
+ pi.signatures = new Signature[] {new Signature(sig)};
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } catch (Throwable t) {
|
|
||||||
+ // We should never die because of any failures, this is system code!
|
|
||||||
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
|
|
||||||
+ }
|
|
||||||
+ return pi;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public void checkPackageStartable(String packageName, int userId) {
|
|
||||||
final int callingUid = Binder.getCallingUid();
|
|
|
@ -1,88 +0,0 @@
|
||||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
|
||||||
index 66c497e9977..c1b2e703109 100644
|
|
||||||
--- a/core/res/AndroidManifest.xml
|
|
||||||
+++ b/core/res/AndroidManifest.xml
|
|
||||||
@@ -2341,6 +2341,13 @@
|
|
||||||
android:description="@string/permdesc_getPackageSize"
|
|
||||||
android:protectionLevel="normal" />
|
|
||||||
|
|
||||||
+ <!-- @hide Allows an application to change the package signature as
|
|
||||||
+ seen by applications -->
|
|
||||||
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
|
|
||||||
+ android:protectionLevel="dangerous"
|
|
||||||
+ android:label="@string/permlab_fakePackageSignature"
|
|
||||||
+ android:description="@string/permdesc_fakePackageSignature" />
|
|
||||||
+
|
|
||||||
<!-- @deprecated No longer useful, see
|
|
||||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
|
||||||
for details. -->
|
|
||||||
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
|
||||||
index 0b5dd7e70e8..bbdba64f2ba 100644
|
|
||||||
--- a/core/res/res/values/config.xml
|
|
||||||
+++ b/core/res/res/values/config.xml
|
|
||||||
@@ -1650,6 +1650,8 @@
|
|
||||||
<string-array name="config_locationProviderPackageNames" translatable="false">
|
|
||||||
<!-- The standard AOSP fused location provider -->
|
|
||||||
<item>com.android.location.fused</item>
|
|
||||||
+ <!-- The (faked) microg fused location provider (a free reimplementation) -->
|
|
||||||
+ <item>com.google.android.gms</item>
|
|
||||||
</string-array>
|
|
||||||
|
|
||||||
<!-- This string array can be overriden to enable test location providers initially. -->
|
|
||||||
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
|
||||||
index 3c5159c89bf..7583f1c567f 100644
|
|
||||||
--- a/core/res/res/values/strings.xml
|
|
||||||
+++ b/core/res/res/values/strings.xml
|
|
||||||
@@ -786,6 +786,11 @@
|
|
||||||
<!-- Permissions -->
|
|
||||||
|
|
||||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
|
|
||||||
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Legitimate uses include an emulator pretending to be what it emulates. Grant this permission with caution only!</string>
|
|
||||||
+
|
|
||||||
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permlab_statusBar">disable or modify status bar</string>
|
|
||||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
|
||||||
<string name="permdesc_statusBar">Allows the app to disable the status bar or add and remove system icons.</string>
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
index 9ed2b9c1854..4c5ce24cfa7 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
@@ -3937,8 +3937,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
|
||||||
final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions)
|
|
||||||
? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
|
|
||||||
|
|
||||||
- PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
|
|
||||||
+ PackageInfo packageInfo = mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
|
|
||||||
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
|
|
||||||
+ permissions);
|
|
||||||
|
|
||||||
if (packageInfo == null) {
|
|
||||||
return null;
|
|
||||||
@@ -3974,6 +3975,24 @@ public class PackageManagerService extends IPackageManager.Stub
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
|
|
||||||
+ Set<String> permissions) {
|
|
||||||
+ try {
|
|
||||||
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
|
|
||||||
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
|
|
||||||
+ && p.mAppMetaData != null) {
|
|
||||||
+ String sig = p.mAppMetaData.getString("fake-signature");
|
|
||||||
+ if (sig != null) {
|
|
||||||
+ pi.signatures = new Signature[] {new Signature(sig)};
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } catch (Throwable t) {
|
|
||||||
+ // We should never die because of any failures, this is system code!
|
|
||||||
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
|
|
||||||
+ }
|
|
||||||
+ return pi;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public void checkPackageStartable(String packageName, int userId) {
|
|
||||||
final int callingUid = Binder.getCallingUid();
|
|
Loading…
Reference in a new issue