mtk Android 编译命令自定义--添加版本号

本文介绍了一种在自定义固件构建过程中设置和显示版本号的方法。通过修改特定的Makefile文件和脚本,可以为固件生成独特的版本标识符,并在终端中验证其效果。

1. alps\build\core\Makefile文件:(参照CUSTOM_BUILD_VERNO)

ifeq "" "$(SURPLUS_BUILD_VERNO)"

  SURPLUS_BUILD_VERNO := $(BUILD_NUMBER)

  SURPLUS_BUILD_VERNO := $(subst eng.$(USER).,,$(SURPLUS_BUILD_VERNO))

endif

 

surplus_build_desc:= $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)-$(PLATFORM_VERSION)-$(SURPLUS_BUILD_VERNO)

$(INSTALLED_BUILD_PROP_TARGET): SURPLUS_PRIVATE_BUILD_DESC:= $(surplus_build_desc)

 

SURPLUS_PRIVATE_BUILD_DESC="$(SURPLUS_PRIVATE_BUILD_DESC)" \

 

2.\alps\build\tools\buildinfo.sh文件:(参照CUSTOM_BUILD_VERNO)

echo "ro.custom.build.version=$SURPLUS_PRIVATE_BUILD_DESC"

 

3.xshell编译命令:

./mk -opt=TARGET_BUILD_VARIANT=user,SURPLUS_BUILD_VERNO=v0.08 a9 new

 

4. alps\out\product\a9\system\build.prop文件中:

ro.custom.build.version=a9-user-4.1.2-v0.08

 

5.可以进入终端查看版本号,验证修改效果。

Description: This script for build qcom/mtk platform android system goals OPTIONS: -b, --build_action support build: new、remake、clean、update-api、ssi(qssi/mssi)、vnd、merge -K(大写), --keep build android. Keep going when some targets cant be made -k(小写), --key-number mtkr image sign key number -f, --filepath mtkr image path for sign -t, --type Build type(user/userdebug/eng) (Default: userdebug) -j, --jobs Specifies the number of jobs to run simultaneously (Default: 20) -m, --module module/outfile/target/image to be build with make -n, --ninja_module module/outfile/target/image to be build with ninja -a, --accurate filepath/changes.txt/changes gerrit url/filepath to precise build -p, --project, -P, --Project builds and installs all of the modules in the supplied directories, and their dependencies. Use OPLUS_CI_USER_MM="true" only builds and installs current directory, and their dependencies. eg: -p frameworks/base. -d, --pathdir build the corresponding target according to the modified content. -N, --ninja module/pathfile/target/image to be build with ninja -M, --make module/pathfile/target/image to be build with make -v, --vendor_target set MTK LD2.0 vendor target (hal/krn/vext) == (mgvi/mgk/vext) == (out_hal/out_krn/out). default is all. -c, --copy_target copy target to oplus_ci_out component dir -h, --help Display this help message -l, --list list targets in directory path Usage: 整体编译: 1 ./mk_android.sh -t userdebug -b new 清除out后,全编译${WHAT_COMPONENT} tree. 2 ./mk_android.sh -t userdebug -b remake 不清楚out,增量编译${WHAT_COMPONENT} tree. 模块编译: \033[33m如果模块属于vnd,且是MTK LD2.0编译架构,请记得添加-v [mgvi/mgk/vext], 默认是all.\033[0m 1 ./mk_android.sh -t userdebug -m \$target 通过make的方式编译某个target,target可以是编译目标和目标文件 eg: kernel、bootimage、systemimage、recoveryimage eg: out/target/product/xxx/\$file 2 ./mk_android.sh -t userdebug -n \$target 通过ninja的方式编译某个target. ninja的编译方式会比make方式快很多,在没有编译依赖的情况下,建议采用该方式编译. eg: kernel、bootimage、systemimage、recoveryimage eg: out/target/product/xxx/\$file 3 ./mk_android.sh -t userdebug -p \$pathDir pathDir为Android.mk/Android.bp所在目录, 如应用、jar、so等. eg: ./mk_android.sh -t userdebug -p packages/apps/Bluetooth/ 没有修改Android.mk或Android.bp的情况下,可以通过ninja的方式快速编译. eg: ./mk_android.sh -t userdebug -p packages/apps/Bluetooth/ -N 4 ./mk_android.sh -t userdebug -p \$pathDir:\$target 如果\$pathDir下的Android.mk/Android.bp有太多的编译目标时,可以指定特定的目标. eg: ./mk_android.sh -t userdebug -p packages/apps/Bluetooth/:libbluetooth_jni 5 ./mk_android.sh -t userdebug -d \$pathDir 编译\$pathDir目录下的所有目标 eg: ./mk_android.sh -t userdebug -d vendor/qcom/proprietary/chi-cdk 没有修改Android.mk或Android.bp的情况下,可以通过ninja的方式快速编译. eg: ./mk_android.sh -t userdebug -d vendor/qcom/proprietary/chi-cdk -N 6 ./mk_android.sh -t userdebug -e chnages.txt 精准编译changes.txt记录文件内容. changes.txt记录内容: frameworks/av/services/audiopolicy/service/AudioPolicyService.cpp eg: ./mk_android.sh -t userdebug -e changes.txt 则精准编译AudioPolicyService.cpp相关模块。 其他编译选项: 1 ./mk_android.sh -t userdebug -b android -K #K(大写) 编译android时保持keep going,直到编译完成后退出,如果有报错之后一起列出。 可用于基线升级时验证android代码编译问题。 eg: ./mk_android.sh -t userdebug -m \$target -K 表示编译\$target 是keep going 2 ./mk_android.sh -f \$filepath -k \$keynumber #k(小写) 对MTK R平台image文件进行单独签名. filepath为image路径,keynumber通常是项目号。如: 对18073项目的lk.img签名。 eg: ./mk_android.sh -f out/target/product/xxx/lk.img -k 18073
最新发布
08-30
<think>我们正在讨论如何修改Android 12 MTK设备上的原生来电通知UI样式。根据之前的对话,我们知道有两种主要方法:修改SystemUI源码(需要系统权限)或创建自定义来电应用。由于用户提到了MTK设备,并且引用中涉及MTK SystemUI的路径,我们将重点放在修改SystemUI源码的方法上,因为MTK设备通常有特定的代码路径。 用户引用: [^1]: 提到了MTK Android12 SystemUI中导航栏模式的覆盖层位置,这提示我们MTK设备可能有特定的覆盖层(overlay)机制。 [^2]: 提供了MTK SystemUI中状态栏定制的代码路径,我们可以参考类似的路径来找来电相关的代码。 [^3]: 虽然讲的是Launcher3的字体修改,但思路类似:通过修改资源文件(样式、布局)来改变外观。 目标:修改Android 12 MTK设备上原生来电通知的UI样式(如背景、按钮、字体等)。 方法:修改SystemUI源码(需要AOSP编译环境以及MTK的代码) 步骤: 1. **定位来电通知的UI相关代码和资源** 在MTK的SystemUI源码中,来电通知的UI可能位于以下路径: - `vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/incall/` - 或者更通用的路径:`packages/apps/SystemUI/src/com/android/systemui/incall/` 关键类: - `InCallActivity`:负责显示来电界面的Activity。 - `InCallNotification`:可能负责通知栏的来电通知(但注意,来电通知和全屏来电界面可能不同)。 资源文件: - 布局文件:在`res/layout/`目录下,如`incall_notification.xml`, `incall_activity.xml`等。 - 样式和主题:`res/values/styles.xml`,`res/values/colors.xml`等。 2. **修改布局文件(例如:改变背景为圆角)** 参考引用[^1]和[^4](之前对话中的引用[^4]提到圆角背景修改),我们可以自定义背景。 示例:修改来电通知的背景为圆角 - 在`res/drawable`目录下创建自定义的drawable文件,比如`incall_bg_rounded.xml`: ```xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="16dp" /> <solid android:color="@color/incall_bg_color" /> </shape> ``` - 在`res/values/colors.xml`中定义颜色: ```xml <color name="incall_bg_color">#FFFFFF</color> ``` - 在布局文件中(比如`incall_notification.xml`)应用这个背景: ```xml <RelativeLayout android:id="@+id/notification_root" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/incall_bg_rounded"> ... <!-- 其他子视图 --> </RelativeLayout> ``` 3. **修改样式(例如:修改字体颜色和大小)** 参考引用[^3]中修改Launcher3字体颜色的方法,我们在SystemUI的样式文件中修改。 在`res/values/styles.xml`中,找到来电通知相关的样式(如`InCallNotification`或`InCallTheme`),然后覆盖相关属性: ```xml <style name="InCallNotification.Text" parent="TextAppearance.AppCompat.Title"> <item name="android:textColor">#FF0000</item> <!-- 红色字体 --> <item name="android:textSize">16sp</item> </style> ``` 然后在布局文件中,将相应的TextView的样式设置为`@style/InCallNotification.Text`。 4. **处理MTK特定的覆盖层(Overlay)** 根据引用[^1],MTK使用了覆盖层机制来定制导航栏。我们可以借鉴这个机制,为来电通知创建覆盖层,这样就不需要直接修改SystemUI的源码,而是通过覆盖层资源来替换。 步骤: - 在AOSP中创建一个新的Overlay项目(位于`packages/overlays`目录下)。 - 创建与SystemUI中相同路径的资源文件(如`res/layout/incall_notification.xml`),只包含需要修改的部分(系统在编译时会用覆盖层中的资源替换原资源)。 - 在覆盖层的`AndroidManifest.xml`中声明覆盖的目标包名为`com.android.systemui`。 示例:创建覆盖层项目`InCallNotificationOverlay` - 目录结构: ``` packages/overlays/InCallNotificationOverlay/ AndroidManifest.xml res/ layout/incall_notification.xml <!--修改这个布局文件 --> values/colors.xml <!--修改需要的颜色 --> Android.mk ``` - `AndroidManifest.xml`: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.overlay.incall"> <overlay android:targetPackage="com.android.systemui" android:priority="1"/> </manifest> ``` - 然后编译并打包到系统镜像中。 5. **编译和部署** - 编译SystemUI模块(如果修改了SystemUI源码)或编译覆盖层模块。 - 将生成的APK或资源文件推送到设备的对应目录(如`/system/product/overlay`或`/system/priv-app/SystemUI`),并重启设备。 注意: - 修改系统应用需要系统签名,或者使用root权限替换文件。 - 不同版本的Android和不同厂商(如MTK)的代码路径可能不同,需要根据实际情况调整。 如果用户没有系统源码环境,那么第二种方法(创建自定义来电应用)是可行的替代方案。但根据用户的问题,他们希望修改原生的界面,所以第一种方法更直接。 相关问题: 1. 在MTK设备上,如何通过资源覆盖层(Overlay)定制SystemUI? 2. 如何确定MTK SystemUI中负责来电通知的具体类? 3. 修改SystemUI后如何在不重新编译整个ROM的情况下进行测试?</think>### 修改Android 12 MTK设备原生来电通知UI样式的完整指南 根据您的需求(MTK平台 + Android 12),结合站内引用信息,以下是系统级UI修改的完整方案: --- ### 一、核心修改路径(MTK专用) 1. **来电界面代码位置** ```bash vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/incall/ ``` - `InCallActivity.java` # 主界面控制逻辑 - `InCallControlButton.java` # 接听/拒接按钮控制 - `InCallNotification.java` # 通知栏样式控制 2. **资源文件位置** ```bash vendor/mediatek/proprietary/packages/apps/SystemUI/res/ ├── layout/incall_*.xml # 布局文件(如incall_notification.xml) ├── values/styles.xml # 样式定义 └── values/colors.xml # 颜色定义 ``` --- ### 二、具体修改步骤(以圆角背景+字体颜色为例) #### 1. **修改布局文件**(参考引用[^1]的覆盖层机制) 在`res/layout/incall_notification.xml`中添加圆角背景: ```xml <!-- 添加圆角容器 --> <FrameLayout android:id="@+id/incall_root" android:background="@drawable/incall_rounded_bg" ...> <!-- 修改来电号码字体颜色(参考引用[^3]) --> <TextView android:id="@+id/caller_number" style="@style/InCallTextStyle" <!-- 自定义样式 --> .../> </FrameLayout> ``` #### 2. **创建圆角Drawable**(参考引用[^4]) 在`res/drawable/incall_rounded_bg.xml`: ```xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="16dp" /> <!-- MTK推荐值 --> <solid android:color="#1A1A1A" /> <!-- 深灰背景 --> </shape> ``` #### 3. **自定义字体样式**(参考引用[^3]) 在`res/values/styles.xml`: ```xml <style name="InCallTextStyle" parent="TextAppearance.AppCompat.Title"> <item name="android:textColor">#FF4081</item> <!-- 粉色字体 --> <item name="android:textSize">18sp</item> <item name="android:shadowColor">#80000000</item> <item name="android:shadowRadius">2</item> </style> ``` #### 4. **处理按钮样式**(参考引用[^2]) 在`res/layout/incall_bottom_row.xml`修改按钮: ```xml <ImageButton android:id="@+id/answer_button" android:src="@drawable/ic_accept_call" android:background="@drawable/btn_accept_selector" <!-- 选择器背景 --> .../> ``` 创建按钮选择器`res/drawable/btn_accept_selector.xml`: ```xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/btn_pressed" /> <item android:drawable="@drawable/btn_normal" /> </selector> ``` --- ### 三、MTK平台特殊处理 1. **覆盖层机制**(参考引用[^1]) 在`/vendor/overlay/`创建专属覆盖包: ```bash vendor/mediatek/proprietary/overlay/SystemUI_InCall/ ├── AndroidManifest.xml └── res/ # 仅放置修改后的资源文件 ``` `AndroidManifest.xml`配置: ```xml <manifest ...> <overlay android:targetPackage="com.android.systemui" android:priority="999"/> </manifest> ``` 2. **编译指令** ```bash # 单独编译SystemUI mmm vendor/mediatek/proprietary/packages/apps/SystemUI/ # 生成路径 out/target/product/[device]/system_ext/priv-app/SystemUI/ ``` --- ### 四、兼容性注意事项 1. **MTK资源继承链**(参考引用[^2][^3]) 在`styles.xml`中必须继承MTK基础主题: ```xml <style name="InCallTheme" parent="Theme.Mtk.SystemUI"> <!-- 自定义属性 --> </style> ``` 2. **版本适配技巧** 使用资源别名应对不同分辨率: ```xml <!-- res/values-sw600dp/dimens.xml --> <dimen name="incall_corner_radius">24dp</dimen> <!-- res/values/dimens.xml --> <dimen name="incall_corner_radius">16dp</dimen> ``` --- ### 五、验证与调试 1. **实时调试命令** ```bash adb shell am start -n "com.android.systemui/.incall.InCallActivity" ``` 2. **布局检查工具** ```bash adb shell dumpsys activity top | grep "IN CALL" ``` --- ### 六、替代方案(无需源码修改) 如果无系统编译环境,可创建自定义`InCallService`: ```java public class MtkInCallService extends InCallService { @Override public void onCallAdded(Call call) { Intent intent = new Intent(this, CustomInCallActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } } ``` 在`AndroidManifest.xml`声明: ```xml <service android:name=".MtkInCallService" android:permission="android.permission.BIND_INCALL_SERVICE"> <intent-filter> <action android:name="android.telecom.InCallService" /> </intent-filter> </service> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值