Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c72b682 authored by Adam Lesinski's avatar Adam Lesinski
Browse files

Add <feature-group> tag and change aapt badging

A <feature-group> represents a set of features required
for an app to be compatible with a device. Multiple
<feature-group> elements represent a logical 'or'
of required features.

Features defined in the old way with <uses-feature> tags
under the <manifest> tag are automatically added to each
feature-group defined.

Defining a <feature-group> means that any default
features are not included (such as android.hardware.touchscreen)
and declared permissions do not imply any features.

Change-Id: I45626f0fdc546e47bcf2aead7ef05ebcca12b023
parent 921ec805
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1530,6 +1530,11 @@ public class PackageParser {

                XmlUtils.skipCurrentTag(parser);

            } else if (tagName.equals("feature-group")) {
                // Skip this for now until we know what to do with it.

                XmlUtils.skipCurrentTag(parser);

            } else if (tagName.equals("uses-sdk")) {
                if (SDK_VERSION > 0) {
                    sa = res.obtainAttributes(attrs,
+13 −0
Original line number Diff line number Diff line
@@ -1285,6 +1285,19 @@
        <attr name="required" format="boolean" />
    </declare-styleable>

    <!-- The <code>feature-group</code> tag specifies
         a set of one or more <code>uses-feature</code> elements that
         the application can utilize. An application uses multiple
         <code>feature-group</code> sets to indicate that it can support
         different combinations of features.

         <p>This appears as a child tag of the root
         {@link #AndroidManifest manifest} tag. -->
    <declare-styleable name="AndroidManifestFeatureGroup">
        <!-- The human-readable name of the feature group. -->
        <attr name="label" />
    </declare-styleable>

    <!-- The <code>uses-sdk</code> tag describes the SDK features that the
         containing package must be running on to operate correctly.
         
+25 −0
Original line number Diff line number Diff line
#
# Copyright (C) 2014 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.
#

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := UsesFeature2Test

LOCAL_MODULE_TAGS := tests

include $(BUILD_PACKAGE)
+43 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.test.usesfeature2">

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.BLUETOOTH" />

    <uses-feature android:name="android.hardware.sensor.accelerometer" />
    <feature-group android:label="@string/minimal">
        <uses-feature android:name="android.hardware.dpad" />
        <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" />
    </feature-group>
    <feature-group android:label="@string/gamepad">
        <uses-feature android:name="android.hardware.gamepad" />
    </feature-group>

    <application android:label="@string/app_title">
        <activity android:name="ActivityMain">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
+21 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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.
-->

<resources>
    <string name="app_title">Uses Feature 2.0</string>
    <string name="minimal">Crippled experience</string>
    <string name="gamepad">Gamer experience</string>
</resources>
Loading