从构建中删除AOSP应用程序

14

首先,我正在尝试从Android源代码构建一个不包含LiveWallpapers、Calendar、Contacts、Calculator、Phone、Settings等预装应用的Android平台。

为了实现这一点,我正在修改/build/target/product/中的make文件,特别是包含需要构建的所有应用程序和库的变量PRODUCT_PACKAGES

例如,我删除了以下行:

DeskClock \
Bluetooth \
Calculator \
Calendar \

从文件generic_no_telephony.mk中的PRODUCT_PACKAGES :=开始。

然而,在我刷机后运行平板电脑时,我仍然发现了诸如“邮件”、“声音和语音记录器”等应用程序。我已经在重新构建之前进行了清理。 我需要在其他构建文件中删除更多条目吗?

在这里,您可以看到我对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 := \

此外,这些软件包可能存在于多个makefile中。在PRODUCT_PACKAGES中使用grep命令,也可能使用其他makefile。 - njzk2
谢谢,清理后它确实可以工作!删除像DeskClock、Calculator这样明显的应用程序很容易,现在我将禁用壁纸应用程序和语音记录器画廊等! - Eydolol
似乎应用程序不仅仅是从BUILD_PACKAGES构建的,我删除了所有应用程序和所有依赖项,但某些应用程序仍然安装在构建中。 - Eydolol
有些应用程序可能作为另一个应用程序构建的依赖项安装。你能更具体一些吗? - njzk2
我在很多书籍或互联网上发现,所有在构建期间安装的股票应用程序必须位于目录/build/target/product中的变量PRODUCT_PACKAGES中。为了验证这一点,我进行了许多测试,因此我打开了所有makefile,并删除了尽可能多的应用程序: 我删除了计算器、电子邮件2、画廊2等所有makefile中的这些内容,以确保它们不会从其他makefile中构建。 我的问题是,仍然有一些应用程序存在:壁纸管理是最好的例子,我仍然有HoloSpiralWallpaper的画廊,而我之前已经将其删除了 :/ - Eydolol
显示剩余3条评论
1个回答

11

我认为那些模块(package)可以由其他应用程序在.mk文件中指定的LOCAL_REQUIRED_MODULES包含。我会尝试找出模块的软件包名称,然后搜索所有.mk文件。

不要修改AOSP中许多文件夹中的一堆.mk文件,您可以添加一个新模块,一个存根,并在其Android.mk中使用LOCAL_OVERRIDES_PACKAGES禁用模块。如果模块仍然出现在目标中,则可能需要通过LOCAL_REQUIRED_MODULES添加另一个模块,该模块通过LOCAL_REQUIRED_MODULES添加了不需要的包。

抱歉,我不知道有更好的方法来做这件事。

packages / apps文件夹保存大多数应用程序.mk文件,但在一般情况下,您可能还需要检查设备、供应商和硬件文件夹。

补充:我刚刚发现envsetup.sh提供mgrep命令以在makefile(包括*.mk)中进行搜索,因此您可以尝试找到引用DeskClock包的.mk文件。

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 \

因此,您可以看到DeskClock已包含在来自core.mk的版本中。

尽管envsetup.sh帮助部分没有提到mgrep命令,但它被'hmm'命令(对于envsetup.sh的帮助)报告-我在这里引用它以激发我们更深入地学习AOSP工具 )):

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

你可以查看envsetup.shmgrep的实现来获取新的grep搜索的想法))


如何添加新的模块?例如,如何添加新的真实应用程序模块?应修改哪些文件才能将我的应用程序包含在ROM中? - Chris M.
在您的设备中的.mk文件中查找 PRODUCT_PACKAGES 变量,然后将新软件包添加到其中。请参阅 OP(原始发布)帖子。 - Mixaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接