11

首先,我试图从没有像 LiveWallpapers、日历、联系人、计算器、电话、设置等股票应用程序的 Android 源代码构建一个 Android 平台。

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

例如,我删除了以下几行:

DeskClock \
Bluetooth \
Calculator \
Calendar \

PRODUCT_PACKAGES :=文件generic_no_telephony.mk中。

但是,当我在刷机后运行我的平板电脑时,我仍然会找到电子邮件、录音机等应用程序。我在重建之前已经清理过了。我是否需要删除其他 make 文件中的更多条目?

在这里,您可以看到我对build/target/product/中的 make 文件所做的所有修改:

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 := \
4

1 回答 1

10

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

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

抱歉,我不知道更好的方法来做到这一点。

packages/apps文件夹包含大多数应用程序 .mk 文件,但通常情况下,您可能还需要检查devicevendorhardware文件夹。

补充:我刚刚发现envsetup.sh提供mgrep了在makefile(包括* .mk)中搜索的命令,所以你可以试试这个找到.mk 引用DeskClock 包:

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

虽然mgrep在帮助部分没有提到命令envsetup.sh,但它是由 '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

您可以检查 in 的实现mgrepenvsetup.sh获得新的 grep 搜索的想法))

于 2015-05-11T19:41:53.207 回答