bs-android-tip

handler.post(Runnable)

这不是在线程中执行的 是在主线程中 要想在线程中 new Thread(new runnable(
handler.post(Runnable)
))

logcat 过滤多个关键字

adb logcat | grep -e "exlight@" -e"yubang"

makefile get all so from apk then copy to out directory

LOCAL_PATH         := $(call my-dir)
LOCAL_PATH_SECOND         := $(LOCAL_PATH)

include $(CLEAR_VARS)
LOCAL_MODULE        := BaiduIME
$(shell rm -rf $(LOCAL_PATH_SECOND)/lib/)
$(shell mkdir -p $(LOCAL_PATH_SECOND)/lib/)
$(shell mkdir -p $(LOCAL_PATH_SECOND)/lib/arm/ && $(shell unzip -j $(LOCAL_PATH_SECOND)/$(LOCAL_MODULE).apk "lib/armeabi-v7a/*.so" -d $(LOCAL_PATH_SECOND)/lib/arm/))

$(shell mkdir -p $(PRODUCT_OUT)/system/priv-app/BaiduIME/lib/arm)
$(shell cp -rf $(LOCAL_PATH)/lib/arm/*.so $(PRODUCT_OUT)/system/priv-app/BaiduIME/lib/arm/)
$(shell rm -rf $(LOCAL_PATH_SECOND)/lib/)

LOCAL_MODULE_TAGS   := optional
LOCAL_MODULE_CLASS  := APPS
LOCAL_SRC_FILES     := $(LOCAL_MODULE).apk
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)

LOCAL_PRIVILEGED_MODULE 如果不设置或者设置为false,安装位置为system/app; 如果设置为true,安装位置为system/priv-app。
LOCAL_CERTIFICATE := PRESIGNED 表示 这个apk已经签过名了,系统不需要再次 签名
LOCAL_MODULE_CLASS 指定文件类型,apk文件用APPS, 并且 会检查 是否是apk文件,动态库so文件用SHARED_LIBRARIES ,bin文件用EXECUTABLES,其他文件 用ETC
LOCAL_MODULE_TAGS :=user eng tests optional
	user: 指该模块只在user版本下才编译
	eng: 指该模块只在eng版本下才编译
	tests: 指该模块只在tests版本下才编译
	optional:指该模块在所有版本下都编译
LOCAL_MODULE_PATH := $(TARGET_OUT)/presetapp  编译打包后,指定模块最后的目标存放路径
	TARGET_ROOT_OUT:表示根文件系统。
	TARGET_OUT:表示system文件系统。
	TARGET_OUT_DATA:表示data文件系统。
LOCAL_MODULE_STEM = systemxpbrowser.apk
表示编译链接后的目标文件的文件名

若需要apk作为32bit的apk运行,则需要在Android.mk中定义 
LOCAL_MULTILIB :=32

每个编译模块都是以include $(CLEAR_VARS)开始,以include $(BUILD_XXX)结束。

makefile里的常用宏定义

out/target/product/xxx的宏即为:$(PRODUCT_OUT)
out/target/product/xxx/system的宏即为:$(TARGET_OUT)
out/target/product/xxx/root的宏即为:$(TARGET_ROOT_OUT)

git 一键删除新加的文件

git clean -df

userdebug版本删掉此应用

ifneq ($(TARGET_BUILD_VARIANT),userdebug)
#Add for remove SnapdragonCamera
PRODUCT_REMOVED_MODULES += $(BSUI_PRODUCT_OUT)/system/priv-app/SnapdragonCamera/SnapdragonCamera.apk \
                           $(BSUI_PRODUCT_OUT)/system/priv-app/SnapdragonCamera/oat/arm64/SnapdragonCamera.odex \
                           $(BSUI_PRODUCT_OUT)/system/priv-app/SnapdragonCamera/oat/arm64/SnapdragonCamera.vdex

默认给予NotificationManagerListener权限

       android.app.NotificationManager notificationManager = (android.app.NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        ComponentName mComponentName = new ComponentName("com.blackshark.exlight","com.blackshark.exlight.system.eventhub.NotificationEventHub");
        notificationManager.setNotificationListenerAccessGranted(mComponentName, true);

列出目录下所有文件 文件夹的大小 并按文件大小照降序排序

 du -s /vendor/presetapp/* | sort -nr

vendor so vts

预置app放在vendor下 vts测试不过 解决方案将so文件打包

生成patch

git add .
git comm -m "xxx"
git format-patch -1

检测apk是否是V2 签名

在这里插入图片描述

Q app调用framework manegr类

需要在framework/base/config/hiddenapi-greylist-classes.txt中添加类的路径名称

com.xxxx.exlight.ExLightManager

adb wifi 调试

adb tcpip 5555
adb shell ifconfig wlan0
adb connect 手机ip地址:5555

adb调试doze

开启:
adb shell dumpsys battery unplug ##设置为非充电
adb shell dumpsys deviceidle enable ##设置idle模式可用
adb shell dumpsys deviceidle force-idle ##强制进入idle模式

##下面是退出idle指令
adb shell dumpsys deviceidle disable
adb shell dumpsys battery reset

查询是否开启doze:
adb shell dumpsys deviceidle

Standby 应用待机模式测试

进入:
adb shell dumpsys battery unplug
adb shell am set-inactive true

退出:
adb shell am set-inactive false

查询
adb shell am get-inactive

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值