OSDN Git Service

Separating out configs and common manifest entries
authorSunny Goyal <sunnygoyal@google.com>
Tue, 24 May 2016 04:40:53 +0000 (21:40 -0700)
committerSunny Goyal <sunnygoyal@google.com>
Tue, 24 May 2016 21:11:24 +0000 (14:11 -0700)
This separation allows for easier modification of Launcher3
by derivative projects

Change-Id: Ib3469e9b5d2707daef572050698d792316534d45

Android.mk
AndroidManifest-common.xml [new file with mode: 0644]
AndroidManifest.xml
build.gradle
src_config/com/android/launcher3/config/FeatureFlags.java [moved from src/com/android/launcher3/config/FeatureFlags.java with 100% similarity]
src_config/com/android/launcher3/config/ProviderConfig.java [moved from src/com/android/launcher3/config/ProviderConfig.java with 100% similarity]
update_gallery_files.py [deleted file]
update_system_wallpaper_cropper.py [deleted file]

index dc43f7e..9a3b09e 100644 (file)
@@ -28,7 +28,9 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
     android-support-v7-recyclerview \
     android-support-v7-palette
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+LOCAL_SRC_FILES := \
+    $(call all-java-files-under, src) \
+    $(call all-java-files-under, src_config) \
     $(call all-proto-files-under, protos)
 
 LOCAL_RESOURCE_DIR := \
@@ -48,6 +50,8 @@ LOCAL_MIN_SDK_VERSION := 21
 LOCAL_PACKAGE_NAME := Launcher3
 LOCAL_OVERRIDES_PACKAGES := Home Launcher2
 
+LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/AndroidManifest-common.xml
+
 include $(BUILD_PACKAGE)
 
 #
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
new file mode 100644 (file)
index 0000000..3da3535
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2016, 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.launcher3">
+    <uses-sdk android:targetSdkVersion="23" android:minSdkVersion="21"/>
+
+    <!--
+    The manifest defines the common entries that should be present in any derivative of Launcher3.
+    The components should generally not require any changes.
+
+    Rest of the components are defined in AndroidManifest.xml which is merged with this manifest
+    at compile time. Note that the components defined in AndroidManifest.xml are also required,
+    with some minor changed based on the derivative app.
+    -->
+    <permission
+        android:name="com.android.launcher.permission.INSTALL_SHORTCUT"
+        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+        android:protectionLevel="dangerous"
+        android:label="@string/permlab_install_shortcut"
+        android:description="@string/permdesc_install_shortcut" />
+
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.SET_WALLPAPER" />
+    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
+    <uses-permission android:name="android.permission.BIND_APPWIDGET" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
+    <application
+        android:backupAgent="com.android.launcher3.LauncherBackupAgent"
+        android:fullBackupOnly="true"
+        android:fullBackupContent="@xml/backupscheme"
+        android:hardwareAccelerated="true"
+        android:icon="@mipmap/ic_launcher_home"
+        android:label="@string/app_name"
+        android:largeHeap="@bool/config_largeHeap"
+        android:restoreAnyVersion="true"
+        android:supportsRtl="true" >
+
+        <!-- Intent received used to install shortcuts from other applications -->
+        <receiver
+            android:name="com.android.launcher3.InstallShortcutReceiver"
+            android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
+            <intent-filter>
+                <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
+            </intent-filter>
+        </receiver>
+
+        <!-- Intent received used to initialize a restored widget -->
+        <receiver android:name="com.android.launcher3.AppWidgetsRestoredReceiver" >
+            <intent-filter>
+                <action android:name="android.appwidget.action.APPWIDGET_HOST_RESTORED"/>
+            </intent-filter>
+        </receiver>
+
+        <service android:name="com.android.launcher3.dynamicui.ColorExtractionService"
+            android:exported="false"
+            android:process=":wallpaper_chooser">
+        </service>
+
+        <meta-data android:name="android.nfc.disable_beam_default"
+                       android:value="true" />
+
+    </application>
+</manifest>
index 75b81d0..eb7ea0c 100644 (file)
     xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.launcher3">
     <uses-sdk android:targetSdkVersion="23" android:minSdkVersion="21"/>
-
-    <permission
-        android:name="com.android.launcher.permission.INSTALL_SHORTCUT"
-        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
-        android:protectionLevel="dangerous"
-        android:label="@string/permlab_install_shortcut"
-        android:description="@string/permdesc_install_shortcut" />
+    <!--
+    Manifest entries specific to Launcher3. This is merged with AndroidManifest-common.xml.
+    Refer comments around specific entries on how to extend individual components.
+    -->
+
+    <!--
+    Permissions required for read/write access to the workspace data. These permission name
+    should not conflict with that defined in other apps, as such an app should embed its package
+    name in the permissions. eq com.mypackage.permission.READ_SETTINGS
+    -->
     <permission
         android:name="com.android.launcher3.permission.READ_SETTINGS"
         android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
         android:label="@string/permlab_write_settings"
         android:description="@string/permdesc_write_settings"/>
 
-    <uses-permission android:name="android.permission.CALL_PHONE" />
-    <uses-permission android:name="android.permission.SET_WALLPAPER" />
-    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
-    <uses-permission android:name="android.permission.BIND_APPWIDGET" />
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
     <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
     <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />
     <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />
 
-    <application
-        android:backupAgent="com.android.launcher3.LauncherBackupAgent"
-        android:fullBackupOnly="true"
-        android:fullBackupContent="@xml/backupscheme"
-        android:hardwareAccelerated="true"
-        android:icon="@mipmap/ic_launcher_home"
-        android:label="@string/app_name"
-        android:largeHeap="@bool/config_largeHeap"
-        android:restoreAnyVersion="true"
-        android:supportsRtl="true" >
+    <application>
 
+        <!--
+        Main launcher activity. When extending only change the name, and keep all the
+        attributes and intent filters the same
+        -->
         <activity
             android:name="com.android.launcher3.Launcher"
             android:launchMode="singleTask"
@@ -83,6 +75,9 @@
             </intent-filter>
         </activity>
 
+        <!--
+        The settings activity. When extending keep the intent filter present
+        -->
         <activity
             android:name="com.android.launcher3.SettingsActivity"
             android:label="@string/settings_button_text"
             </intent-filter>
         </activity>
 
-        <!-- Intent received used to install shortcuts from other applications -->
-        <receiver
-            android:name="com.android.launcher3.InstallShortcutReceiver"
-            android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
-            <intent-filter>
-                <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
-            </intent-filter>
-        </receiver>
-
-        <!-- Intent received used to initialize a restored widget -->
-        <receiver android:name="com.android.launcher3.AppWidgetsRestoredReceiver" >
-            <intent-filter>
-                <action android:name="android.appwidget.action.APPWIDGET_HOST_RESTORED"/>
-            </intent-filter>
-        </receiver>
-
-        <service android:name=".dynamicui.ColorExtractionService"
-            android:exported="false"
-            android:process=":wallpaper_chooser">
-        </service>
-
-        <!-- The settings provider contains Home's data, like the workspace favorites -->
+        <!--
+        The settings provider contains Home's data, like the workspace favorites. The permissions
+        should be changed to what is defined above. The authorities should also be changed to
+        represent the package name.
+        -->
         <provider
             android:name="com.android.launcher3.LauncherProvider"
             android:authorities="com.android.launcher3.settings"
             android:writePermission="com.android.launcher3.permission.WRITE_SETTINGS"
             android:readPermission="com.android.launcher3.permission.READ_SETTINGS" />
 
-        <meta-data android:name="android.nfc.disable_beam_default"
-                       android:value="true" />
-
         <!-- ENABLE_FOR_TESTING
 
         <activity
index 2efbec4..899767f 100644 (file)
@@ -12,8 +12,8 @@ apply plugin: 'com.android.application'
 apply plugin: 'com.google.protobuf'
 
 android {
-    compileSdkVersion 23
-    buildToolsVersion "22.0.1"
+    compileSdkVersion 'android-N'
+    buildToolsVersion '24.0.0-rc3'
 
     defaultConfig {
         applicationId "com.android.launcher3"
@@ -33,7 +33,7 @@ android {
     sourceSets {
         main {
             res.srcDirs = ['res']
-            java.srcDirs = ['src']
+            java.srcDirs = ['src', 'src_config']
             manifest.srcFile 'AndroidManifest.xml'
             proto.srcDirs 'protos/'
         }
diff --git a/update_gallery_files.py b/update_gallery_files.py
deleted file mode 100644 (file)
index 738d225..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# This script is used to pull the most up-to-date files from
-# Gallery into Launcher (we use some code from the Gallery
-# source). The Launcher versions have some small modifications
-# so do this with care, and be sure you are pulling from the
-# latest version of Gallery
-import os
-import sys
-files = """
-src/android/util/Pools.java
-src/com/android/gallery3d/util/IntArray.java
-src/com/android/gallery3d/common/Utils.java
-src/com/android/gallery3d/exif/ByteBufferInputStream.java
-src/com/android/gallery3d/exif/CountedDataInputStream.java
-src/com/android/gallery3d/exif/ExifData.java
-src/com/android/gallery3d/exif/ExifInterface.java
-src/com/android/gallery3d/exif/ExifInvalidFormatException.java
-src/com/android/gallery3d/exif/ExifModifier.java
-src/com/android/gallery3d/exif/ExifOutputStream.java
-src/com/android/gallery3d/exif/ExifParser.java
-src/com/android/gallery3d/exif/ExifReader.java
-src/com/android/gallery3d/exif/ExifTag.java
-src/com/android/gallery3d/exif/IfdData.java
-src/com/android/gallery3d/exif/IfdId.java
-src/com/android/gallery3d/exif/JpegHeader.java
-src/com/android/gallery3d/exif/OrderedDataOutputStream.java
-src/com/android/gallery3d/exif/Rational.java
-src/com/android/gallery3d/glrenderer/BasicTexture.java
-src/com/android/gallery3d/glrenderer/BitmapTexture.java
-src/com/android/gallery3d/glrenderer/GLCanvas.java
-src/com/android/gallery3d/glrenderer/GLES20Canvas.java
-src/com/android/gallery3d/glrenderer/GLES20IdImpl.java
-src/com/android/gallery3d/glrenderer/GLId.java
-src/com/android/gallery3d/glrenderer/GLPaint.java
-src/com/android/gallery3d/glrenderer/RawTexture.java
-src/com/android/gallery3d/glrenderer/Texture.java
-src/com/android/gallery3d/glrenderer/UploadedTexture.java
-src/com/android/photos/BitmapRegionTileSource.java
-src/com/android/photos/views/BlockingGLTextureView.java
-src/com/android/photos/views/TiledImageRenderer.java
-src/com/android/photos/views/TiledImageView.java
-src/com/android/gallery3d/common/BitmapUtils.java
-"""
-
-if len(sys.argv) != 2:
-    print "Usage: python update_gallery_files.py <gallery_dir>"
-    exit()
-gallery_dir = sys.argv[1]
-for file_path in files.split():
-    dir = os.path.dirname(file_path)
-    if file_path.find('exif') != -1 or file_path.find('common') != -1:
-        file_path = 'gallerycommon/' + file_path
-    cmd = 'cp %s/%s WallpaperPicker/%s/' % (gallery_dir, file_path, dir)
-    print cmd
-    os.system(cmd)
diff --git a/update_system_wallpaper_cropper.py b/update_system_wallpaper_cropper.py
deleted file mode 100644 (file)
index 44cbcc9..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# This script is used to push the most up-to-date files from
-# Launcher into frameworks' version of the WallpaperCropActivity
-# (and supporting files)
-# The framework versions have some small modifications that are
-# necessary so do this with care
-import os
-import sys
-src_dir = "WallpaperPicker/src/"
-files = """
-src/android/util/Pools.java
-com/android/gallery3d/util/IntArray.java
-com/android/gallery3d/common/Utils.java
-com/android/gallery3d/exif/ByteBufferInputStream.java
-com/android/gallery3d/exif/CountedDataInputStream.java
-com/android/gallery3d/exif/ExifData.java
-com/android/gallery3d/exif/ExifInterface.java
-com/android/gallery3d/exif/ExifInvalidFormatException.java
-com/android/gallery3d/exif/ExifModifier.java
-com/android/gallery3d/exif/ExifOutputStream.java
-com/android/gallery3d/exif/ExifParser.java
-com/android/gallery3d/exif/ExifReader.java
-com/android/gallery3d/exif/ExifTag.java
-com/android/gallery3d/exif/IfdData.java
-com/android/gallery3d/exif/IfdId.java
-com/android/gallery3d/exif/JpegHeader.java
-com/android/gallery3d/exif/OrderedDataOutputStream.java
-com/android/gallery3d/exif/Rational.java
-com/android/gallery3d/glrenderer/BasicTexture.java
-com/android/gallery3d/glrenderer/BitmapTexture.java
-com/android/gallery3d/glrenderer/GLCanvas.java
-com/android/gallery3d/glrenderer/GLES20Canvas.java
-com/android/gallery3d/glrenderer/GLES20IdImpl.java
-com/android/gallery3d/glrenderer/GLId.java
-com/android/gallery3d/glrenderer/GLPaint.java
-com/android/gallery3d/glrenderer/RawTexture.java
-com/android/gallery3d/glrenderer/Texture.java
-com/android/gallery3d/glrenderer/UploadedTexture.java
-com/android/photos/BitmapRegionTileSource.java
-com/android/photos/views/BlockingGLTextureView.java
-com/android/photos/views/TiledImageRenderer.java
-com/android/photos/views/TiledImageView.java
-com/android/gallery3d/common/BitmapUtils.java
-com/android/launcher3/CropView.java
-com/android/launcher3/WallpaperCropActivity.java
-"""
-
-if len(sys.argv) != 2:
-    print "Usage: python update_sytem_wallpaper_cropper.py <framework_dir>"
-    exit()
-framework_dir = sys.argv[1] + "/packages/WallpaperCropper"
-for file_path in files.split():
-    file_path = src_dir + file_path
-    dir = os.path.dirname(file_path)
-    dir = dir.replace("launcher3", "wallpapercropper")
-    dir = dir.replace(src_dir, "src/")
-    cmd = 'cp %s %s/%s' % (file_path, framework_dir, dir)
-    print cmd
-    os.system(cmd)