总笔记

我的私人博客:www.mrloveqin.top 可以免费查看

1.更新代码方式: repo sync -c --no-tags -r YB
c 或者–current-branch表示只拉取当前分支代码,坑爹啊,我在init指定了分支,同步的时候,你却悄悄给我拉些没用的。
–no-tags 不拉取tags,tag虽然不大,但架不住多
–no-clone-bundle 不使用clone.bundle,clone.bundle是git bundle一样的打包文件,使用bundle文件可以做cdn下载的分流,cdn听上去不错,但是如果cdn到google的服务器,或者clone.bundle本来就占空间,不是很划算,所以不使用clone.bundle
-f 如果sync失败,继续同步(想想当年LZ写了一个while循环解决同步失败终止问题的)
–force-sync 如果文件目录有差异,强制覆盖掉
原文:https://blog.csdn.net/counsellor/article/details/86591081

2.截屏:shift + prtscn

==3.编译脚本: ==
#!/bin/bash
cd android
./build/tinno_script/tinno_build.sh k510 userdebug clean
#./build/tinno_script/tinno_build.sh p160an userdebug clean myos
myos 是南京的apk仓库,不加这个参数的话就会使用本地的apk
运行build.bash脚本命令:chmod a+x build.sh
bash build.sh

4.预装apk:
第一步:在 /home/android/work/6739/android/vendor/tinno/product/k510/trunk/packages下创建kuaiya文件夹
kuaiya文件夹内把apk拷贝进去,然后新建Android.mk
在这里插入图片描述在这里插入图片描述Android.mk内容如下

LOCAL_PATH:= $(call my-dir)
#Add kuaiya
include $(CLEAR_VARS)
LOCAL_MODULE := kuaiya //生成应用文件夹名
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk //应用名称
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
LOCAL_MODULE_PATH := $(TARGET_OUT)/preloadapp //应用生成路径
include $(BUILD_PREBUILT)
第二步在qmb_pk.mk文件里面的PRODUCT_PACKAGES内添加kuaiya
在这里插入图片描述在这里插入图片描述

第三步编译环境: source build/envsetup.sh → lunch → mmm <要编译文件夹>
如:mmm vendor/tinno/product/k510/trunk/packages/kuaiya
等待编译成功

5.源码覆盖方式:
①:在项目的Android文件夹内新建覆盖文件夹在这里插入图片描述
然后在文件内包含res文件夹,Android.mk ,AndroidManifest.xml在这里插入图片描述
Res文件夹内创建要覆盖内容文件夹如:values文件夹内的strings.xml在这里插入图片描述
Strings.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">kuaiya2</string>
</resources>

这里是覆盖app的名称
String.xml格式在apk反编译源码里面找
Android.mk内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := kuaiyaOverlay
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/overlay
LOCAL_CERTIFICATE := shared
LOCAL_AAPT_FLAGS := --auto-add-overlay
include $(BUILD_PACKAGE)
AndroidManifest.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dewmobile.kuaiya.apps.messagingoverlay">
    <overlay 
	android:targetPackage="com.dewmobile.kuaiya.apps.messaging" 
	android:priority="1" android:isStatic="true"/>
</manifest>

高亮内容需要到apk反编译源码里面找对应的包名替换
②编译环境: source build/envsetup.sh → lunch → mmm <要编译文件夹>
如:mmm kuaiyaOverlay/
等待编译成功

6.ubuntu下使用evince README.pdf命令可以直接在命令行中打开pdf文件

7.在AndroidManifest.xml中没有注册layout文件,会造成页面闪退

8.Android系统所有可声明的权限。
访问 http://developer.android.com/reference/android/Manifest.permission.html 可以查看

9.自定义广播无法弹出提示问题
Android8.0加intent.setPackage(getPackageName());可以解决

10.Android WebView net::ERR_CLEARTEXT_NOT_PERMITTED问题:
解决方法: 在Application中加入android:usesCleartextTraffic=“true”
https://blog.csdn.net/weixin_34362875/article/details/91442507

11.项目流程
SPM VPM 软件工程师

  1. 跟SPM沟通项目配置 , 新建提货单和 TSDS 编译配置
  2. 本地提货单下拉代码 (如果跟随主干的分支走, 则不需要合并原型)
  3. 客户需求导入jira
  4. 找spm 和 modem 硬件工程师沟通 参数配置, 还有新建对应订单的 仓库
  5. 按照jira 上面的问题号, 修改需求
  6. 需求本地验证OK 之后提交 代码
  7. 需求改完之后, 进入tsds 编译版本
  8. 版本出完了之后 ,项目订单工程师下载验证,提供自检表 和 SVN版本路径给测试 进行全面测试验证。
  9. 内部验证OK之后, VPM 把版本提交给客户验证。
  10. 客户确认版本, 内部要进行一轮GMS认证, 等到内部认证全部PASS之后, 提交给代理, 最后拿到google的 approve, 最后内部DCC

SMR

  1. 主要是谷歌的安全patch
  2. GMS VERSION 不能修改,base_os 属性值 你必须和你 DCC版本的fingerprint 一致

12.动态注册广播

private DynamicBroadcast dynamicBroadcast;
   private String BROADCAST_ACTION = "android.intent.action.BROADCAST_ACTION";
   dynamicBroadcast = new DynamicBroadcast();
   IntentFilter intentFilter = new IntentFilter(BROADCAST_ACTION);
   registerReceiver(dynamicBroadcast, intentFilter);

public class DynamicBroadcast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent){
       //todo
    }
}

13.更改开机动画、开机铃声

  1. zip -r -0 bootanimation.zip ./
    第一步 制作动画压缩包
  2. adb root
  3. adb remount
  4. adb push bootanimation.zip /system/media/
  5. adb reboot 看效果

14.跳过开机引导:*89#

15.反编译软件使用
./apktool.sh <反编译pk>

16.更改开机,关机logo:
在vendor/tinno/k210/qmb_pk/logo 文件夹下覆盖开机,关机logo就行
注意:logo文件必须要用256色也即位深为8位的bmp格式文件

17.更改内置应用字符串
第一步在vendor/tinno/k210/qmb_pk/rroOverlay文件夹下新建要覆盖应用文件夹如DeskClockOverlay在这里插入图片描述

接着按覆盖应用DeskClock中String.xml目录路径新建文件夹在这里插入图片描述
第二步:在原应用String.xml中找到要覆盖字符串位置,然后在自己的String.xml中覆盖
如:把Start week on 该为 Start myweek on
String.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"
    xmlns:tools="http://schemas.android.com/tools">
     <string name="week_start_title">Start myweek on</string>
</resources>

第三步:在DeskClockOverlay目录下新建Android.xml、AndroidManifest.xml两个文件在这里插入图片描述
① Android.xml修改LOCAL_PACKAGE_NAME为覆盖文件夹名如DeskClockOverlay。(Android.xml原始内容格式可以在原覆盖应用内复制,AndroidManifest.xml同理一样)
Android.xml内容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := DeskClockOverlay
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, res)
LOCAL_SDK_VERSION := current
LOCAL_IS_RUNTIME_RESOURCE_OVERLAY := true
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/overlay
LOCAL_AAPT_FLAGS := --auto-add-overlay
include $(BUILD_PACKAGE)

② AndroidManifest.xml修改对应的包名,报名在原应用AndroidManifest内找
AndroidManifest.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2017 Google Inc. All Rights Reserved. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.deskclock.overlay">
	<overlay android:targetPackage="com.android.deskclock" android:priority="1" android:isStatic="true" />
</manifest>

(如果系统应用没有Android.xml、AndroidManifest.xml可以不需要,如Settings)
最后用mmm 部分编译,再增量编译

18.文件夹内查找指定内容:
grep -rni “关键字”

19.安装apk命令
adb install -r <apk文件>

20.Settings内置选项在一级菜单activity方式
① 在AndroidManifest.xml 添加如下代码

<activity android:name=".HardKey"
                    android:label="Mrlove"
                    android:icon="@drawable/ic_home_wikofeatures"
                    android:taskAffinity="">
                <intent-filter android:priority="1">
                    <action android:name="com.android.settings.HARDKEY" />
                    <action android:name="android.settings.HARDKEY" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.VOICE_LAUNCH" />
                    <category android:name="com.android.settings.SHORTCUT" />
                </intent-filter>
		<!--在category中的物理位置(按优先级排序时用到,并不是指第9个位置,数越大优先级越大越靠前)-->
                <intent-filter android:priority="9">
                    <action android:name="com.android.settings.action.SETTINGS" />
                </intent-filter>
		<!--此项在主setting位置(ia.homepage)-->
                <meta-data android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.homepage" />

                <meta-data android:name="com.android.settings.ACTIVITY_ACTION"
                    android:value="com.android.settings.HardKey" />
                
                <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                    android:value="true" />
            </activity>

② 实现HardKey这个activity代码如下

package com.android.settings;
import android.app.Activity;
import android.os.Bundle;

public class HardKey extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hardkey);
    }
}

③ 创建hardkey.xml代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="hello world" />
</LinearLayout>

21.Settings内置选项在一级菜单fragment方式
① 在AndroidManifest.xml 添加如下代码

<!-- 这样写,然后在Settings中声明成Settings的内部类,从而不需要单独再写FlashSettingsActivity的实现类 -->
	 <activity android:name="Settings$FlashSettingActivity" 
                    android:label="MrloveFragment"
                    android:icon="@drawable/ic_home_wikofeatures"
                    android:taskAffinity="">
                <intent-filter android:priority="1">
                    <action android:name="com.android.settings.FLASH_SETTING" />
                    <action android:name="android.settings.FLASH_SETTING" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.VOICE_LAUNCH" />
                    <category android:name="com.android.settings.SHORTCUT" />
                </intent-filter>
                <intent-filter android:priority="9">
                    <action android:name="com.android.settings.action.SETTINGS" />
                </intent-filter>
                <meta-data android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.homepage" />
 		<!-- FRAGMENT_CLASS 表明value指定的类是fragment -->
                <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                    android:value="com.android.settings.FlashSetting" /><!--FlashSettings实现类 -->
                <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                    android:value="true" />
            </activity>

②自己实现FlashSetting 这个fragment代码如下:

package com.android.settings;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class FlashSetting extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.right_fragment);
    }
}

③在xml文件夹实现right_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:key="set_local"
        android:title="我的位置" />

    <CheckBoxPreference
        android:defaultValue="true"
        android:key="apply_wireless"
        android:summary="使用无线网络在应用程序(比如Google地图)中查看位置"
        android:title="使用无线网络"></CheckBoxPreference>
</PreferenceScreen>

④在Settings.java中添加

 public static class FlashSettingActivity extends SettingsActivity { /* empty */ }

⑤在package com.android.settings.core.gateway;的SettingsGateway.java文件中添加如下代码
一,引入包

import  com.android.settings.FlashSetting;

二, 在public static final String[] ENTRY_FRAGMENTS方法中添加:

FlashSetting.class.getName(),

三,在public static final String[] SETTINGS_FOR_RESTRICTED方法中添加:

Settings.FlashSettingActivity.class.getName(),

https://www.jianshu.com/p/2e644c08646d
https://blog.csdn.net/fsc_fantexi/article/details/90668122

22.以窗口的形式打开当前目录:
nautilus $PWD
https://blog.csdn.net/chenwenxin/article/details/44174563

23.通过gerrit 打补丁
一、直接搜索ID或者commit信息,然后cherry-pick到自己项目上 并add 一个 Reviewers在这里插入图片描述

二、如果失败就下载 cherry-pick 包 到需要打补丁的目录在这里插入图片描述

手动解决冲突后
1.git add
2.git cherry pick continue
3.git push tinno HEAD: refs/for/地址 //提交到git服务器待审核
然后在gerrit add 一个 Reviewers

如果手动解决冲突有不可修改文件,直接添加不可修改内容
1.git add
2.git commit -m <信息>
3.git push tinno HEAD: refs/for/地址 //提交到git服务器待审核

三、如果没有找到ID或者commit信息
git branch -a //查看所有分支
git checkout -b <补丁所在分支> //在本地切换到补丁所在分支
gitk. //搜索commit信息 找到要修改的内容
git checkout -b <当前分支> //切换回当前分支
找到修改目录手动修改内容
git add
git commit -m <信息>
git push tinno HEAD: refs/for/地址

24.如何使用TSDS构建项目在这里插入图片描述

25.2018以前旧项目debug 软件编译前修改点(用于gms的debug)
1、fingerprint属性与用于同次gms的user版本要一致,除了ro.build.type字段值不同
如:user版:Mobicel/X4/X4:8.1.0/OPM2.171019.012/1568094378:user/release-keys
则debug版: Mobicel/X4/X4:8.1.0/OPM2.171019.012/1568094378:userdebug/release-keys

2、incremental属性值修改—与user软件的值要一致,且与fingerprint中incremental字段值一致
基于上一次举例,要设置 ro.build.version.incremental=1568094378

3、tag属性值要与fingerprint中tag字段一致
基于上一次举例,要设置 ro.build.tags=release-keys

具体操作
①先在对应订单目录的buildinfo.sh查找fingerprint属性值的组成方式
②从buildinfo.sh和configs.mk文件中查找对应的宏赋值的地方,如果找不到去device目录grep搜索,没有结果则从build/make/core/Makefile文件中查找本订单fingerprint赋值的位置
如在订单目录(Y400AG_MTN/vendor/tinno/y400/mcl_mtn_za)执行

grep -rniw fingerprint
	buildinfo.sh:74:  echo "ro.build.fingerprint=$BUILD_FINGERPRINT"

在device目录执行

grep -rniw BUILD_FINGERPRINT
	无结果

在build/make/core/Makefile目录执行

grep -rniw BUILD_FINGERPRINT
	    Makefile:238:  BUILD_FINGERPRINT := Mobicel/X4/X4:$(PLATFORM_VERSION)/ $(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TA GS)

在订单目录(Y400AG_MTN/vendor/tinno/y400/mcl_mtn_za)执行

grep -rniw ro.build.version.incremental
      	buildinfo.sh:8:echo "ro.build.version.incremental=$BUILD_NUMBER"

在build/make/core/Makefile目录执行

grep -rniw BUILD_NUMBER
		Makefile:202: BF_BUILD_NUMBER := $(BUILD_NUMBER)

(可以看到红色的BF_BUILD_NUMBER := $(BUILD_NUMBER) = ro.build.version.incremental
而上文第二点要修改的ro.build.version.incremental=1568094378其实修改BUILD_NUMBER
就可以了,但是 BUILD_NUMBER 是个变化的值需要固定,可以直接在手机里面查看具体的值)

连接手机执行
adb shell getprop ro.build.version.incremental
1568104533

在config.mk中修改即可
在订单目录(Y400AG_MTN/vendor/tinno/y400/mcl_mtn_za)执行
grep -rniw ro.build.tags
buildinfo.sh:34:echo “ro.build.tags=$BUILD_VERSION_TAGS”
连接手机执行
adb shell getprop | grep ro.build.tags
[ro.build.tags]: [release-keys]
在buildinfo.sh,Makefile修改即可

修改的具体位置:
①/home/android/work/Y400AG_MTN/vendor/tinno/y400/mcl_mtn_za 下
configs.mk

+ifeq ($(TARGET_BUILD_VARIANT), userdebug)
+BUILD_NUMBER := 1568104533                     //具体值通过
+endif                                          adb shell getprop 
buildinfo.sh                                    ro.build.version.incremental 
-echo "ro.build.tags=$BUILD_VERSION_TAGS"       查看手机的值
      +echo "ro.build.tags=release-keys"

②/home/android/work/Y400AG_MTN/build/make/core下
Makefile

   - BUILD_FINGERPRINT := Mobicel/V4/V4:$(PLATFORM_VERSION)/$(BUILD_ID)/
$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
      +BUILD_FINGERPRINT := Mobicel/V4/V4:$(PLATFORM_VERSION)/$(BUILD_ID)/
$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/release-keys

补充:
旧版本修改方式:(李进总结)

先在对应订单目录的buildinfo.sh查找fingerprint属性值的组成方式
,从本文件和configs.mk文件中查找对应的宏,如果找不到去device目录grep搜索
没有结果则从build/make/core/Makefile文件中查找本订单fingerprint赋值的位置,对
BUILD_NUMBER、TAGERT_BUILD_VARIANT和release-keys 进行修改,如果是取宏则在订单目录修改,
release-keys可直接在buildinfo强改,并且/build/make/core/Makefile文件对应fingerprint也要修改。
注:如果TARGET_BUILD_VARIANT值是编译脚本中定义为直接从输入编译命令取值则不用修改。

26.订单目录简介
配置文件:作用、路径在这里插入图片描述

Android.mk: include all subdir makefile
apps/: 预置客户APP
bootanimation: 开关机动画资源
buildinfo.sh: 项目相关定义的ro属性配置文档
configs.mk: 控制device的宏定义,等订单项目配置makefile文件
etc: 手机网络频段信息设置等相关信息
gms.mk: gms相关配置信息makefile文件
logo: 手机开机第一帧图片和电池电量低图片
overlay: 相关资源替换目录
sound: 手机铃声、通知、闹钟等音频文件配置信息
platformConfigs: 手机系统属性值配置文件
分单项目目录补充
reorder_config:翻单定制文件夹

27.Google规范暗码讲解
暗码:各常用暗码,及所进页面的作用(apk),常用测试或验证情景(Google规范暗码:##暗码##

0661 :查看设备信息(LCD物料信息、TP物料信息、设备有的sensors、camera物料信息等)
86436 :查看版本号(客户版本号,内部版本号,基线版本号等)
8 :开机下的工厂测试(或称ftm测试,整机测试)
Ps :关机下ftm测试–power+音量下键
84666364:工程模式–ylog,log level switch等…
*#06# :手机国际识别码(IMEI)

28.jack编译报错的问题
错误信息:
ERROR: Communication error with Jack server (52) make
解决方法:
工程根目录内执行以下三句
export JACK_JAR=./out/host/linux-x86/framework/jack.jar
./out/host/linux-x86/bin/jack-admin stop-server
./out/host/linux-x86/bin/jack-admin start-server
http://www.mamicode.com/info-detail-2162318.html

29.出现Try increasing heap size with java option '-Xmx’错误解决方案
出现这个错误是由于电脑内存不足,在命令行分别执行以下三条语句,然后继续编译
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
https://blog.csdn.net/csdn_zyp2015/article/details/56277765

30.ota包上传服务器失败后,进入后台手动上传图解
①进入后台后,在项目管理中,搜索当前项目名,项目名获取方式如下:在这里插入图片描述

②搜索页面如下:在这里插入图片描述

③看发布日期选择正确的项目,点击配置按钮在这里插入图片描述

④进入配置页面后,按照图示操作在这里插入图片描述

⑤点击测试IMEI管理,在搜索栏搜索对应项目,再点击重置所有在这里插入图片描述

31.翻单项目如何初始化
①首先在要进行翻单的定制化项目下新建reorder_config文件夹,如下图所示:在这里插入图片描述
②文件夹内复制qmb_pk翻单项目里面需要覆盖的文件,一般是如下图所示这些文件:在这里插入图片描述
(各文件作用参考:26.订单目录简介)
③修改编译脚本,首先复制当前项目编译脚本进行定制化修改,如下图所示在这里插入图片描述
④erverbuild_k210_pk.sh文件内修改内容可以参考其他同基线翻单项目修改,注意脚本中①②两处修改为自己翻单文件夹,修改内容如下:
在这里插入图片描述
代码原文:

######### TINNO REORDER PROJECT ######### 
echo -e "TEST IF REORDER PROJECT EXIST"
if [ -d "$SRC_DIR/vendor/tinno/$BUILD_PROJECT_NATIVE/$BUILD_PROJECT_CUSTOM/reorder_config/" ]
then
  echo -e "REORDER PROJECT, COPY CONFIGS"
  cp -rf $SRC_DIR/vendor/tinno/$BUILD_PROJECT_NATIVE/$BUILD_PROJECT_CUSTOM/reorder_config/* $SRC_DIR/vendor/tinno/$BUILD_PROJECT_NATIVE/$BUILD_PROJECT_CUSTOM
fi
######### TINNO REORDER PROJECT #########

添加代码含义:
把翻单文件夹的内容覆盖定制项目下相同内容,从而达到编译后的项目属于订单项目,注意,当运行翻单脚本后,原始项目文件会被覆盖掉,注意git checkout . 当前项目,查看原始项目数据

32.验证翻单项目GMS,security安全补丁,以及修改点部分操作
首先还原翻单定制化脚本覆盖掉的内容
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/qmb_pk$ git checkout .
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/qmb_pk$ git status .
连接手机查看修改点
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/qmb_pk$ adb shell getprop |grep 2020
查看手机gms更新时间是否为最新时间
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/qmb_pk$ adb shell getprop |grep gms
查看项目中的gms时间
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/trunk$ ls
bootanimation build_fingerprint.mk buildinfo.sh configs_env.sh configs.mk configs_version.mk etc gms.mk kernel_config logo overlay PlatformConfigs sounds vendor_buildinfo.sh
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/trunk$ cat gms.mk |grep version
ro.com.google.gmsversion=9_201902.go
查看git提交有没有最新修改
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/trunk$ gitk gms.mk &
[1] 6007
查看项目代码中security安全补丁时间
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/trunk$ cat gms.mk |grep security
[1]+ 已完成 gitk gms.mk
查看手机中security安全补丁时间
android@Precision-T1700-c0508:~/work/K210/vendor/tinno/k210/trunk$ adb shell getprop |grep security

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值