Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
507 views
in Technique[技术] by (71.8m points)

android - Removing AOSP apps from build

First, I'm trying to build an Android platform from the Android source code without stock apps like LiveWallpapers, Calendar, Contacts, Calculator, Phone, Settings, etc.

In order to do it, I'm modifying make files in /build/target/product/, specifically the variable PRODUCT_PACKAGES which contains all apps and libs that need to be built.

For example, I deleted the following lines:

DeskClock 
Bluetooth 
Calculator 
Calendar 

From PRODUCT_PACKAGES := in the file generic_no_telephony.mk.

However, when I run my tablet after flashing, I still find apps like Email, Sound & Speech Recorder, etc. I've already cleaned before rebuilding. Do I need to delete more entries in other make files?

Here you can see all the modifications I've made on make files in build/target/product/:

diff --git a/target/product/core.mk b/target/product/core.mk
index 1d62eb8..5474f6a 100644
--- a/target/product/core.mk
+++ b/target/product/core.mk
@@ -25,23 +25,13 @@ PRODUCT_PROPERTY_OVERRIDES := 
 PRODUCT_PACKAGES += 
     ApplicationsProvider 
     BackupRestoreConfirmation 
-    BasicDreams 
     Browser 
-    Contacts 
-    ContactsProvider 
     DefaultContainerService 
-    DownloadProvider 
-    DownloadProviderUi 
-    HTMLViewer 
     Home 
     KeyChain 
-    MediaProvider 
     PackageInstaller 
-    PicoTts 
     SettingsProvider 
     SharedStorageBackup 
-    TelephonyProvider 
-    UserDictionaryProvider 
     VpnDialogs 
     abcc 
     apache-xml 
diff --git a/target/product/full_base.mk b/target/product/full_base.mk
index b2e3189..94d6d48 100644
--- a/target/product/full_base.mk
+++ b/target/product/full_base.mk
@@ -21,24 +21,10 @@

 PRODUCT_PACKAGES := 
     libfwdlockengine 
-    OpenWnn 
-    PinyinIME 
     libWnnEngDic 
     libWnnJpnDic 
     libwnndict 
-    VideoEditor 
-    WAPPushManager
-
-PRODUCT_PACKAGES += 
-    Galaxy4 
-    HoloSpiralWallpaper 
-    LiveWallpapers 
-    LiveWallpapersPicker 
-    MagicSmokeWallpapers 
-    NoiseField 
-    PhaseBeam 
-    VisualizationWallpapers 
-    PhotoTable
+

 # Additional settings used in all AOSP builds
 PRODUCT_PROPERTY_OVERRIDES := 
diff --git a/target/product/full_base_telephony.mk b/target/product       /full_base_telephony.mk
index 5899c8c..8c8c7c3 100644
--- a/target/product/full_base_telephony.mk
+++ b/target/product/full_base_telephony.mk
@@ -19,9 +19,6 @@
 # build quite specifically for the emulator, and might not be
 # entirely appropriate to inherit from for on-device configurations.

-PRODUCT_PACKAGES := 
-    VoiceDialer
-
 PRODUCT_PROPERTY_OVERRIDES := 
     keyguard.no_require_sim=true 
     ro.com.android.dataroaming=true
diff --git a/target/product/generic_no_telephony.mk b/target/product/generic_no_telephony.mk
index f139cbd..5f544b2 100644
--- a/target/product/generic_no_telephony.mk
+++ b/target/product/generic_no_telephony.mk
@@ -20,27 +20,16 @@
 PRODUCT_POLICY := android.policy_phone

 PRODUCT_PACKAGES := 
-    DeskClock 
     Bluetooth 
-    Calculator 
-    Calendar 
     CertInstaller 
     DrmProvider 
-    Email2 
-    Exchange2 
     FusedLocation 
-    Gallery2 
     InputDevices 
     LatinIME 
     Launcher2 
-    Music 
-    MusicFX 
     Provision 
-    Phone 
-    QuickSearchBox 
     Settings 
     SystemUI 
-    CalendarProvider 
     bluetooth-health 
     hostapd 
     wpa_supplicant.conf
diff --git a/target/product/large_emu_hw.mk b/target/product/large_emu_hw.mk
index 27ebc96..54c53ca 100644
--- a/target/product/large_emu_hw.mk
+++ b/target/product/large_emu_hw.mk
@@ -20,25 +20,14 @@
 PRODUCT_POLICY := android.policy_mid

 PRODUCT_PACKAGES := 
-    CarHome 
-    DeskClock 
     Bluetooth 
-    Calculator 
-    Calendar 
     CertInstaller 
     DrmProvider 
-    Email2 
-    Exchange2 
-    Gallery2 
-    LatinIME 
     Launcher2 
-    Music 
     Provision 
-    QuickSearchBox 
     Settings 
     Sync 
     Updater 
-    CalendarProvider 
     SyncProvider 
     bluetooth-health 
     hostapd 
diff --git a/target/product/mini.mk b/target/product/mini.mk
index b69c917..9486c50 100644
--- a/target/product/mini.mk
+++ b/target/product/mini.mk
@@ -54,15 +54,11 @@ PRODUCT_PROPERTY_OVERRIDES += 
 # Please keep this list sorted alphabetically
 PRODUCT_PACKAGES += 
     ApplicationsProvider 
-    ContactsProvider 
     DefaultContainerService 
     DownloadProvider 
     DownloadProviderUi 
-    MediaProvider 
     PackageInstaller 
     SettingsProvider 
-    TelephonyProvider 
-    UserDictionaryProvider 
     abcc 
     apache-xml 
     audio 
@@ -161,8 +157,6 @@ PRODUCT_PACKAGES += 
     Bluetooth 
     FusedLocation 
     InputDevices 
-    LatinIME 
-    Phone 
     Provision 
     hostapd 
     wpa_supplicant.conf
diff --git a/target/product/sdk.mk b/target/product/sdk.mk
index 1edff57..294b9d8 100644
--- a/target/product/sdk.mk
+++ b/target/product/sdk.mk
@@ -18,40 +18,23 @@ PRODUCT_POLICY := android.policy_phone
 PRODUCT_PROPERTY_OVERRIDES :=

 PRODUCT_PACKAGES := 
-   Calculator 
-   DeskClock 
-   Exchange2 
    FusedLocation 
-   Gallery 
-   Music 
-   Mms 
-   OpenWnn 
    libWnnEngDic 
    libWnnJpnDic 
    libwnndict 
-   Phone 
-   PinyinIME 
    Protips 
    SoftKeyboard 
    SystemUI 
    Launcher2 
-   Development 
-   DevelopmentSettings 
-   DrmProvider 
    Fallback 
    Settings 
    SdkSetup 
    CustomLocale 
    sqlite3 
    InputDevices 
-   LatinIME 
    CertInstaller 
-   LiveWallpapersPicker 
    ApiDemos 
    GestureBuilder 
-   CubeLiveWallpapers 
-   QuickSearchBox 
-   WidgetPreview 
    monkeyrunner 
    guavalib 
    jsr305lib 
@@ -59,13 +42,7 @@ PRODUCT_PACKAGES := 
jsilver 
librs_jni 
    ConnectivityTest 
-   GpsLocationTest 
-   CalendarProvider 
-   Calendar 
-   SmokeTest 
-   SmokeTestApp 
-   rild 
-   LegacyCamera
+   rild


 # Define the host tools and libs that are parts of the SDK.
diff --git a/target/product/telephony.mk b/target/product/telephony.mk
index 89ed20a..a92ed03 100644
--- a/target/product/telephony.mk
+++ b/target/product/telephony.mk
@@ -18,7 +18,6 @@
 # to products that have telephony hardware.

 PRODUCT_PACKAGES := 
-    Mms 
     rild

 PRODUCT_COPY_FILES := 
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I think that those modules (packages) may be included by other apps, being specified in LOCAL_REQUIRED_MODULES in .mk files. I would try to figure out package names of the modules, then search through all .mk files.

Instead of modifying bunch of .mk files in AOSP in many folders, you can add a new module, a stub, and disable modules in its Android.mk using LOCAL_OVERRIDES_PACKAGES. If a module still appear in target, you'll probably need to add to LOCAL_OVERRIDES_PACKAGES another modules which added undesired packages via LOCAL_REQUIRED_MODULES.

Sorry I do not know a better way to do that.

packages/apps folder holds most of applications .mk files, but you may need to check device, vendor and hardware folders too, in general case.

ADDED: I've just discovered that envsetup.sh provides mgrep command to search in makefiles (including *.mk), so you can try this to find .mk referring DeskClock package:

build@1c1b9d217b9d:~/android/cm12.1$ mgrep DeskClock
./packages/apps/DeskClock/Android.mk:20:LOCAL_PACKAGE_NAME := DeskClock
./packages/apps/DeskClock/tests/Android.mk:12:LOCAL_PACKAGE_NAME := DeskClockTests
./packages/apps/DeskClock/tests/Android.mk:14:LOCAL_INSTRUMENTATION_FOR := DeskClock
./build/target/product/core.mk:26:    DeskClock 

So you see DeskClock is included into the build from core.mk

Though mgrep command is not mentioned in help section of envsetup.sh, it is reported by 'hmm' command (help for envsetup.sh) - I quote it here to stimulate us to learn AOSP tools deeper )):

build@1c1b9d217b9d:~/android/cm12.1$ hmm
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
- lunch:   lunch <product_name>-<build_variant>
- tapas:   tapas [<App1> <App2> ...] [arm|x86|mips|armv5|arm64|x86_64|mips64] [eng|userdebug|user]
- croot:   Changes directory to the top of the tree.
- cout:    Changes directory to out.
- m:       Makes from the top of the tree.
- mm:      Builds all of the modules in the current directory, but not their dependencies.
- mmm:     Builds all of the modules in the supplied directories, but not their dependencies.
           To limit the modules being built use the syntax: mmm dir/:target1,target2.
- mma:     Builds all of the modules in the current directory, and their dependencies.
- mmp:     Builds all of the modules in the current directory and pushes them to the device.
- mmmp:    Builds all of the modules in the supplied directories and pushes them to the device.
- mmma:    Builds all of the modules in the supplied directories, and their dependencies.
- mms:     Short circuit builder. Quickly re-build the kernel, rootfs, boot and system images
           without deep dependencies. Requires the full build to have run before.
- cgrep:   Greps on all local C/C++ files.
- ggrep:   Greps on all local Gradle files.
- jgrep:   Greps on all local Java files.
- resgrep: Greps on all local res / *.xml files.
- sgrep:   Greps on all local source files.
- godir:   Go to the directory containing a file.
- cmremote: Add git remote for CM Gerrit Review
- cmgerrit: A Git wrapper that fetches/pushes patch from/to CM Gerrit Review
- cmrebase: Rebase a Gerrit change and push it again
- aospremote: Add git remote for matching AOSP repository
- cafremote: Add git remote for matching CodeAurora repository.
- mka:      Builds using SCHED_BATCH on all processors
- mkap:     Builds the module(s) using mka and pushes them to the device.
- cmka:     Cleans and builds using mka.
- repolastsync: Prints date and time of last repo sync.
- reposync: Parallel repo sync using ionice and SCHED_BATCH
- repopick: Utility to fetch changes from Gerrit.
- installboot: Installs a boot.img to the connected device.
- installrecovery: Installs a recovery.img to the connected device.

Look at the source to view more functions. The complete list is:
mgrep                           cmka                            get_symbols_directory           lunch                           repopick
sgrep                           cmrebase                        getbugreports                   m                               reposync
treegrep                        cmremote                        getdriver                       make                            resgrep
_lunch                          core                            getlastscreenshot               makerecipe                      runhat
adb_get_product_device          coredump_enable                 getprebuilt                     mangrep                         runtest
adb_get_traced_by               coredump_setup                  getscreenshotpath               mk_timer                        sepgrep
add_lunch_combo                 cout                            getsdcardpath                   mka                             set_java_home
aospremote                      cproj                           gettargetarch                   mm                              set_sequence_number
breakfast                       croot                           gettop                          mma                             set_stuff_for_environment
brunch                          dddclient                       ggrep                           mmm                             setpaths
cafremote                       dopush                          godir                           mmma                            settitle
cgrep                           eat                             hmm                             mms                             smoketest
check_bash_version              findmakefile                    installboot                     omnom                           stacks
check_product                   fixup_common_out_dir            installrecovery                 pez                             startviewserver
check_variant                   gdbclient                       is                              pid                             stopviewserver
choosecombo                     gdbclient_old                   isviewserverstarted             print_lunch_menu                systemstack
chooseproduct                   gdbwrapper                      jgrep                           printconfig                     tapas
choosetype                      get_abs_build_var               key_back                        qpid                            tracedmdump
choosevariant                   get_build_var                   key_home                        repodiff
cmgerrit                        get_make_command                key_menu                        repolastsync

You may check implementation of mgrep in envsetup.sh to get ideas for new grep searches ))


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...