- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
首先,我尝试从 Android 源代码构建一个 Android 平台,而没有 LiveWallpapers、日历、联系人、计算器、电话、设置等库存应用程序。
为了做到这一点,我正在修改 /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 := \
最佳答案
我认为这些模块(包)可能被其他应用程序包含,在 .mk 文件的 LOCAL_REQUIRED_MODULES
中指定。我会尝试找出模块的包名称,然后搜索所有 .mk 文件。
无需修改 AOSP 中许多文件夹中的一堆 .mk 文件,您可以使用 LOCAL_OVERRIDES_PACKAGES
在其 Android.mk 中添加一个新模块、一个 stub 并禁用模块。如果模块仍然出现在目标中,您可能需要向 LOCAL_OVERRIDES_PACKAGES
添加另一个模块,这些模块通过 LOCAL_REQUIRED_MODULES
添加了不需要的包。
抱歉,我不知道更好的方法。
packages/apps 文件夹包含大部分应用程序 .mk 文件,但您可能需要检查设备、供应商 和硬件 一般情况下也是文件夹。
添加: 我刚刚发现 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
尽管 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.sh
中检查 mgrep
的实现以获得新的 grep 搜索的想法))
关于android - 从构建中删除 AOSP 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540017/
我正在通过 labrepl 工作,我看到了一些遵循此模式的代码: ;; Pattern (apply #(apply f %&) coll) ;; Concrete example user=> (a
我从未向应用商店提交过应用,但我会在不久的将来提交。 到目前为止,我对为 iPhone 而非 iPad 进行设计感到很自在。 我了解,通过将通用PAID 应用放到应用商店,客户只需支付一次就可以同时使
我有一个应用程序,它使用不同的 Facebook 应用程序(2 个不同的 AppID)在 Facebook 上发布并显示它是“通过 iPhone”/“通过 iPad”。 当 Facebook 应用程序
我有一个要求,我们必须通过将网站源文件保存在本地 iOS 应用程序中来在 iOS 应用程序 Webview 中运行网站。 Angular 需要服务器来运行应用程序,但由于我们将文件保存在本地,我们无法
所以我有一个单页客户端应用程序。 正常流程: 应用程序 -> OAuth2 服务器 -> 应用程序 我们有自己的 OAuth2 服务器,因此人们可以登录应用程序并获取与用户实体关联的 access_t
假设我有一个安装在用户设备上的 Android 应用程序 A,我的应用程序有一个 AppWidget,我们可以让其他 Android 开发人员在其中以每次安装成本为基础发布他们的应用程序推广广告。因此
Secrets of the JavaScript Ninja中有一个例子它提供了以下代码来绕过 JavaScript 的 Math.min() 函数,该函数需要一个可变长度列表。 Example:
当我分别将数组和对象传递给 function.apply() 时,我得到 NaN 的 o/p,但是当我传递对象和数组时,我得到一个数字。为什么会发生这种情况? 由于数组也被视为对象,为什么我无法使用它
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章ASP转换格林威治时间函数DateDiff()应用由作者收集整理,如果你
我正在将列表传递给 map并且想要返回一个带有合并名称的 data.frame 对象。 例如: library(tidyverse) library(broom) mtcars %>% spl
我有一个非常基本的问题,但我不知道如何实现它:我有一个返回数据框,其中每个工具的返回值是按行排列的: tmp<-as.data.frame(t(data.frame(a=rnorm(250,0,1)
我正在使用我的 FB 应用创建群组并邀请用户加入我的应用群组,第一次一切正常。当我尝试创建另一个组时,出现以下错误: {"(OAuthException - #4009) (#4009) 在有更多用户
我们正在开发一款类似于“会说话的本”应用程序的 child 应用程序。它包含大量用于交互式动画的 JPEG 图像序列。 问题是动画在 iPad Air 上播放正常,但在 iPad 2 上播放缓慢或滞后
我关注 clojure 一段时间了,它的一些功能非常令人兴奋(持久数据结构、函数式方法、不可变状态)。然而,由于我仍在学习,我想了解如何在实际场景中应用,证明其好处,然后演化并应用于更复杂的问题。即,
我开发了一个仅使用挪威语的应用程序。该应用程序不使用本地化,因为它应该仅以一种语言(挪威语)显示。但是,我已在 Info.plist 文件中将“本地化 native 开发区域”设置为“no”。我还使用
读完 Anthony's response 后上a style-related parser question ,我试图说服自己编写单体解析器仍然可以相当紧凑。 所以而不是 reference ::
multicore 库中是否有类似 sapply 的东西?还是我必须 unlist(mclapply(..)) 才能实现这一点? 如果它不存在:推理是什么? 提前致谢,如果这是一个愚蠢的问题,我们深表
我喜欢在窗口中弹出结果,以便更容易查看和查找(例如,它们不会随着控制台继续滚动而丢失)。一种方法是使用 sink() 和 file.show()。例如: y <- rnorm(100); x <- r
我有一个如下所示的 spring mvc Controller @RequestMapping(value="/new", method=RequestMethod.POST) public Stri
我正在阅读 StructureMap关于依赖注入(inject),首先有两部分初始化映射,具体类类型的接口(interface),另一部分只是实例化(请求实例)。 第一部分需要配置和设置,这是在 Bo
我是一名优秀的程序员,十分优秀!