1、语言时区
android\build\make\tools\buildinfo.sh
echo "persist.sys.timezone=America/New_York"
echo "ro.product.locale=en-US"
注意中间是中横线,不是下划线,不然不生效的
2、Model
android\build\make\tools\buildinfo_common.sh
echo "ro.product.${partition}.model=product_model"
PRODUCT_BRAND 产品品牌
PRODUCT_DEVICE 产品设备
PRODUCT_MANUFACTURER 产品制造商
PRODUCT_MODEL 产品模型
PRODUCT_NAME 产品名称
3.开机动画
android\device\softwinner\ceres\ceres-b6\system\bootanimation.zip
4.蓝牙
android\device\generic\common\bluetooth\bdroid_buildcfg.h
#define BTM_DEF_LOCAL_NAME "product_model"
5.开机logo
- android\longan\device\config\chips\a133\configs\b6\bootlogo.bmp
- android\longan\device\config\chips\a133\configs\b6\dragonboard\bootlogo.bmp
- android\longan\device\config\chips\a133\configs\b6\android\bootlogo.bmp需删除此处logo
6.默认壁纸
待选图片放入此三处
- android\device\softwinner\ceres\common\overlay\overlay\frameworks\base\core\res\res\drawable-nodpi\default_wallpaper.png
- android\device\softwinner\ceres\common\overlay\overlay\frameworks\base\core\res\res\drawable-sw600dp-nodpi\default_wallpaper.png
- android\device\softwinner\ceres\common\overlay\overlay\frameworks\base\core\res\res\drawable-sw720dp-nodpi\default_wallpaper.png
此处删除已生成文件
- android\out\target\product\ceres-b6\obj\APPS\framework-res__auto_generated_rro_vendor_intermediates
- android\out\target\product\ceres-b6\obj\APPS\framework-res_intermediates
- android\out\target\common\obj\APPS\framework-res__auto_generated_rro_vendor_intermediates
- android\out\target\common\obj\APPS\framework-res_intermediates
- android\out\target\product\ceres-b6\vendor\overlay
7/预置壁纸
android\device\softwinner\ceres\C70W\overlay\overlay\packages\apps\WallpaperPicker2\res\drawable-nodpi
Settings的位置
android\frameworks\base\core\java\android\provider\Settings.java
8/Settings – Privacy – show password这个选项要关掉
android\packages\apps\Settings\src\com\android\settings\security\ShowPasswordPreferenceController.java
@Override
public boolean isChecked() {
return Settings.System.getInt(mContext.getContentResolver(),
Settings.System.TEXT_SHOW_PASSWORD, 1) != 0;
}
=>
@Override
public boolean isChecked() {
return Settings.System.getInt(mContext.getContentResolver(),
Settings.System.TEXT_SHOW_PASSWORD, 0) != 0;
}
jgrep "animation"查找包含animation的文件位置
find -name "battery_scale.png"查找名为battery_scale.png的文件
9、充电动画
-
android\longan\device\product\boot-resource\boot-resource\bat
15张图文件可能过大
分区改大android\device\softwinner\ceres\ceres-b6\system\sys_partition.fex
name = bootloader_a
size = 128M -
android\device\softwinner\common\health\images\ 替换battery_scale.png
彩色256 位深度8;11张图
-
android\system\core\healthd\healthd_mode_charger.cpp
{
.disp_time = 750,
.min_level = 0,
.max_level = 9,
.surface = NULL,
},
- android\device\softwinner\common\health\animation.txt
frame: 750 0 9
- 字体路径:
bootable/recovery/minui/graphics.cpp
bootable/recovery/minui/font_10x18.h
- 去除充电百分比数字
删掉android\device\softwinner\common\health\images\battery_percent.png
9、
public static String getDeviceBrand() {
FutureTask msvSuffixTask = new FutureTask<>(() -> DeviceInfoUtils.getMsvSuffix());
msvSuffixTask.run();
try {
// Wait for msv suffix value.
final String msvSuffix = msvSuffixTask.get();
return Build.BRAND + msvSuffix;
} catch (ExecutionException e) {
Log.e(TAG, "Execution error, so we only show brand name");
} catch (InterruptedException e) {
Log.e(TAG, "Interruption error, so we only show brand name");
}
// If we can't get an msv suffix value successfully,
// it's better to return brand name.
return Build.BRAND;
}
10、更改Device name
android\packages\apps\Settings\src\com\android\settings\deviceinfo\DeviceNamePreferenceController.java
private void initializeDeviceName() {
// mDeviceName = Settings.Global.getString(mContext.getContentResolver(),
// Settings.Global.DEVICE_NAME);
mDeviceName = "LINSAY_F10XIPSQ";
if (mDeviceName == null) {
mDeviceName = Build.MODEL;
}
}
11.修改指纹
android\build\core\Makefile
define generate-common-build-props-with-product-vars-set
BUILD_FINGERPRINT="$(BUILD_FINGERPRINT_FROM_FILE)" \
BUILD_ID="$(BUILD_ID)" \
BUILD_NUMBER="1812785103" \
BUILD_VERSION_TAGS="$(BUILD_VERSION_TAGS)" \
DATE="$(DATE_FROM_FILE)" \
PLATFORM_SDK_VERSION="$(PLATFORM_SDK_VERSION)" \
PLATFORM_VERSION_LAST_STABLE="$(PLATFORM_VERSION_LAST_STABLE)" \
PLATFORM_VERSION="$(PLATFORM_VERSION)" \
TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \
bash $(BUILDINFO_COMMON_SH) "$(1)" >> $(2)
Endef
12、Build number版本号
build\make\tools\buildinfo.sh
echo "ro.build.display.id=$BUILD_DISPLAY_ID"
13、预置apk
device/softwinner/ceres/ceres_b6.mk
vendor/aw/public/prebuild/apk/MDM-30/
Android.mk
LOCAL_CERTIFICATE := platform
14、预置视频
android\packages\services\Mtp\src\com\android\mtp\CopyService.java
copyFile(new File("/system/video/Take Me To Your Heart.mp3"), new File("sdcard/Movies/Take Me To Your Heart.mp3"));
File f1 = new File("/data/data/copy_movie_flag");
Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
scanIntent.setData(Uri.fromFile(new File("mnt/sdcard/Movies/Take Me To Your Heart.mp3")));
android\device\softwinner\ceres\ceres_b6.mk
# video
PRODUCT_COPY_FILES += $(PRODUCT_DEVICE_PATH)/system/Take Me To Your Heart.mp3:system/video/Take Me To Your Heart.mp3
15、WiFi名称
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<string name="def_wifi_direct_name" translatable="false">product_name</string>
16、客户要求默认亮度为80%
92 =》 80%
frameworks\base\core\res\res\values\config.xml
<integer name="config_screenBrightnessSettingDefault">92</integer>
device/rockchip/common/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<integer name="def_screen_brightness">92</integer>
17、横屏状态下,桌面的APK图标的名称packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
- adjustToHideWorkspaceLabels();
+ //adjustToHideWorkspaceLabels();
18、音量加减互换
frameworks/base/data/keyboards/qwerty.kl
frameworks/base/data/keyboards/Generic.kl
key 114 VOLUME_UP
key 115 VOLUME_DOWN
19、热点默认名称
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiApConfigStore.java
private SoftApConfiguration getDefaultApConfiguration() {
SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
configBuilder.setBand(SoftApConfiguration.BAND_2GHZ);
configBuilder.setSsid(mContext.getResources().getString(R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid());
以上注释掉+ “_” + getRandomIntForDefaultSsid()
frameworks/base/core/res/res/values/config.xml
<string name="wifi_tether_configure_ssid_default" translatable="false">新热点名</string>
20、wifi直连名称
android\frameworks\opt\net\wifi\service\java\com\android\server\wifi\p2p\WifiP2pServiceImpl.java
private String getPersistedDeviceName() {
String deviceName = mSettingsConfigStore.get(WIFI_P2P_DEVICE_NAME);
if (deviceName == null) {
// We use the 4 digits of the ANDROID_ID to have a friendly
// default that has low likelihood of collision with a peer
String id = mFrameworkFacade.getSecureStringSetting(mContext,
Settings.Secure.ANDROID_ID);
return "KidsTAB7";//+ id.substring(0, 4);
}
return deviceName;
}
21、导航栏7列变4列
android\device\softwinner\ceres\common\overlay\overlay_go_2gb\packages\apps\Launcher3\go\res\xml
<grid-option
launcher:name="5_by_6"
launcher:numRows="5"
launcher:numColumns="6"
launcher:numFolderRows="4"
launcher:numFolderColumns="5"
launcher:numHotseatIcons="4"
launcher:dbFile="launcher_5_by_6.db"
launcher:defaultLayoutId="@xml/default_workspace_5x6" >
22、取消谷歌包对apk的影响
android\vendor\aw\public\package\apk\Update
Android.mk文件改名(此处改为Android1.mk),让系统读取不到谷歌包中的该文件
android\device\softwinner\ceres\common\gms\config.mk
23、去掉通话apk信息apk
android\vendor\partner_gms\products\google_go_comms_suite.mk
android\vendor\partner_gms\apps_go\
24、修改Launcher3的Hotseat的位置到右侧的方法
把文件android/packages/apps/Launcher3/res/values-sw720dp/config.xml中的hotseat_transpose_layout_with_orientation由false改为true
/25、壁纸居中
Z:\disk04\zjh_work\MZ\A133_r0\android\frameworks\base\core\java\android\app\WallpaperManager.java
26、Fail修改地址
Z:\disk04\zjh_work\MZ\A133_r0\android\frameworks\base\cmds\am\src\com\android\commands\am\Instrument.java
27、丽色模式对比度最小值
android\packages\apps\Settings\src\com\android\settings\display\AwEnhanceModePreferenceController.java
mContrast.setMin(10);
28、指纹
android\build\make\core\Makefile
29、查看指纹
android\out\target\product\ceres-b6\debug_ramdisk\prop.default
30、OTA差分包
android\build\tools\releasetools\ota_from_target_files
androidgroup06@androidgroup06:~android$ ota_from_target_files -i ota/smr/ceres_b6-signed_target_files-eng.androidgroup06.zip ota/gms/ceres_b6-signed_target_files-eng.androidgroup06.zip update.zip
需要先把out目录下的lib和framework放到build/tools目录下才能编译
ota_from_target_files -i [target_file_v1.zip] [target_file_v1.zip] ota_inc.zip
[target_file_v1.zip] 表示经过签名的版本V1的TargetFile
[target_file_v1.zip] 表示经过签名的版本V1的TargetFile
[ota_inc.zip] 表示命令输出得到的OTA差分包
Z:\disk04\zjh_work\MZ\A133_r0\android\longan\device\config\chips\a133\configs\b6\sys_config.fex
[dram_para2]
;lpddr4 单200ball 特别注意:使用LPDDR4颗粒的时候,1080P方案的DRAM频率要792M
dram_clk = 768
31、去掉紧急呼叫
android\frameworks\base\core\res\res\values\config.xml
<!--<item>emergency</item>-->
android\frameworks\base\packages\SystemUI\src\com\android\systemui\globalactions\GlobalActionsDialog.java
//addIfShouldShowAction(tempActions, new EmergencyDialerAction());
//return new EmergencyDialerAction();
33、编译报错
FAILED: build/make/core/Makefile:49: error: overriding commands for
target `out/target/product/ceres-b6/product/etc/sysconfig/google.xml’,
previously defined at build/make/core/base_rules.mk:492 14:30:03 ckati
failed with: exit status 1
android\vendor\partner_gms\products\gms_go.mk
# Workaround for b/138542583
PRODUCT_COPY_FILES += $(ANDROID_PARTNER_GMS_HOME)/etc/sysconfig/google_go.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/google_go.xml
根据需求表里的GMS Express+来看,如果GMS Express+是则为gms-express.xml,如果如果GMS Express+空则为google_go.xml
34、oem锁灰色
android\vendor\partner_gms\products\gms_go.mk
加上OobConfig
PRODUCT_PACKAGES := \
AndroidPlatformServices \
ConfigUpdater \
GoogleExtShared \
GoogleFeedback \
GoogleLocationHistory \
GoogleOneTimeInitializer \
GooglePackageInstaller \
GooglePartnerSetup \
GooglePrintRecommendationService \
GoogleRestore \
GoogleServicesFramework \
GoogleSpeechServices \
GoogleCalendarSyncAdapter \
GoogleContactsSyncAdapter \
GoogleTTS \
GmsCoreGo \
Phonesky \
SetupWizard \
WebViewGoogle \
Wellbeing \
OobConfig
加上OobConfig
35、定义2GB
android\device\softwinner\ceres\ceres_b6.mk
diff --git a/android/device/softwinner/ceres/ceres_b6.mk
b/android/device/softwinner/ceres/ceres_b6.mk
index a0c7613be0..9d2136c6c0 100644
--- a/android/device/softwinner/ceres/ceres_b6.mk
+++ b/android/device/softwinner/ceres/ceres_b6.mk
@@ -15,6 +15,7 @@ PRODUCT_DEVICE_PATH := $(PRODUCT_PLATFORM_PATH)/$(PRODUCT_DEVICE)
CONFIG_LOW_RAM_DEVICE := true
CONFIG_SUPPORT_GMS := true
CONFIG_OTA_FROM_10 := false
+CONFIG_LOW_RAM_2GB_DEVICE := true
PRODUCT_COPY_FILES += $(PRODUCT_PREBUILT_PATH)/bImage:kernel
36、Client-id() 不能为空
Z:\disk04\zjh_work\JH\android\vendor\partner_gms\products\gms_go_2gb.mk
setupwizard.theme=glif_v3_light
ro.com.google.clientidbase=android-along
ro.opa.eligible_device=true \
37、修改电池曲线3000mA
Z:\disk01\A100R\ChengFeng_V2.2\android\longan\device\product\configs\c70w\board.dts
pmu_battery_rdc= <120>;
pmu_battery_cap = <3000>;
pmu_runtime_chgcur = <1200>;
pmu_suspend_chgcur = <1650>;
pmu_shutdown_chgcur = <1650>;
38、修改分辨率
Z:\disk04\zjh_work\MZ\A133_r0\android\device\softwinner\ceres\ceres-b6\camera\camera.cfg
39、常见fail
"android.media.cts.MediaPlayerTest#testRecordedVideoPlayback0",
"android.media.cts.MediaPlayerTest#testRecordedVideoPlayback180",
"android.media.cts.MediaPlayerTest#testRecordedVideoPlayback270",
"android.media.cts.MediaPlayerTest#testRecordedVideoPlayback90",
40、安全补丁日期
Z:\disk01\A100R\ChengFeng_V2.2\android\build\make\core\version_defaults.mk
PLATFORM_SECURITY_PATCH := 2021-12-05
41、制作patch
./makepatch.sh 序列号1 序列号2
42、过SMR需要的OS
android\build\make\tools\buildinfo.sh
echo "ro.build.version.base_os=$PLATFORM_BASE_OS"