美团APP
0x01、 目标需求:
.a) 美团APP商超模块的另类爬虫思路实现
.b) 主要实现功能:改机新设备,多开多线程支持
.c) 具体的分析过程我就不写了,说一下实现,大概花了我一个月的时间,因为好多东西调试的时候都没有截图记录,现在补一下,能补多少就补多少了.
0x02、分析背景:
.a) 美团APP
.b) APP版本11.3.402(目前最新版本11.5.403),不影响基本小版本更新都是可以用
.c) 软件无壳
.d) 软件通讯过程中部分接口采取了签名验证的方式,返回数据无加密
0x03、使用到的工具以及软件:
.a) frida(调试验证参数以及调用关系等)
.b) Virtual App(主要多开改机)
.c) Xposed(主要拦截网络请求)
0x04、开始动手:
.a) 截图如下:
0x001. 示例部分代码,hook网络通信函数(以下hook代码在美团系的APP基本通用,通过反射可以拿到请求到返回的所有对象,由于返回值是个流,读取一次就没了,我在下面的代码里加了copy功能,然后通过反射在写回去)
0x002. 我已经分析过了所以就直接上代码了,有不懂的小伙伴可以联系我的QQ,在左侧的 关于->关于博客里面
if(packageName.equals("com.sankuai.meituan") && packageName.equals("com.sankuai.meituan")){
classLoader = context.getClassLoader();
XposedHelpers.findAndHookMethod("com.sankuai.meituan.retrofit2.ClientCall", context.getClassLoader(),
"getResponseWithInterceptorChain",
XposedHelpers.findClass("com.sankuai.meituan.retrofit2.Request",context.getClassLoader())
,new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
int port = initPort+userId;
MeiTuanServer meituanServer = new MeiTuanServer("0.0.0.0",port);
if (!meituanServer.isAlive()){
meituanServer.start(60000,true);
if (meituanServer.isAlive()){
Log.e("EDXposed","服务启动成功,端口号为:"+port);
processServer.put(userId,meituanServer);
}else{
Log.e("EDXposed","服务启动失败,原因未知.");
}
}else{
Log.e("EDXposed","端口号:["+port+"]的服务已经运行中.....");
}
}
@Override
protected synchronized void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
//首先获取请求的url地址
Object requestObject = param.args[0];
Method requestMethod = requestObject.getClass().getDeclaredMethod("url");
requestMethod.setAccessible(true);
String requestUrl = requestMethod.invoke(requestObject).toString();
requestMethod = requestObject.getClass().getDeclaredMethod("method");
requestMethod.setAccessible(true);
String method = requestMethod.invoke(requestObject).toString();
// Log.e("EDXposed","请求方法" + method + " 请求地址为:"+requestUrl);
//继续下一步通过反射拿到返回数据
Object rawResponse = param.getResult();
if (rawResponse != null) {
Method mbody = rawResponse.getClass().getDeclaredMethod("body");
rawResponse = mbody.invoke(rawResponse);
// Log.e("EDXposed",rawResponse.getClass().getName());
if (rawResponse.getClass().getName().equals("com.sankuai.meituan.retrofit2.ResponseBodySubject") && method.equals("POST")) {
// 处理返回对象数据
Method sourceMethod = rawResponse.getClass().getDeclaredMethod("source");
InputStream is = (InputStream) sourceMethod.invoke(rawResponse);
//copy inputStream
ByteArrayOutputStream baos = IOUtils.inputConvertByteArray(is);
is = IOUtils.byteArrayConvertInputStream(baos);
String str = IOUtils.readStreamToString(is);
is = IOUtils.byteArrayConvertInputStream(baos);
//回写流操作,否则APP无法拿到数据进行展示
//首先通过反射构造InputStreamSubject对象
Class<?> inputSubject = XposedHelpers.findClass("com.sankuai.meituan.retrofit2.InputStreamSubject", context.getClassLoader());
Constructor<?> inputSubjectConst = inputSubject.getConstructor(InputStream.class);
Object inputSubjectObject = inputSubjectConst.newInstance(is);
//构造对象写回数据
Field subject = rawResponse.getClass().getDeclaredField("inputStreamSubject");
subject.setAccessible(true);
subject.set(rawResponse, inputSubjectObject);
baos.close();
if(MyThreadLocal.getInstance().get() != null) {
MyThreadLocal.getInstance().set(str);
}
}
}
}
});
//保存rd.j对象
XposedHelpers.findAndHookMethod("com.sankuai.waimai.platform.capacity.network.retrofit.b",
context.getClassLoader(),
"a",
XposedHelpers.findClass("rx.d", context.getClassLoader()),
XposedHelpers.findClass("rx.j", context.getClassLoader()),
Object.class,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
rx_jObject = param.args[1];
}
}
);
XposedHelpers.findAndHookMethod("com.sankuai.waimai.platform.capacity.network.retrofit.b",
context.getClassLoader(),
"a",
Class.class,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
if (param.args[0].toString().contains("com.sankuai.waimai.business.page.home.model.API")){
//保存接口实现对象...
Log.e("EDXposed","已获得 ApiService 对象的实现类对象");
meituanApiClassObject = param.getResult();
}
}
});
XposedHelpers.findAndHookMethod("com.sankuai.waimai.store.base.net.sg.a",
context.getClassLoader(),
"a",
Object.class,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
Log.e("EDXposed",param.args[0].toString());
Object resObj = param.getResult();
Log.e("EDXposed", "已获得 SCApiService 对象的实现类对象" + param.args[0].toString());
if (param.args[0].toString().contains("PoiVerticalityHomeActivity")) {
Field f = resObj.getClass().getField("b");
resObj = f.get(resObj);
Log.e("EDXposed",resObj.getClass().getName());
for (Method m : resObj.getClass().getDeclaredMethods()){
Log.e("EDXposed",m.getName());
}
meituanSCApiClassObject = resObj;
}
}
});
}
0x002. 以上代码包含启动http服务,接下来就是开放http的服务提供api接口来访问了,代码如下:
package com.o2o.http.api;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import com.lody.virtual.client.NativeEngine;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import de.robv.android.xposed.XposedHelpers;
import fi.iki.elonen.NanoHTTPD;
import io.busniess.va.delegate.MyComponentDelegate;
public class MeiTuanServer extends NanoHTTPD {
public MeiTuanServer(int port){
super(port);
}
public MeiTuanServer(String hostname, int port) {
super(hostname, port);
}
/**
* 美团流程处理
*
* @param session
* @return
* @throws Exception
*/
//开放http服务请求到这里
@Override
public Response serve(IHTTPSession session){
Method requestMethod = session.getMethod();
Map<String, String> header = session.getHeaders();
Map<String, String> parameters = session.getParms();
InputStream in = HttpServer.class.getResourceAsStream(session.getUri());
String uri = session.getUri().substring(1);
StringBuffer sb = new StringBuffer();
Map<String,Object> responseMap = new HashMap<>();
//获取当前定位下的美食分类数据 接口实现类 API 对象
// Object meituanApiClassObject = MyComponentDelegate.meituanApiClassObject;
//获得超市便利等下的分类接口的实现类对象 SCApi 对象
// MyComponentDelegate.meituanSCApiClassObject;
String method = parameters.get("method");
String str = "{\"msg\":\"未知方法名称\",\"method\":\""+method+"\",\"code\":300}";
if(NanoHTTPD.Method.GET.equals(requestMethod)) {
MyThreadLocal.getInstance().set("getHttpResult");
if (method.equals("category")) {
try {
java.lang.reflect.Method m = MyComponentDelegate.meituanApiClassObject.getClass().getDeclaredMethod("getHomeNewRcmdboard",
int.class,
String.class,
String.class,
String.class,
String.class,
String.class,
String.class,
int.class,
String.class);
//获取返回结果对象,res.a.call 反射调用 请求就发出去了
Object res = m.invoke(MyComponentDelegate.meituanApiClassObject, 0, "", "", null, null, null, "", 0, "");
//获取参数2 回调函数, 返回的数据会在 rx_jObject 下的onNext的回调函数中传入
Object rx_jObject = MyComponentDelegate.rx_jObject;
Field d = res.getClass().getDeclaredField("a");
d.setAccessible(true);
Object a = d.get(res);
java.lang.reflect.Method m1 = a.getClass().getDeclaredMethod("call", XposedHelpers.findClass("rx.j", MyComponentDelegate.classLoader));
m1.setAccessible(true);
m1.invoke(a, rx_jObject);
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getName());
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getMethods().length);
str = MyThreadLocal.getInstance().get();
} catch (Exception e) {
e.printStackTrace();
Log.e("EDXposed", e.getLocalizedMessage());
}
Log.e("EDXposed", "----====----====----====----====----====----====----====----");
} else if (method.equals("sonCategory")) {
String categoryId = parameters.get("categoryId");
try {
java.lang.reflect.Method m = MyComponentDelegate.meituanSCApiClassObject.getClass().getDeclaredMethod("getQuickBuyHomeNew",
String.class,
String.class,
long.class,
String.class,
String.class,
String.class,
String.class);
Log.e("EDXposed","meituanSCApiClassObject == null :" + (MyComponentDelegate.meituanSCApiClassObject == null) );
Log.e("EDXposed","rx_jObject == null :" + ( MyComponentDelegate.rx_jObject == null) );
//获取返回结果对象,res.a.call 反射调用 请求就发出去了
Object res = m.invoke(MyComponentDelegate.meituanSCApiClassObject, categoryId, "0", 0, "", "", null, "");
//获取参数2 回调函数, 返回的数据会在 rx_jObject 下的onNext的回调函数中传入
Object rx_jObject = MyComponentDelegate.rx_jObject;
Field d = res.getClass().getDeclaredField("a");
d.setAccessible(true);
Object a = d.get(res);
java.lang.reflect.Method m1 = a.getClass().getDeclaredMethod("call", XposedHelpers.findClass("rx.j", MyComponentDelegate.classLoader));
m1.setAccessible(true);
m1.invoke(a, rx_jObject);
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getName());
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getMethods().length);
str = MyThreadLocal.getInstance().get();
} catch (Exception e) {
e.printStackTrace();
Log.e("EDXposed", e.getLocalizedMessage());
}
Log.e("EDXposed", "----====----====----====----====----====----====----====----");
} else if (method.equals("shopListCategory")) {
String categoryType = parameters.get("categoryType");
String page = parameters.get("page");
try {
java.lang.reflect.Method m = MyComponentDelegate.meituanSCApiClassObject.getClass().getDeclaredMethod("getPoiVerticalitylistNew",
long.class,
String.class,
long.class,
int.class,
long.class,
long.class,
String.class,
String.class,
String.class,
int.class,
String.class,
String.class,
String.class,
int.class,
int.class,
int.class);
//获取返回结果对象,res.a.call 反射调用 请求就发出去了
/**
* @Field("category_type") long j 参数值:102603
* @Field("second_category_type") String str 参数值:0 默认值
* @Field("page_index") long j2 参数值:0
* @Field("page_size") int i 参数值:20
* @Field("navigate_type") long j3 参数值:102603
* @Field("sort_type") long j4 参数值:0 参数 排序 1为销量排序,2为配送速度排序
* @Field("rank_trace_id") String str2 参数值:null
* @Field("session_id") String str3 参数值:4386694b-6fbe-4f8a-8b79-9054707d00481606627897162354
* @Field("union_id") String str4 参数值:c872330147a049b1b4dd7289d5bfe0b6a160616579659223891
* @Field("is_home_page") int i2 参数值:0
* @Field("activity_filter_codes") String str5 参数值:null
* @Field("pageSource") String str6 参数值:sg_homepage
* @Field("spu_filter_codes") String str7 参数值:null
* @Field("template_code") int i3 参数值:0
* @Field("request_type") int i4 参数值:0
* @Field("is_partial_refresh") int i5 参数值:0
*/
Log.e("EDXposed","meituanSCApiClassObject == null :" + (MyComponentDelegate.meituanSCApiClassObject == null) );
Log.e("EDXposed","rx_jObject == null :" + ( MyComponentDelegate.rx_jObject == null) );
Object res = m.invoke(MyComponentDelegate.meituanSCApiClassObject,
Long.valueOf(categoryType), "0", Long.valueOf(page) - 1, 20,
Long.valueOf(categoryType), 0,
null, "", "", 1, null, "sg_homepage", null, 0, 0, 0);
//获取参数2 回调函数, 返回的数据会在 rx_jObject 下的onNext的回调函数中传入
Object rx_jObject = MyComponentDelegate.rx_jObject;
Field d = res.getClass().getDeclaredField("a");
d.setAccessible(true);
Object a = d.get(res);
java.lang.reflect.Method m1 = a.getClass().getDeclaredMethod("call", XposedHelpers.findClass("rx.j", MyComponentDelegate.classLoader));
m1.setAccessible(true);
m1.invoke(a, rx_jObject);
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getName());
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getMethods().length);
str = MyThreadLocal.getInstance().get();
} catch (Exception e) {
Log.e("EDXposed", e.getLocalizedMessage());
e.printStackTrace();
}
Log.e("EDXposed", "----====----====----====----====----====----====----====----");
} else if (method.equals("shopMenu")) {
String poiId = parameters.get("poiId");
/**
* @Field("wm_poi_id") long j 参数1:1053887408869739
* @Field("product_spu_id") Long l 参数2:null
* @Field("page_index") int i 参数3:0
* @Field("tag_id") Long l2 参数4:-1
* @Field("extra") String str 参数5:{"source_id":"2"}
*/
try {
Log.e("EDXposed","meituanSCApiClassObject == null :" + (MyComponentDelegate.meituanSCApiClassObject == null) );
Log.e("EDXposed","rx_jObject == null :" + ( MyComponentDelegate.rx_jObject == null) );
java.lang.reflect.Method m = MyComponentDelegate.meituanSCApiClassObject.getClass().getDeclaredMethod("getShopMenu",
long.class,
Long.class,
int.class,
Long.class,
String.class);
Object res = m.invoke(MyComponentDelegate.meituanSCApiClassObject,
Long.valueOf(poiId), null, 0, -1L,
"{\"source_id\":\"1\"}");
//获取参数2 回调函数, 返回的数据会在 rx_jObject 下的onNext的回调函数中传入
Object rx_jObject = MyComponentDelegate.rx_jObject;
Field d = res.getClass().getDeclaredField("a");
d.setAccessible(true);
Object a = d.get(res);
java.lang.reflect.Method m1 = a.getClass().getDeclaredMethod("call", XposedHelpers.findClass("rx.j", MyComponentDelegate.classLoader));
m1.setAccessible(true);
m1.invoke(a, rx_jObject);
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getName());
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getMethods().length);
str = MyThreadLocal.getInstance().get();
Log.e("EDXposed","hook返回结果: " + str);
} catch (Exception e) {
Log.e("EDXposed", e.getLocalizedMessage());
e.printStackTrace();
}
}else if (method.equals("getProducts")) {
String poiId = parameters.get("poiId");
String tagCode = parameters.get("tagCode");
String pageNum = parameters.get("pageNum");
String tagType = parameters.get("tagType");
/**
* @Field("page_index") int i 参数1:0
* @Field("spu_tag_id") String str 参数2:act_17_17
* @Field("wm_poi_id") String str2 参数3:1053887408935275
* @Field("tag_type") int i2 参数4:2
* @Field("sort_type") int i3 参数5:1
* @Field("is_support_smooth_render") int i4 参数6:1
* @Field("product_spu_id") long j 参数7:-1
* @Field("brand_ids") String str3 参数8:null
* @Field("extra") String str4 参数9:
* @Field("smooth_render_type") String str5 参数10:0
*/
try {
Log.e("EDXposed","meituanSCApiClassObject == null :" + (MyComponentDelegate.meituanSCApiClassObject == null) );
Log.e("EDXposed","rx_jObject == null :" + ( MyComponentDelegate.rx_jObject == null) );
java.lang.reflect.Method m = MyComponentDelegate.meituanSCApiClassObject.getClass().getDeclaredMethod("getProducts",
int.class,
String.class,
String.class,
int.class,
int.class,
int.class,
long.class,
String.class,
String.class,
String.class);
Object res = m.invoke(MyComponentDelegate.meituanSCApiClassObject,
Integer.valueOf(pageNum) - 1, tagCode, poiId, Integer.valueOf(tagType),
1, 1, -1L, null, "", "0");
//获取参数2 回调函数, 返回的数据会在 rx_jObject 下的onNext的回调函数中传入
Object rx_jObject = MyComponentDelegate.rx_jObject;
Field d = res.getClass().getDeclaredField("a");
d.setAccessible(true);
Object a = d.get(res);
java.lang.reflect.Method m1 = a.getClass().getDeclaredMethod("call", XposedHelpers.findClass("rx.j", MyComponentDelegate.classLoader));
m1.setAccessible(true);
m1.invoke(a, rx_jObject);
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getName());
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getMethods().length);
str = MyThreadLocal.getInstance().get();
} catch (Exception e) {
Log.e("EDXposed", e.getLocalizedMessage());
e.printStackTrace();
}
}else if(method.equals("getProductsByIds")) {
String poiId = parameters.get("poiId");
String tagCode = parameters.get("tagCode");
String tagType = parameters.get("tagType");
String spuIds = parameters.get("spuIds");
String traceId = parameters.get("traceId");
/**
* @Field("wm_poi_id") String strd 参数1: poiId
* @Field("spu_tag_id") String str2d 参数2: spu_tag_id
* @Field("tag_type") int id 参数3: tag_type
* @Field("spuIds") String str3d 参数4: spuIds
* @Field("trace_id") String str4 参数5: trace_id
*/
try {
Log.e("EDXposed","meituanSCApiClassObject == null :" + (MyComponentDelegate.meituanSCApiClassObject == null) );
Log.e("EDXposed","rx_jObject == null :" + ( MyComponentDelegate.rx_jObject == null) );
java.lang.reflect.Method m = MyComponentDelegate.meituanSCApiClassObject.getClass().getDeclaredMethod("getProductsByIds",
String.class,
String.class,
int.class,
String.class,
String.class);
Object res = m.invoke(MyComponentDelegate.meituanSCApiClassObject, poiId, tagCode, Integer.valueOf(tagType), spuIds, traceId);
//获取参数2 回调函数, 返回的数据会在 rx_jObject 下的onNext的回调函数中传入
Object rx_jObject = MyComponentDelegate.rx_jObject;
Field d = res.getClass().getDeclaredField("a");
d.setAccessible(true);
Object a = d.get(res);
java.lang.reflect.Method m1 = a.getClass().getDeclaredMethod("call", XposedHelpers.findClass("rx.j", MyComponentDelegate.classLoader));
m1.setAccessible(true);
m1.invoke(a, rx_jObject);
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getName());
Log.e("EDXposed", "反射调用函数返回值为:" + rx_jObject.getClass().getMethods().length);
str = MyThreadLocal.getInstance().get();
} catch (Exception e) {
Log.e("EDXposed", e.getLocalizedMessage());
e.printStackTrace();
}
}else if(method.equals("searchShopGoods")){
try {
java.lang.reflect.Method m = MyComponentDelegate.postFormRequestObject.getClass().getDeclaredMethod("postFormRequest",Map.class,String.class,Map.class,Map.class);
String poiId = parameters.get("poiId");
String keyword = parameters.get("keyword");
String page_size = parameters.get("pageSize");
String url = "v2/search/inshop/products";
String page_index = String.valueOf(Integer.parseInt(parameters.get("pageIndex"))-1);
Map<String,String> map1 = new HashMap<String,String>();
map1.put("Cat_Extra","");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("cn_pt","RN");
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("sort_type","1");//1销量排序 默认排序
map3.put("poisearch_global_id", "-999");
map3.put("page_index",page_index);
map3.put("tag_id","");
map3.put("filter_types","");
map3.put("keyword",keyword);
map3.put("wmPoiId",poiId);
map3.put("page_size",page_size);
Object res = m.invoke(MyComponentDelegate.postFormRequestObject,map1,url,map2,map3);
m = res.getClass().getDeclaredMethod("execute");
res = m.invoke(res);
m = res.getClass().getDeclaredMethod("body");
res = m.invoke(res);
m = res.getClass().getMethod("toString");
str = (String)m.invoke(res);
} catch (Exception e) {
e.printStackTrace();
}
}else {
str = "{msg:\"未知方法名称,结束~\"}";
}
}else{
str = "{msg:\"暂不支持post方式请求、\"}";
}
return newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "application/json", str);
}
/**
* 将map转换成url
*
* @param map
* @return
*/
public static String getUrlParamsByMap(Map<String, String> map) {
if (map == null) {
return "";
}
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey() + "=" + entry.getValue());
sb.append("&");
}
String s = sb.toString();
if (s.endsWith("&")) {
s = s.substring(0, s.length() - 1);
}
return s;
}
}
0x003. 所有函数调用过程中无需考虑加密,签名等问题,只需要传参数即可,美团APP已经封装好了,只要调用即可自动加上去,给大家看看他的Interface的接口类是如何定义的
(注意他这里是没有实现类的,他用的是动态代理来实现的,所以这里要提前拿到他的动态代理类对象,然后通过反射的方式就可以调用实现类的函数了.)
:
0x004. 他这里调用完返回的是一个d类型的泛型,这个返回值回来的时候 并没有发送发送请求,需要通过反射 得到返回值对象里面的a类型变量,然后通过反射调用a类下的call函数,这样就触发了网络请求,然后通过hook的方式就得到了返回数据,如果需要保证多线程运行,使用ThreadLocal即可,在合适的地方 写入,合适的地方获取就可以了。我上面的代码就是用的这种方式
0x005. 返回值对象
0x006. 通过api就完成了一个请求并且可以获取到返回值,流程通了,接下来就要考虑封设备的问题,我这里用的VirtualApp沙盒来做的,美团上报设备信息如下(125个字段数据):
{
"appVersion": "11.3.402",
"simCountryIso": "unknown",
"amvendor": "bmi160_acc", //字段值
"gss": "ABSENT",
"cpu_core": "8", // cpu核心数量 读取文件 /proc/cpuinfo 遍历
"stgyruntime": 0,
"type": "user", //Build.TYPE
"resolution": "1080*2196", //分辨率 DisplayMetrics v0_1 = this.d.getResources().getDisplayMetrics();
// String v0_2 = v0_1.widthPixels + "*" + v0_1.heightPixels.replace("&", "");
"amname": "ACCELEROMETER",
"hostname": "c5-miui-ota-bd29.bj", //Build.Host
"fingerprint": "Redmi/merlin/merlin:10/QP1A.190711.020/V12.0.5.0.QJOCNXM:user/release-keys",
"model": "M2003J15SC", //Build.MODEL
"id": "QP1A.190711.020",//Build.ID (ro.build.id)
"roam": "0", //TelephonyManager().TelephonyManager().isNetworkRoaming();
"brand": "Redmi", //Build.BRAND ro.product.brand
"hardware": "mt6768", //Build.HARDWARE ro.hardware
"wifi": "1", // hasSystemFeature("android.hardware.wifi") 是否有wifi模块
"dtk_token": "3.2.4.025",
"lightSensor": "{\"name\":\"LIGHT\",\"vendor\":\"stk3x3x_l\",\"data\":[139.0]}",
"ip": "1.1.1.1",
"uevent": "unknown",
"siua-timerand": "fd503507-0d35-42a5-9b14-857cd570e16d",
"timeZone": "[GMT+08:00,Asia/Shanghai]",
"optional": "unknown",
"randomMacAddress": "98:f6:21:58:f6:4d", // NetworkInterface "wlan0" 的mac
"isProxy": "0",
"version": "10",
"tags": "release-keys",
"nearbyBaseStation": "unknown",
"df_uuid": "0000000000000C872330147A049B1B4DD7289D5BFE0B6A160616579659223891", //服务器返回数据
"sdkVersion": "1.1",
"installtime": "1606307852256",
"baseStation": "[]",
"gss2": "unknown",
"device": "merlin",
"suc": "adb",
"photo_hash": "{\"photoList\":[],\"number\":0}",
"wifiList": "[]",
"battery": "[5,100]",
"bluetooth_le": "1",
"localizers": "fetch list error",
"manufacturer": "Xiaomi",
"sus": "adb",
"gvb": "MOLY.LR12A.R3.MP.V98.P57,MOLY.LR12A.R3.MP.V98.P57",
"androidSysApp10": "com.mediatek.ims-com.mediatek.op01.phone.plugin-com.android.cts.priv.ctsshim-com.miui.contentextension-com.android.internal.display.cutout.emulation.corner-com.android.internal.display.cutout.emulation.double-com.android.providers.telephony-com.android.dynsystem-com.miui.powerkeeper-com.goodix.fingerprint",
"gvri": "android reference-ril 1.0",
"prop": "1230768000000",
"IMSI": "unknown",
"dpi": "440",
"timestamp": "1607504054517",
"networkCountryIso": "cn",
"product": "merlin",
"phoneType": "unknown",
"business": "bus",
"ch": "MTGuard",
"usb_access": "1",
"coordinates": "unknown",
"startupTime": "1607337157",
"userAgent": "Dalvik/2.1.0 (Linux; U; Android 10; M2003J15SC MIUI/V12.0.5.0.QJOCNXM)",
"totalMemory": "3936903168",
"availableMemory": "1147514880",
"debuggable": "0",
"sensorList": "9578f8de16885018417f98cf9fcd3e7e", //传感器列表数据 MD5 自己写了小APP 相同手机得出结果一致
"runningList": "unknown",
"firstlaunchtime": "1607504054333",
"board": "merlin",
"magic": "3.2.4.025",
"cpuUsage": "unknown",
"existPipe": "0",
"voiceMailNumber": "unknown",
"dpid": "3.2.4.025",
"language": "zh",
"source": "MTGuard",
"secure": "1",
"radio": "unknown",
"gps_location": "1",
"existQemu": "0",
"androidAppCnt": "295",
"music_hash": "{\"hashInfo\":[],\"number\":0}",
"isVPN": "1",
"androidId": "f75374e82580de95",
"sim_mobile": "unknown",
"dataState": "0",
"nfc": "0",
"batterychange": "1",
"telephony": "1",
"gravendor": "MTK",
"region": "CN",
"dataActivity": "0",
"stgyspitep": "0",
"app_dection": "AA==\n",
"simSerialNumber": "unknown",
"platform": "android",
"wifiMacAddress": "unknown",
"availableSD": "101505351680",
"wi": "wlan0",
"displayRom": "AL2522-Merlin-V101-Q-0811",
"graname": "GRAVITY",
"bootloader": "unknown",
"totalSD": "112736419840",
"rooted": "1",
"packageName": "com.sankuai.meituan",
"networkType": "WIFI",
"misc": "ad921d60486366258809553a3db49a4a",
"temp": "0",
"psuc": "adb",
"cpufreq": "1800000", //cpu频率 读取文件 /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
"appCache": "340744",
"IMEI": "unknown", //高版本系统无法获取
"androidApp10": "com.miui.screenrecorder-com.mi.liveassistant-com.sollyu.xposed.hook.model-com.zx.Justmeplush-com.sankuai.meituan-com.github.kr328.clash-com.ss.android.ugc.aweme.lite-io.busniess.va-com.baidu.input_mi-com.miui.userguide",
"isSupportBluetooth": "1",
"stgysimulatorinfo": "AAAA",
"mno": "unknown",
"availableSystem": "101505351680",
"voltage": "0",
"cpuABI": "arm64-v8a,armeabi-v7a,armeabi",
"brightness": "1.745098",
"kernel_version": "unknown",
"bluetooth": "unknown",
"serial": "unknown",
"currentWifi": "[{\"bssid\":\"\",\"ssid\":\"\",\"rssi\":-47}]",
"systemVolume": "0",
"totalSystem": "112736419840",
"user": "builder",
"account": "ad921d60486366258809553a3db49a4a"
}
0x007. 改机需要修改java层和so层,so层主要是通过 __system_property_get函数来获取的,hook这个函数,还有java层通过反射写入BUILD类下的字段,还会读取系统文件等,全部都要构造后才可使设备为新设备:
0x008. 以下为示例设备信息,将会在so和java层全部完成替换,so层的hook代码就不发出来了,强调以下传感器的值也挺重要的:
{
"cpuInfo": "Processor\t: AArch64 Processor rev 0 (aarch64)\nprocessor\t: 0\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd05\nCPU revision\t: 0\n\nprocessor\t: 1\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd05\nCPU revision\t: 0\n\nprocessor\t: 2\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd05\nCPU revision\t: 0\n\nprocessor\t: 3\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd05\nCPU revision\t: 0\n\nprocessor\t: 4\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x48\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd40\nCPU revision\t: 0\n\nprocessor\t: 5\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x48\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd40\nCPU revision\t: 0\n\nprocessor\t: 6\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x48\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd40\nCPU revision\t: 0\n\nprocessor\t: 7\nmodel name\t: ARMv8 Processor rev 0 (v8l)\nBogoMIPS\t: 3.84\nFeatures\t: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x48\nCPU architecture: 8\nCPU variant\t: 0x1\nCPU part\t: 0xd40\nCPU revision\t: 0\n\nHardware\t: Hisilicon Kirin980\n",
"fingerprint": {},
"memInfo": "MemTotal: 7722844 kB\nMemFree: 325096 kB\nMemAvailable: 2262376 kB\nBuffers: 3748 kB\nCached: 2156928 kB\nSwapCached: 37760 kB\nActive: 2344736 kB\nInactive: 1613000 kB\nActive(anon): 1546544 kB\nInactive(anon): 470256 kB\nActive(file): 798192 kB\nInactive(file): 1142744 kB\nUnevictable: 158832 kB\nMlocked: 158832 kB\nSwapTotal: 4194300 kB\nSwapFree: 1900464 kB\nDirty: 1988 kB\nWriteback: 0 kB\nAnonPages: 1948520 kB\nMapped: 667604 kB\nShmem: 70012 kB\nSlab: 630756 kB\nSReclaimable: 238712 kB\nSUnreclaim: 392044 kB\nKernelStack: 125200 kB\nPageTables: 133932 kB\nNFS_Unstable: 0 kB\nBounce: 0 kB\nWritebackTmp: 0 kB\nCommitLimit: 8055720 kB\nCommitted_AS: 137772920 kB\nVmallocTotal: 263061440 kB\nVmallocUsed: 0 kB\nVmallocChunk: 0 kB\nCmaTotal: 1310720 kB\nCmaFree: 49532 kB\nIonTotalCache: 0 kB\nIonTotalUsed: 327972 kB\nRsvTotalUsed: 412676 kB\n",
"properties": {
"aaudio.mmap_exclusive_policy": "1",
"aaudio.mmap_policy": "2",
"bastet.service.enable": "true",
"bg_fsck.pgid": "473",
"bt.dpbap.enable": "1",
"bt.max.hfpclient.connections": "2",
"com.ss.android.article.news": "tt_huawei2019_yz",
"config.disable_consumerir": "false",
"config.hw.power.saving.always.netconnect": "false",
"config.hw.power.saving.autoquit": "false",
"dalvik.vm.appimageformat": "lz4",
"dalvik.vm.boot-dex2oat-threads": "4",
"dalvik.vm.checkjni": "false",
"dalvik.vm.dex2oat-Xms": "64m",
"dalvik.vm.dex2oat-Xmx": "512m",
"dalvik.vm.dex2oat-max-image-block-size": "1048576",
"dalvik.vm.dex2oat-minidebuginfo": "true",
"dalvik.vm.dex2oat-resolve-startup-strings": "true",
"dalvik.vm.dex2oat-threads": "4",
"dalvik.vm.dexopt.secondary": "true",
"dalvik.vm.heapgrowthlimit": "384m",
"dalvik.vm.heapmaxfree": "8m",
"dalvik.vm.heapminfree": "2m",
"dalvik.vm.heapsize": "512m",
"dalvik.vm.heapstartsize": "8m",
"dalvik.vm.heaptargetutilization": "0.75",
"dalvik.vm.image-dex2oat-Xms": "64m",
"dalvik.vm.image-dex2oat-Xmx": "64m",
"dalvik.vm.image-dex2oat-threads": "4",
"dalvik.vm.isa.arm.features": "default",
"dalvik.vm.isa.arm.variant": "cortex-a15",
"dalvik.vm.isa.arm64.features": "default",
"dalvik.vm.isa.arm64.variant": "generic",
"dalvik.vm.minidebuginfo": "true",
"dalvik.vm.stack-trace-file": "/data/anr/traces.txt",
"dalvik.vm.usejit": "true",
"dalvik.vm.usejitprofiles": "true",
"debug.atrace.tags.enableflags": "0",
"debug.force_rtl": "false",
"debug.sf.disable_backpressure": "1",
"debug.sf.latch_unsignaled": "1",
"dev.bootcomplete": "1",
"dev.mnt.blk.cache": "sdd",
"dev.mnt.blk.cust": "dm-7",
"dev.mnt.blk.data": "sdd",
"dev.mnt.blk.hw_product": "dm-8",
"dev.mnt.blk.mnt.hisee_fs": "sdd",
"dev.mnt.blk.mnt.modem.mnvm2:0": "sdd",
"dev.mnt.blk.mnt.modem.modem_secure": "sdd",
"dev.mnt.blk.odm": "dm-9",
"dev.mnt.blk.patch_hw": "dm-5",
"dev.mnt.blk.preas": "dm-10",
"dev.mnt.blk.preavs": "dm-11",
"dev.mnt.blk.preload": "dm-12",
"dev.mnt.blk.prets": "dm-13",
"dev.mnt.blk.pretvs": "dm-14",
"dev.mnt.blk.root": "dm-6",
"dev.mnt.blk.sec_storage": "sdd",
"dev.mnt.blk.splash2": "sdd",
"dev.mnt.blk.vendor": "dm-15",
"dev.mnt.blk.vendor.modem.modem_driver": "dm-16",
"dev.mnt.blk.vendor.modem.modem_fw": "sdd",
"dev.mnt.blk.version": "dm-17",
"drm.service.enabled": "true",
"fw.max_users": "4",
"fw.show_multiuserui": "1",
"gsm.RBActivated0": "",
"gsm.RBActivated1": "",
"gsm.current.phone-type": "1,1",
"gsm.data.gsm_only_not_allow_ps": "false,false",
"gsm.default.apn": "3gnet",
"gsm.defaultpdpcontext.active": "true",
"gsm.dualcards.switch": "false",
"gsm.huawei.RemindDataService": "false",
"gsm.huawei.RemindDataService_1": "false",
"gsm.hw.cust.ecclist0": "000,08,118,110,119,120,122,999",
"gsm.hw.cust.ecclist1": "000,08,118,110,119,120,122,999",
"gsm.hw.matchnum": "11",
"gsm.hw.matchnum.short": "11",
"gsm.hw.matchnum.short0": "11",
"gsm.hw.matchnum.short1": "11",
"gsm.hw.matchnum.vmn_shortcode": "0",
"gsm.hw.matchnum0": "11",
"gsm.hw.matchnum1": "11",
"gsm.hw.operator.iso-country": "cn",
"gsm.hw.operator.isroaming": "false",
"gsm.hw.operator.numeric": "46000",
"gsm.hw.operator.numeric.old": "46000",
"gsm.modem.version.baseband": "21C20B379S000C000,21C20B379S000C000",
"gsm.national_roaming.apn": "46003",
"gsm.network.type": "LTE,LTE",
"gsm.nitz.time": "1598321150017",
"gsm.nitz.timereference": "805414015",
"gsm.nvcfg.resetrild": "0",
"gsm.nvcfg.rildrestarting": "0",
"gsm.operator.alpha": "中国移动,中国联通",
"gsm.operator.alpha.vsim": "",
"gsm.operator.iso-country": "cn,cn",
"gsm.operator.iso-country.vsim": "",
"gsm.operator.isroaming": "false,false",
"gsm.operator.numeric": "46000,46001",
"gsm.operator.numeric.vsim": "",
"gsm.rssi.sim1": "-100",
"gsm.rssi.sim2": "-83",
"gsm.sigcust.configured": "true",
"gsm.sim.hw_atr": "3B9F95801FC38031E073FE21135786810286984418A8",
"gsm.sim.hw_atr1": "3B9C95801FC78031E073FE21136420C0300F04",
"gsm.sim.num.pin": "3",
"gsm.sim.num.pin2": "3",
"gsm.sim.num.puk": "10",
"gsm.sim.num.puk2": "10",
"gsm.sim.num.simlock": "-1,-1,-1,-1",
"gsm.sim.operator.alpha": "CMCC,China Unicom",
"gsm.sim.operator.iso-country": "cn,cn",
"gsm.sim.operator.numeric": "46007,46001",
"gsm.sim.preiccid_0": "898600D",
"gsm.sim.preiccid_1": "8986011",
"gsm.sim.state": "LOADED,LOADED",
"gsm.sim.updatenitz": "1",
"gsm.sim1.num.simlock": "-1,-1,-1,-1",
"gsm.sim1.type": "20",
"gsm.sim2.type": "20",
"gsm.singlepdp.hplmn.matched0": "false",
"gsm.singlepdp.hplmn.matched1": "false",
"gsm.slot1.num.pin1": "3",
"gsm.slot1.num.pin2": "3",
"gsm.slot1.num.puk1": "10",
"gsm.slot1.num.puk2": "10",
"gsm.slot2.num.pin1": "3",
"gsm.slot2.num.pin2": "3",
"gsm.slot2.num.puk1": "10",
"gsm.slot2.num.puk2": "10",
"gsm.sms.max.message.size": "0",
"gsm.sms.to.mms.textthreshold": "0",
"gsm.version.baseband": "21C20B379S000C000,21C20B379S000C000",
"gsm.version.ril-impl": "android infineon balong-ril 1.0",
"gsm.vsim.state": "ABSENT",
"hilog.tag": "I",
"hsdf.keyguard.disable_musicsport_style": "false",
"hw.config.show_am_pm": "true",
"hw.hicure.dns_fail_count": "134",
"hw.lcd.density": "480",
"hw.pc.support.app.projection": "true",
"hw.wifipro.dns_fail_count": "1",
"hw.wifipro.uid_dns_fail_count": "10130-28/10025-5/1000-2/10244-2/1001-2/10052-52/10081-3/10148-116",
"hw_emui_hwperf_all_prop": "1 1 0 1 0,3000:30000:12000 -1 ",
"hw_mc.connectivity.airplane_enable_wifi_bt": "0",
"hw_mc.deskclock.enable_alarmring": "true",
"hw_mc.feature.accelerate_sliding": "true",
"hw_mc.gallery3d.decode_hme": "true",
"hw_mc.hicall.screensharing": "true",
"hw_mc.launcher.disable_back_hotzone_fullscreen": "true",
"hw_mc.multidevice.fams_enable": "true",
"hw_mc.multiscreen.castfeature_enable": "true",
"hw_mc.multiscreen.collaboration.value": "3",
"hw_mc.multiscreen.mdms.value": "1",
"hw_mc.settings.new_navi_show": "false",
"hw_mc.telephony.rat_changed_delay": "true",
"hw_sc.foreground_data_opt_enable": "true",
"hw_sc.only_ipv6_allowed_cure": "true",
"hwouc.hwpatch.version": "10.1.0.163(C00E160R1P8patch01)",
"hwouc.update_engine.times": "0",
"hwouc.update_engine.up": "false",
"hwservicemanager.ready": "true",
"init.svc.AGPService": "running",
"init.svc.CameraDaemon": "running",
"init.svc.activityrecognition_1_1": "running",
"init.svc.adbd": "stopped",
"init.svc.apexd": "running",
"init.svc.apexd-bootstrap": "stopped",
"init.svc.applogcat": "stopped",
"init.svc.aptouch": "running",
"init.svc.ashmemd": "running",
"init.svc.audioserver": "running",
"init.svc.bastetd": "running",
"init.svc.bms_auth": "stopped",
"init.svc.bms_event": "running",
"init.svc.bms_limit": "stopped",
"init.svc.bms_limit_n": "stopped",
"init.svc.bms_soc": "stopped",
"init.svc.bootanim": "stopped",
"init.svc.bpfloader": "stopped",
"init.svc.bsoh": "running",
"init.svc.cameraserver": "running",
"init.svc.chargelogcat": "stopped",
"init.svc.chargemonitor": "stopped",
"init.svc.cust_from_init": "stopped",
"init.svc.display-hal-1-0": "running",
"init.svc.displayengine-hal-1-2": "running",
"init.svc.displayservice": "running",
"init.svc.distributedfiledaemon": "running",
"init.svc.distributedfileservice": "stopped",
"init.svc.dms-hal-1-0": "running",
"init.svc.dpeservice": "running",
"init.svc.drm": "running",
"init.svc.dubai-hal-1-1": "running",
"init.svc.dubaid": "running",
"init.svc.emcomd": "running",
"init.svc.eventslogcat": "stopped",
"init.svc.face_hal": "running",
"init.svc.fm-1-0": "running",
"init.svc.fps_hal_ext": "running",
"init.svc.fusd": "running",
"init.svc.gatekeeperd": "running",
"init.svc.gpsdaemon": "stopped",
"init.svc.gpu": "running",
"init.svc.hal_gnss_service_2-0": "running",
"init.svc.hdbd": "stopped",
"init.svc.health-hal-2-0": "running",
"init.svc.healthd": "running",
"init.svc.hiaiserver": "running",
"init.svc.hiapplogcat": "stopped",
"init.svc.hidl_memory": "running",
"init.svc.hignss": "running",
"init.svc.hilog": "stopped",
"init.svc.hinetmanager": "running",
"init.svc.hisecd": "running",
"init.svc.hisi_bfg": "stopped",
"init.svc.hiview": "running",
"init.svc.hivrar-hal-2-1": "running",
"init.svc.hivrarserver": "running",
"init.svc.hwcinterface-1-0": "running",
"init.svc.hwemerffu": "stopped",
"init.svc.hwfactoryinterface-hal-1-1": "running",
"init.svc.hwfs-hal-1-0": "running",
"init.svc.hwhiview-hal-1-1": "running",
"init.svc.hwinit_check": "stopped",
"init.svc.hwnffearly": "stopped",
"init.svc.hwpged": "running",
"init.svc.hwrme": "running",
"init.svc.hwsched-1-0": "running",
"init.svc.hwsecurity-hal": "running",
"init.svc.hwservicemanager": "running",
"init.svc.iGraphicsservice": "running",
"init.svc.idmap2d": "running",
"init.svc.incidentd": "running",
"init.svc.inputlogcat": "stopped",
"init.svc.installd": "running",
"init.svc.iorapd": "stopped",
"init.svc.isplogcat": "stopped",
"init.svc.jpegdec-1-0": "running",
"init.svc.keystore": "running",
"init.svc.kmsglogcat": "stopped",
"init.svc.libteec-3-0": "running",
"init.svc.light-ext-hal-2-0": "running",
"init.svc.lmkd": "running",
"init.svc.logd": "running",
"init.svc.logd-auditctl": "stopped",
"init.svc.logd-reinit": "stopped",
"init.svc.macaddr": "stopped",
"init.svc.media": "running",
"init.svc.media.swcodec": "running",
"init.svc.mediacomm@2.1-service": "running",
"init.svc.mediadrm": "running",
"init.svc.mediaextractor": "running",
"init.svc.mediametrics": "running",
"init.svc.modem_driver": "stopped",
"init.svc.modemchr_service": "running",
"init.svc.motion-hal-1-0": "running",
"init.svc.mygote": "running",
"init.svc.netd": "running",
"init.svc.nfc_hal_ext_service": "running",
"init.svc.nfc_hal_service": "stopped",
"init.svc.oam_hisi": "running",
"init.svc.octty": "running",
"init.svc.odmf-data-chgrp": "stopped",
"init.svc.oeminfo_nvm": "running",
"init.svc.perfgenius-hal-2-0": "running",
"init.svc.pmom": "running",
"init.svc.power-hw-hal-1-0": "running",
"init.svc.powerct": "running",
"init.svc.powerlogd": "running",
"init.svc.restart_xlogcat_service": "stopped",
"init.svc.rillogcat": "stopped",
"init.svc.secure_element_hal_service": "running",
"init.svc.sensors-hal-1-1_hw": "running",
"init.svc.servicemanager": "running",
"init.svc.shlogd": "stopped",
"init.svc.sleeplogcat": "stopped",
"init.svc.sop-hal-1-0": "stopped",
"init.svc.statsd": "running",
"init.svc.storage_info": "restarting",
"init.svc.storaged": "running",
"init.svc.surfaceflinger": "running",
"init.svc.system_suspend": "running",
"init.svc.teeauth": "running",
"init.svc.teecd": "running",
"init.svc.teelogcat": "stopped",
"init.svc.thermal-daemon": "running",
"init.svc.tombstoned": "running",
"init.svc.tp-hal-1-0": "running",
"init.svc.turbozoned": "stopped",
"init.svc.ueventd": "running",
"init.svc.uniperf-hal-1-0": "running",
"init.svc.unrmd": "running",
"init.svc.update_engine": "stopped",
"init.svc.usb_port": "stopped",
"init.svc.usbd": "stopped",
"init.svc.vdecoderservice": "running",
"init.svc.vibrator-HW-1-1": "running",
"init.svc.vndservicemanager": "running",
"init.svc.vold": "running",
"init.svc.wifi_ext": "running",
"init.svc.wificond": "running",
"init.svc.wpa_supplicant": "stopped",
"init.svc.xlogcat_service": "stopped",
"init.svc.xlogctl_service": "stopped",
"init.svc.zygote": "running",
"init.svc.zygote_secondary": "running",
"itouch.predict_opt": "0",
"keyguard.no_require_sim": "true",
"log.flowctrl.1": "27eccdc0F7acb586d020b770f20",
"log.tag.APM_AudioPolicyManager": "D",
"log.tag.stats_log": "I",
"net.bt.name": "Android",
"net.dns1": "221.3.131.11",
"net.dns2": "2408:876c::8888",
"net.hostname": "HUAWEI_Mate_20_Pro_(UD)-c",
"net.ntp.time": "1597515895466",
"net.ntp.timereference": "159154",
"net.qtaguid_enabled": "1",
"net.rmnet0.dns1": "221.3.131.11",
"net.tcp.default_init_rwnd": "60",
"net.wifi.selfcuring": "0",
"nfc.initialized": "true",
"nfc.node": "/dev/pn544",
"partition.cust.verified": "2",
"partition.hw_product.verified": "2",
"partition.modem_driver.verified": "2",
"partition.odm.verified": "2",
"partition.preas.verified": "2",
"partition.preavs.verified": "2",
"partition.preload.verified": "2",
"partition.prets.verified": "2",
"partition.pretvs.verified": "2",
"partition.system.verified": "2",
"partition.vendor.verified": "2",
"partition.version.verified": "2",
"persist.bt.max.a2dp.connections": "2",
"persist.config.lower_buffer_num_enable": "true",
"persist.config.pcm_data_size": "50",
"persist.deep.theme_0": "",
"persist.jank.gameskip": "true",
"persist.kirin.touch_move_opt": "1",
"persist.kirin.touch_vsync_opt": "1",
"persist.kirin.touchevent_opt": "1",
"persist.log.tag": "I",
"persist.media.lowlatency.enable": "true",
"persist.radio.apm_sim_not_pwdn": "1",
"persist.radio.commril_mode": "HISI_CGUL_MODE",
"persist.radio.cur_dend_cause": "2816",
"persist.radio.defdualltecap": "1",
"persist.radio.defdualsimltemenu": "true",
"persist.radio.disconnectCode": "16",
"persist.radio.dualltecap": "1",
"persist.radio.findmyphone": "0",
"persist.radio.incalldata": "true",
"persist.radio.last_phone_type": "GSM,GSM",
"persist.radio.lte_enabled": "true",
"persist.radio.modem.cap": "09B9D72",
"persist.radio.modem0_imsswitch": "1",
"persist.radio.modem1_imsswitch": "1",
"persist.radio.modem2_imsswitch": "2",
"persist.radio.multisim.config": "dsds",
"persist.radio.nitz_hw_name": "",
"persist.radio.nitz_hw_name1": "",
"persist.radio.nvcfg_file": "CUCC_CN.bin",
"persist.radio.previousopcode0": "46007",
"persist.radio.previousopcode1": "46001",
"persist.radio.procsetdata": "com.android.systemui",
"persist.radio.request_shutdown": "true",
"persist.radio.usersetdata": "true",
"persist.service.hdb.enable": "true",
"persist.service.tm2.tofile": "false",
"persist.sys.addview.config": "1",
"persist.sys.adoptable": "force_on",
"persist.sys.appstart.enable": "true",
"persist.sys.appstart.sync": "false",
"persist.sys.aps.defaultWidth": "1440",
"persist.sys.aps.firstboot": "0",
"persist.sys.audio_mode": "0",
"persist.sys.aware.compile.prop.num": "3",
"persist.sys.aware.compile.prop.time": "1598277254",
"persist.sys.boost.byeachfling": "true",
"persist.sys.boost.durationms": "1000",
"persist.sys.boost.skipframe": "3",
"persist.sys.cpuset.enable": "1",
"persist.sys.cpuset.subswitch": "1912336",
"persist.sys.dalvik.vm.lib.2": "libart.so",
"persist.sys.default.res.xres": "1440",
"persist.sys.device_mcc": "460",
"persist.sys.device_provisioned": "1",
"persist.sys.devsched.subswitch": "2815",
"persist.sys.displayinset.top": "0",
"persist.sys.dolby.state": "on",
"persist.sys.dpi": "640",
"persist.sys.dualcards": "true",
"persist.sys.enable_iaware": "true",
"persist.sys.fast_h_duration": "2000",
"persist.sys.fast_h_max": "50",
"persist.sys.fingerpressnavi": "0",
"persist.sys.fingersense": "1",
"persist.sys.getvolumelist.cache": "true",
"persist.sys.gms.uid": "10025,",
"persist.sys.gps.lpp": "0",
"persist.sys.hardcoder.name": "resmon|16",
"persist.sys.hiview.base_version": "LYA-LGRP1-CHN 10.1.0.163",
"persist.sys.hiview.cota_version": "",
"persist.sys.hiview.cust_version": "LYA-AL00-CUST 10.1.0.160(C00)",
"persist.sys.hiview.ecota_version": "",
"persist.sys.hiview.module_version": "SYS.MOD11.0.16.15(G0H2)",
"persist.sys.hiview.onekeycaptur": "0",
"persist.sys.hiview.preload_version": "LYA-AL00-PRELOAD 10.0.0.8(C00R1)",
"persist.sys.huawei.debug.on": "0",
"persist.sys.hw.forcedark_policy": "1",
"persist.sys.hwGpsTimestamp": "1598177896000",
"persist.sys.hwLastSystemTime": "1598177894756",
"persist.sys.hw_screen_freq": "0",
"persist.sys.hwairplanestate": "com.android.deskclock",
"persist.sys.hwpms_error_log": "",
"persist.sys.hwpms_error_reboot_count": "0",
"persist.sys.iaware.appboost.click_duration": "1000",
"persist.sys.iaware.appboost.click_times": "3",
"persist.sys.iaware.appboost.slide_duration": "5000",
"persist.sys.iaware.appboost.slide_times": "16",
"persist.sys.iaware.appboost.switch": "true",
"persist.sys.iaware.appscenerecog.switch": "true",
"persist.sys.iaware.appsdk": "true",
"persist.sys.iaware.blitparallel": "true",
"persist.sys.iaware.cpuenable": "true",
"persist.sys.iaware.intelliclean": "true",
"persist.sys.iaware.jpg_sample_adapt": "1",
"persist.sys.iaware.preloadoptenable": "1",
"persist.sys.iaware.previoushigh": "-1",
"persist.sys.iaware.profile": "true",
"persist.sys.iaware.size.BitmapDeocodeCache": "2048",
"persist.sys.iaware.switch.BitmapDeocodeCache": "true",
"persist.sys.iaware.topa.train": "8",
"persist.sys.iaware.topimcn": "com.tencent.mm",
"persist.sys.iaware.touchdownpreloadenable": "0",
"persist.sys.iaware.vsyncfirst": "true",
"persist.sys.iaware_config_cust": "iaware_cust_LYA-AL00_CN_9_9.1.0.139C00.xml",
"persist.sys.iaware_config_ver": "iaware_config_LYA-AL00_CN_9_9.1.0.139C00.xml",
"persist.sys.iaware_google_conn": "1560064986,0",
"persist.sys.install_no_quota": "1",
"persist.sys.isolated_storage": "true",
"persist.sys.jankenable": "true",
"persist.sys.lastTrafficMeal": "0",
"persist.sys.locale": "zh-Hans-CN",
"persist.sys.logsystem.coredump": "off",
"persist.sys.logsystem.modem": "0",
"persist.sys.logsystem.protohint": "0",
"persist.sys.max_rdh_delay": "0",
"persist.sys.mcc_match_fyrom": "46007,46001",
"persist.sys.module_version_display": "SYS.MOD11.0.16.15(G0H2)",
"persist.sys.module_version_real": "11001615000264",
"persist.sys.navigationbar.mode": "0",
"persist.sys.nvcfg_file0": "CMCC_CN",
"persist.sys.nvcfg_file1": "CUCC_CN",
"persist.sys.nvcfg_file_version0": "",
"persist.sys.nvcfg_file_version1": "",
"persist.sys.opkey0": "46007",
"persist.sys.opkey1": "46001",
"persist.sys.opname0": "CMCC_CN",
"persist.sys.opname1": "CUCC_CN",
"persist.sys.performance": "true",
"persist.sys.powerup_reason": "NORMAL",
"persist.sys.pre_data_sub_autoreg": "1",
"persist.sys.pre_data_sub_ueinfo": "1",
"persist.sys.pre_volte_sub0_state": "1",
"persist.sys.pre_volte_sub0_state_autoreg": "1",
"persist.sys.pre_volte_sub1_state": "1",
"persist.sys.pre_volte_sub1_state_autoreg": "1",
"persist.sys.predns": "false",
"persist.sys.realdpi": "480",
"persist.sys.rog.configmode": "1",
"persist.sys.rog.height": "2340",
"persist.sys.rog.width": "1080",
"persist.sys.root.status": "0",
"persist.sys.screen_soft_rank": "false",
"persist.sys.sdencryption.enable": "true",
"persist.sys.show_incallscreen": "0",
"persist.sys.shut_alarm": "7 1598485500000",
"persist.sys.smart_switch_enable": "true",
"persist.sys.smart_switch_state": "0",
"persist.sys.srms.enable": "true",
"persist.sys.strictmode.disable": "true",
"persist.sys.support_config_ash": "false",
"persist.sys.timezone": "Asia/Shanghai",
"persist.sys.uninstallapk": "1",
"persist.sys.usb.capture": "false",
"persist.sys.usb.config": "hisuite,mtp,mass_storage,hdb",
"persist.sys.version": "101068",
"persist.sys.version_update0": "false",
"persist.sys.version_update1": "false",
"persist.sys.volume.ringIndex": "0",
"persist.sys.webview.vmsize": "133386016",
"persist.sys.zen_mode": "0",
"pm.dexopt.ab-ota": "speed-profile",
"pm.dexopt.bg-dexopt": "speed-profile",
"pm.dexopt.boot": "verify",
"pm.dexopt.first-boot": "quicken",
"pm.dexopt.inactive": "verify",
"pm.dexopt.install": "speed-profile",
"pm.dexopt.shared": "speed",
"reduce.sar.imsi.mnc": "460",
"ril.force_to_set_ecc": "invalid",
"ril.hw_ecclist": "0+112,0+911",
"ril.hw_ecclist1": "0+112,0+911",
"ril.operator.numeric": "46000",
"ro.actionable_compatible_property.enabled": "true",
"ro.adb.btstatus": "valid",
"ro.adb.secure": "1",
"ro.alipay.channel.path": "/preload/LYA-AL00/all/cn/xml/huawei_alipay_antibrush",
"ro.allow.mock.location": "0",
"ro.apex.updatable": "true",
"ro.audio.offload_wakelock": "false",
"ro.baseband": "unknown",
"ro.blight.exempt_app_type": "-1,1,16,24",
"ro.board.boardid": "8423",
"ro.board.boardname": "LAYA_TUGL_VR",
"ro.board.chiptype": "kirin980_cs",
"ro.board.modemid": "37014400",
"ro.board.platform": "kirin980",
"ro.booking.channel.path": "preload/LYA-AL00/all/cn/xml",
"ro.boot.avb_version": "1.1",
"ro.boot.boot_devices": "ff3c0000.ufs",
"ro.boot.dtbo_idx": "274",
"ro.boot.dynamic_partitions": "true",
"ro.boot.flash.locked": "1",
"ro.boot.hardware": "kirin980",
"ro.boot.huawei_vbmeta.digest": "1ad5e7f235f49cd627f683c587ee06886d1ff1abbb39260ce26b8040cdfc2021",
"ro.boot.mode": "normal",
"ro.boot.product.hardware.sku": "LYA-AL00",
"ro.boot.radio.multisim.config": "dsds",
"ro.boot.selinux": "enforcing",
"ro.boot.vbmeta.avb_version": "1.1",
"ro.boot.vbmeta.device_state": "locked",
"ro.boot.vbmeta.digest": "0dea1dfa1f28f649d2eb4e3898bb3b933679ef3260ced4bfc164bc206c8ed3cb",
"ro.boot.vbmeta.hash_alg": "sha256",
"ro.boot.vbmeta.invalidate_on_error": "yes",
"ro.boot.vbmeta.size": "33152",
"ro.boot.vercnt1": "1",
"ro.boot.verifiedbootstate": "green",
"ro.boot.veritymode": "enforcing",
"ro.bootimage.build.date": "Wed Jul 22 21:19:04 CST 2020",
"ro.bootimage.build.date.utc": "1595423944",
"ro.bootimage.build.fingerprint": "kirin980/kirin980/kirin980:10/QP1A.190711.020/root202007222119:user/test-keys",
"ro.bootloader": "unknown",
"ro.bootmode": "normal",
"ro.build.characteristics": "default",
"ro.build.date": "Tue Jul 7 17:46:36 CST 2020",
"ro.build.date.utc": "1594115196",
"ro.build.description": "LYA-AL00-user 10.1.0 HUAWEILYA-AL00 163-CHN-LGRP1 release-keys",
"ro.build.dianping_sourcefile": "/preload/LYA-AL00/all/cn/xml/dpsource.source",
"ro.build.display.id": "LYA-AL00 10.1.0.163(C00E160R1P8)",
"ro.build.fingerprint": "HUAWEI/LYA-AL00/HWLYA:10/HUAWEILYA-AL00/10.1.0.163C00:user/release-keys",
"ro.build.hardware_expose": "true",
"ro.build.hide": "false",
"ro.build.hide.matchers": "10.1.0",
"ro.build.hide.replacements": "10.0.0",
"ro.build.hide.settings": "8;1.8 GHz;2.0GB;11.00 GB;16.00 GB;1920 x 1080;10;4.14.116;10.0.0",
"ro.build.host": "cn-central-1b-3df00c4f21594110733099-2265614059-gsm4l",
"ro.build.hw_emui_api_level": "23",
"ro.build.hw_emui_lite.enable": "false",
"ro.build.id": "HUAWEILYA-AL00",
"ro.build.product": "LYA",
"ro.build.tags": "release-keys",
"ro.build.type": "user",
"ro.build.update_version": "V1_2",
"ro.build.user": "test",
"ro.build.version.all_codenames": "REL",
"ro.build.version.ark": "4",
"ro.build.version.base_os": "",
"ro.build.version.codename": "REL",
"ro.build.version.emui": "EmotionUI_10.1.0",
"ro.build.version.incremental": "10.1.0.163C00",
"ro.build.version.min_supported_target_sdk": "23",
"ro.build.version.preview_sdk": "0",
"ro.build.version.preview_sdk_fingerprint": "REL",
"ro.build.version.release": "10",
"ro.build.version.sdk": "29",
"ro.build.version.security_patch": "2020-07-01",
"ro.camera.sound.not_forced": "true",
"ro.carrier": "unknown",
"ro.cdma.home.operator.numeric": "46003",
"ro.channel.cn.wps.moffice_eng": "oem00172",
"ro.channelId.com.ctrip.appmarket": "9156",
"ro.channelId.com.meituan": "/preload/LYA-AL00/all/cn/xml/mtconfig.ini",
"ro.channelId.taobao": "/preload/LYA-AL00/all/cn/xml/sjtbconfig.ini",
"ro.check.modem_network": "true",
"ro.com.baidu.baidumap": "/preload/LYA-AL00/all/cn/lib64/",
"ro.com.baidu.searchbox": "/preload/LYA-AL00/all/cn/lib64/",
"ro.com.google.clientidbase": "android-huawei",
"ro.com.google.gmsversion": "10_202005",
"ro.com.sina.news": "/preload/LYA-AL00/all/cn/xml/newsConfig.properties",
"ro.com.ss.android.ugc.aweme": "/preload/LYA-AL00/all/cn/xml/huawei_aweme_400_pre_install.config",
"ro.comp.cust_version": "Cust-CHN 10.1.0.1(0001)",
"ro.comp.hl.product_base_version": "LYA-LGRP1-CHN 10.1.0.163",
"ro.comp.hl.product_cust_version": "LYA-AL00-CUST 10.1.0.160(C00)",
"ro.comp.hl.product_preload_version": "LYA-AL00-PRELOAD 10.0.0.8(C00R1)",
"ro.comp.preas_version": "Preas-CHN 10.1.0(0000)",
"ro.comp.preas_version.full": "Preas-CHN 10.1.0(Q)",
"ro.comp.preavs_version": "Preavs 10.1.0(0000)",
"ro.comp.preavs_version.full": "Preavs 10.1.0(Q)",
"ro.comp.prets_version": "Prets 10.1.0(0000)",
"ro.comp.prets_version.full": "Prets 10.1.0(Q)",
"ro.comp.pretvs_version": "Pretvs 10.1.0(0000)",
"ro.comp.pretvs_version.full": "Pretvs 10.1.0(Q)",
"ro.comp.product_version": "Product-LYA 10.1.0(0000)",
"ro.comp.sys_support_vndk": "",
"ro.comp.system_version": "System 10.1.0.68(1GM4)",
"ro.comp.version_version": "Version-LYA-AL00-000001 10.1.0(00MI)",
"ro.confg.hw_systemversion": "System 10.1.0.68(1GM4)",
"ro.config.a2dp_lowLatency": "true",
"ro.config.aiprotection": "true",
"ro.config.alarm_alert": "Forest_Melody.ogg",
"ro.config.amr_wb_show_hd": "true",
"ro.config.ap_24_mimo_on": "false",
"ro.config.aperture_zoom_custom": "1",
"ro.config.app_big_icon_size": "216",
"ro.config.argesture_enable": "1",
"ro.config.arobject_enable": "1",
"ro.config.attach_apn_enabled": "true",
"ro.config.attach_ip_type": "IPV4V6PCSCF",
"ro.config.auto_display_mode": "true",
"ro.config.backcolor": "green",
"ro.config.beta_sec_ctrl": "false",
"ro.config.blight_power_curve": "50,1;100,0.73;300,0.73;350,0.83;380,1",
"ro.config.bundle_optb_mnc": "306",
"ro.config.carkitmodenotif": "true",
"ro.config.cl_volte_autoswitch": "true",
"ro.config.colorTemperature_3d": "true",
"ro.config.colorTemperature_K3": "true",
"ro.config.color_aod_type": "127",
"ro.config.concurrent_capture": "true",
"ro.config.data_preinstalled": "true",
"ro.config.dataoff_timeout": "5",
"ro.config.default_screensize": "1440,3120",
"ro.config.del_default_link": "false",
"ro.config.demo_allow_pwd": "false",
"ro.config.detect_sd_disable": "false",
"ro.config.devicecolor": "black",
"ro.config.direct_fullscreen_intent": "true",
"ro.config.disable_force_touch": "true",
"ro.config.disable_operator_name": "true",
"ro.config.disable_reset_by_mdm": "true",
"ro.config.disable_triple": "true",
"ro.config.distributed_app_fwk": "true",
"ro.config.dns.two_threads": "true",
"ro.config.dnscure_ipcfg": "10.8.2.1;10.8.2.2|8.8.8.8;208.67.222.222;180.76.76.76;223.5.5.5",
"ro.config.dolby_dap": "true",
"ro.config.dolby_ddp": "true",
"ro.config.dolby_game_mode": "true",
"ro.config.dolby_volume": "-40;-50",
"ro.config.dsds_mode": "cdma_gsm",
"ro.config.empty.package": "true",
"ro.config.enable_iaware": "true",
"ro.config.enable_partition_move_update": "1",
"ro.config.enable_perfhub_fling": "true",
"ro.config.enable_rcc": "true",
"ro.config.enable_rms": "true",
"ro.config.enable_thermal_bdata": "true",
"ro.config.enable_typec_earphone": "true",
"ro.config.enterprise_support": "true",
"ro.config.evdo_dropto_1x": "true",
"ro.config.face_recognition": "true",
"ro.config.fast_switch_simslot": "true",
"ro.config.finger_joint": "true",
"ro.config.fp_navigation": "true",
"ro.config.fp_unlock_delay": "0",
"ro.config.full_network_support": "true",
"ro.config.gallery_story_disable": "false",
"ro.config.gameassist": "1",
"ro.config.gameassist.full-finger": "1",
"ro.config.gameassist.nodisturb": "1",
"ro.config.gameassist.peripherals": "1",
"ro.config.gameassist_booster": "1",
"ro.config.gameassist_soundtovibrate": "0",
"ro.config.gps_to_nlp": "true",
"ro.config.hiaibase_push_mode": "0",
"ro.config.hiaiversion": "100.210.010.010",
"ro.config.hicall": "true",
"ro.config.hisi_cdma_supported": "true",
"ro.config.hisi_net_ai_change": "true",
"ro.config.hisi_video_acc": "true",
"ro.config.hpx_m6m8_support": "true",
"ro.config.huawei_navi_extend": "true",
"ro.config.huawei_smallwindow": "392,176,1440,2128",
"ro.config.hw.security_volume": "10",
"ro.config.hw_BatteryLevel_job_allowed": "92",
"ro.config.hw_OptiDBConfig": "true",
"ro.config.hw_ReduceSAR": "false",
"ro.config.hw_allow_rs_mms": "true",
"ro.config.hw_aqv_enabled": "false",
"ro.config.hw_bluetooth_is_auto_scan": "false",
"ro.config.hw_booster": "true",
"ro.config.hw_camera_nfc_switch": "true",
"ro.config.hw_ch_alg": "2",
"ro.config.hw_charge_frz": "true",
"ro.config.hw_codec_support": "0.180410",
"ro.config.hw_cota": "false",
"ro.config.hw_dsdspowerup": "true",
"ro.config.hw_dts_settings": "true",
"ro.config.hw_eapsim": "true",
"ro.config.hw_earpiece_fade": "true",
"ro.config.hw_easywakeup": "false",
"ro.config.hw_eccNumUseRplmn": "true",
"ro.config.hw_ecclist_nocard": "+120,+122",
"ro.config.hw_ecclist_withcard": "+112",
"ro.config.hw_em_solution_ver": "B068",
"ro.config.hw_emcom": "true",
"ro.config.hw_emcom_mpux": "true",
"ro.config.hw_emui_cast_mode": "true",
"ro.config.hw_emui_desktop_mode": "true",
"ro.config.hw_emui_dp_pc_mode": "true",
"ro.config.hw_emui_welink_cast": "true",
"ro.config.hw_emui_wfd_pc_mode": "true",
"ro.config.hw_fake_ecc_list": "110,120,122,999,119",
"ro.config.hw_freeform_enable": "true",
"ro.config.hw_front_camera_support_zoom": "false",
"ro.config.hw_front_fp_navi": "false",
"ro.config.hw_fyuse_enable": "true",
"ro.config.hw_globalEcc": "false",
"ro.config.hw_glovemode_enabled": "1",
"ro.config.hw_hicar_mode": "true",
"ro.config.hw_hicar_mode_wireless": "true",
"ro.config.hw_hotswap_on": "true",
"ro.config.hw_low_ram": "false",
"ro.config.hw_lte_release": "true",
"ro.config.hw_magne_bracket": "true",
"ro.config.hw_media_flags": "2",
"ro.config.hw_multiscreen": "true",
"ro.config.hw_multiscreen_optimize": "true",
"ro.config.hw_multiwindow_optimization": "true",
"ro.config.hw_navigationbar": "true",
"ro.config.hw_newsimple": "true",
"ro.config.hw_nfc_def_route": "1",
"ro.config.hw_nfc_msimce": "true",
"ro.config.hw_nlp": "com.huawei.lbs",
"ro.config.hw_notch_size": "686,100,377,60",
"ro.config.hw_opta": "999",
"ro.config.hw_optb": "156",
"ro.config.hw_power_saving": "true",
"ro.config.hw_power_voice_key": "true",
"ro.config.hw_rcs_product": "true",
"ro.config.hw_rcs_vendor": "true",
"ro.config.hw_rcs_vs_is": "1",
"ro.config.hw_sensorhub": "true",
"ro.config.hw_sim2airplane": "true",
"ro.config.hw_singlehand": "1",
"ro.config.hw_snapshot_scale": "70",
"ro.config.hw_srlte": "true",
"ro.config.hw_support_clone_app": "true",
"ro.config.hw_support_geofence": "true",
"ro.config.hw_switchdata_4G": "true",
"ro.config.hw_tint": "true",
"ro.config.hw_ukey_on": "true",
"ro.config.hw_ukey_version": "2",
"ro.config.hw_updateCotaPara": "true",
"ro.config.hw_useCtrlSocket": "true",
"ro.config.hw_vcardBase64": "true",
"ro.config.hw_voicemail_sim": "true",
"ro.config.hw_volte_dyn": "true",
"ro.config.hw_volte_icon_rule": "1",
"ro.config.hw_volte_on": "true",
"ro.config.hw_vtlte_on": "true",
"ro.config.hw_wakeup_device": "true",
"ro.config.hw_watermark": "false",
"ro.config.hw_wfd_optimize": "true",
"ro.config.hw_wifi_wps_disable": "false",
"ro.config.hw_wifibridge": "true",
"ro.config.hwsync_enabled": "true",
"ro.config.hwtheme": "1",
"ro.config.ipv4.mtu": "1400",
"ro.config.isDmProduct": "true",
"ro.config.keep_zoom_same": "false",
"ro.config.linkplus.liveupdate": "true",
"ro.config.lockscreen_sound_off": "true",
"ro.config.marketing_name": "HUAWEI Mate 20 Pro (UD)",
"ro.config.networkmode_hide_dyn": "true",
"ro.config.new_hw_screen_aspect": "3120:2960:1440",
"ro.config.nfc_hasese": "true",
"ro.config.nfc_nxp_active": "i",
"ro.config.notification_sound": "Bongo.ogg",
"ro.config.ota_update_theme": "10",
"ro.config.para_updateCapacityVersion": "1.0",
"ro.config.peq_support": "true",
"ro.config.permanent_error_heal": "true",
"ro.config.pg_sleep_switcher": "light_pluse",
"ro.config.pre_dns_query": "true",
"ro.config.protect_screen_name": "LG,BOE",
"ro.config.quicknote": "true",
"ro.config.rapid_capture_default_value": "0",
"ro.config.ringtone": "Huawei_Tune_Living.ogg",
"ro.config.ringtone2": "Huawei_Tune_Clean.ogg",
"ro.config.rise_cutoff_freq": "true",
"ro.config.screenon_turnoff_led": "true",
"ro.config.se_esetype": "3",
"ro.config.sim_contacts_enabled": "true",
"ro.config.small_cover_size": "_1048x1912",
"ro.config.sn_main_page": "true",
"ro.config.soft_single_navi": "false",
"ro.config.step_count_show": "true",
"ro.config.sup_lte_high_speed": "true",
"ro.config.supercharge_show_two_percents": "true",
"ro.config.support_aod": "1",
"ro.config.support_bt_bitrate_auto_adapt": "false",
"ro.config.support_ca": "true",
"ro.config.support_ccmode": "true",
"ro.config.support_doubletap_pay": "true",
"ro.config.support_etcis": "true",
"ro.config.support_face_mode": "4",
"ro.config.support_hwpki": "true",
"ro.config.support_inputmethod_fillet_adaptation": "true",
"ro.config.support_iseapp": "true",
"ro.config.support_iudf": "true",
"ro.config.support_notification_way": "true",
"ro.config.support_one_time_hota": "true",
"ro.config.support_privacyspace": "true",
"ro.config.support_sdcard_crypt": "true",
"ro.config.support_wcdma_modem1": "true",
"ro.config.supports_hitws": "true",
"ro.config.switchPrimaryVolume": "true",
"ro.config.third_key_provider": "kukong",
"ro.config.toolorder": "0,2,1,3,4",
"ro.config.updatelocation": "true",
"ro.config.vendor.isDmProduct": "true",
"ro.config.videocalldistributedassist": "true",
"ro.config.voice_recognition": "1",
"ro.config.vr.resolution": "true",
"ro.config.widevine_level3": "true",
"ro.config.wifi_fast_bss_enable": "true",
"ro.connectivity.chiptype": "hisi",
"ro.connectivity.sub_chiptype": "hi1103",
"ro.control.sleeplog": "true",
"ro.control_privapp_permissions": "enforce",
"ro.crypto.state": "encrypted",
"ro.crypto.type": "file",
"ro.cust.cdrom": "/hw_product/region_comm/china/cdrom/autorun.iso",
"ro.dalvik.vm.native.bridge": "0",
"ro.debuggable": "0",
"ro.dual.sim.phone": "true",
"ro.ebuy.channel.path": "/preload/LYA-AL00/all/cn/xml/config_channel.txt",
"ro.feature.display_screensaver_lite": "false",
"ro.feature.gallery.hide_album_enable": "true",
"ro.feature.gallery.slide_show_enable": "true",
"ro.feature.hwcamera.dsl.panorama3d": "0",
"ro.feature.launcher.long_click_enter_edit_mode": "true",
"ro.feature.launcher.setting_cycle_keep": "true",
"ro.feature.mobile_network_sharing_integration": "false",
"ro.feature.mobile_network_sharing_lite": "false",
"ro.feature.weather.add_no_update_item": "true",
"ro.gpu_turbo": "GPU Turbo",
"ro.hardware": "kirin980",
"ro.hardware.audio.primary": "hisi",
"ro.huawei.build.date": "Tue Jul 7 17:46:36 CST 2020",
"ro.huawei.build.date.utc": "1594115196",
"ro.huawei.build.display.id": "LYA-AL00 10.1.0.163(C00E160R1P8)",
"ro.huawei.build.fingerprint": "HUAWEI/LYA-AL00/HWLYA:10/HUAWEILYA-AL00/10.1.0.163C00:user/release-keys",
"ro.huawei.build.host": "cn-central-1b-3df00c4f21594110733099-2265614059-gsm4l",
"ro.huawei.build.version.incremental": "10.1.0.163C00",
"ro.huawei.build.version.security_patch": "2020-07-01",
"ro.huawei.channel.path": "/preload/LYA-AL00/all/cn/xml/",
"ro.huawei.cust.oma_drm": "false",
"ro.huawei.remount.check": "0",
"ro.huaweiMarket.jingdong.path": "preload/LYA-AL00/all/cn/xml",
"ro.hw.base_all_groupversion": "G2.0",
"ro.hw.country": "cn",
"ro.hw.custPath": "/version/cust/all/cn",
"ro.hw.cust_all_groupversion": "G2.0",
"ro.hw.hota.is_hwinit_cust_exists": "false",
"ro.hw.hota.is_hwinit_exists": "false",
"ro.hw.hota.is_hwinit_preload_exists": "false",
"ro.hw.ipv6opt": "true",
"ro.hw.ipv6timeout": "1900",
"ro.hw.mirrorlink.enable": "true",
"ro.hw.oemName": "LYA-AL00",
"ro.hw.preload_all_groupversion": "G2.0",
"ro.hw.sub1_disable_switch_cs": "true",
"ro.hw.vendor": "all",
"ro.hw_sc.cversion": "C00",
"ro.hwcamera.aimovie_enable": "1",
"ro.hwcamera.frontzoom_enable": "0",
"ro.hwcamera.hdr_menu_enable": "1",
"ro.hwcamera.modesuggest_enable": "true",
"ro.hwcamera.smartzoom_enable": "true",
"ro.hwcamera.support_720p_21_9": "true",
"ro.hwcamera.underwater_enable": "true",
"ro.hwpp_ds_fail": "111,32,33,35",
"ro.hwtracking.cn.wps.moffice_eng": "huawei_preload_default",
"ro.hwtracking.com.baidu.BaiduMap": "huawei_preload_default",
"ro.hwtracking.com.baidu.searchbox": "huawei_preload_default",
"ro.hwtracking.com.booking": "huawei_preload_default",
"ro.hwtracking.com.dianping.v1": "huawei_preload_default",
"ro.hwtracking.com.eg.android.AlipayGphone": "huawei_preload_default",
"ro.hwtracking.com.jingdong.app.mall": "huawei_preload_default",
"ro.hwtracking.com.sankuai.meituan": "huawei_preload_default",
"ro.hwtracking.com.sina.news": "huawei_preload_default",
"ro.hwtracking.com.sina.weibo": "huawei_preload_default",
"ro.hwtracking.com.ss.android.article.news": "huawei_preload_default",
"ro.hwtracking.com.ss.android.ugc.aweme": "huawei_preload_default",
"ro.hwtracking.com.suning.mobile.ebuy": "huawei_preload_default",
"ro.hwtracking.com.taobao.taobao": "huawei_preload_default",
"ro.hwtracking.com.ximalaya.ting.android": "huawei_preload_default",
"ro.hwtracking.ctrip.android.view": "huawei_preload_default",
"ro.hwui.use_vulkan": "",
"ro.iconnect.trustpair": "true",
"ro.iorapd.enable": "false",
"ro.kirin.product.platform": "kirin980",
"ro.logd.kernel": "false",
"ro.logd.size.stats": "64K",
"ro.logsystem.usertype": "1",
"ro.magic.api.version": "0.1",
"ro.maple.enable": "1",
"ro.netflix.bsp_rev": "KIRIN980-16183-2",
"ro.oba.version": "20200722215716_OBA_VERSION",
"ro.odm.build.date.utc": "1595423944",
"ro.odm.build.fingerprint": "Huawei/Atlanta/Atlanta_LYA-AL00:10/QP1A.190711.020/20200722211920:user/release-keys",
"ro.odm.ca_product_version": "LYA-AL00",
"ro.odm.radio.nvcfg_normalization": "true",
"ro.oem.key1": "C00R1",
"ro.oem_unlock_supported": "1",
"ro.opa.eligible_device": "true",
"ro.opengles.version": "196610",
"ro.patch.baseline.version": "2.0",
"ro.patchversion": "patch01",
"ro.postinstall.fstab.prefix": "/system",
"ro.powersavemode.backlight_ratio": "80",
"ro.product.CustCVersion": "C00",
"ro.product.board": "LYA",
"ro.product.brand": "HUAWEI",
"ro.product.cpu.abi": "arm64-v8a",
"ro.product.cpu.abilist": "arm64-v8a,armeabi-v7a,armeabi",
"ro.product.cpu.abilist32": "armeabi-v7a,armeabi",
"ro.product.cpu.abilist64": "arm64-v8a",
"ro.product.cuptsm": "HUAWEI|ESE|01|02",
"ro.product.device": "HWLYA",
"ro.product.fingerprintName": "HUAWEI-Z115",
"ro.product.first_api_level": "28",
"ro.product.hardwareversion": "HL1LAYAM",
"ro.product.locale": "zh-Hans-CN",
"ro.product.locale.language": "zh",
"ro.product.locale.region": "CN",
"ro.product.manufacturer": "HUAWEI",
"ro.product.member.level": "10011",
"ro.product.model": "LYA-AL00",
"ro.product.name": "LYA-AL00",
"ro.product.odm.brand": "Huawei",
"ro.product.odm.device": "Atlanta",
"ro.product.odm.name": "Atlanta",
"ro.product.system.brand": "Huawei",
"ro.product.system.device": "generic_a15",
"ro.product.system.manufacturer": "unknown",
"ro.product.system.model": "generic_a15",
"ro.product.system.name": "generic_a15",
"ro.product.vendor.brand": "kirin980",
"ro.product.vendor.device": "kirin980",
"ro.product.vendor.manufacturer": "HUAWEI",
"ro.product.vendor.model": "kirin980",
"ro.product.vendor.name": "kirin980",
"ro.product.wallet.nfc": "01|01|HUAWEI|01|02|01",
"ro.prop.hwkeychain_switch": "true",
"ro.property_service.version": "2",
"ro.quick_broadcast_cardstatus": "false",
"ro.radio.vsim_modem_count": "4",
"ro.radio.vsim_support": "true",
"ro.readfastboot": "0",
"ro.revision": "0",
"ro.ril.ecclist": "112,911,#911,*911",
"ro.runmode": "normal",
"ro.secure": "1",
"ro.setupwizard.mode": "DISABLED",
"ro.setupwizard.rotation_locked": "true",
"ro.sf.enable_backpressure_opt": "0",
"ro.sf.lcd_density": "480",
"ro.sf.real_lcd_density": "640",
"ro.sys.pg_nfb_kill": "true",
"ro.sys.ping_bf_dorecovery": "true",
"ro.sys.powerup_reason": "NORMAL",
"ro.syssvccallrecord.enable": "true",
"ro.system.build.date": "Tue Jul 7 17:46:36 CST 2020",
"ro.system.build.date.utc": "1594115196",
"ro.system.build.fingerprint": "Huawei/generic_a15/generic_a15:10/QP1A.190711.020/root202007071746:user/dev-keys",
"ro.system.build.id": "QP1A.190711.020",
"ro.system.build.tags": "dev-keys",
"ro.system.build.type": "user",
"ro.system.build.version.incremental": "eng.root.20200707.174720",
"ro.system.build.version.release": "10",
"ro.system.build.version.sdk": "29",
"ro.sysui.signal.layout": "signal_unit_uct_view",
"ro.telephony.default_network": "9",
"ro.treble.enabled": "true",
"ro.vendor.build.date": "Wed Jul 22 21:19:04 CST 2020",
"ro.vendor.build.date.utc": "1595423944",
"ro.vendor.build.fingerprint": "kirin980/kirin980/kirin980:10/QP1A.190711.020/root202007222119:user/test-keys",
"ro.vendor.hiaiapiversion": "1.0",
"ro.vendor.hiaiversion": "100.210.010.010",
"ro.vndk.version": "29",
"ro.vr.mode": "true",
"ro.vr.surport": "true",
"ro.wifi.channels": "",
"ro.ximalaya.ting.yz-huawei": "yz-huawei",
"ro.zygote": "zygote64_32",
"security.perf_harden": "1",
"selinux.restorecon_recursive": "/data/misc_ce/0",
"service.bootanim.exit": "1",
"service.bootanim.stop": "1",
"service.pgnss.download_time": "657639415",
"service.sf.present_timestamp": "1",
"setupwizard.theme": "glif_v3_light",
"sys.2dsdr.pkgname": "*",
"sys.2dsdr.startratio": "1",
"sys.accelerator.smartcare.sample.open": "true",
"sys.aps.game.pkgname": "com.miHoYo.bh3.huawei",
"sys.aps.power_mode": "3",
"sys.aps.powermodefps": "55",
"sys.aps.sdr.always_switchable": "1",
"sys.aps.support": "101286913",
"sys.aps.version": "10.1.0.18",
"sys.bms_limit_mode": "normal",
"sys.boot_completed": "1",
"sys.current_backlight": "1450",
"sys.defaultapn.enabled": "true",
"sys.eglinit_opt": "true",
"sys.email.smartcare.sample.open": "true",
"sys.fingerprint.deviceId": "0",
"sys.game.smartcare.sample.open": "true",
"sys.huawei.thermal.enable": "true",
"sys.hw_boot_success": "1",
"sys.hwiaware.started": "true",
"sys.iaware.cpuset.screenoff.bg": "0-3",
"sys.iaware.cpuset.screenoff.boost": "0-7",
"sys.iaware.cpuset.screenoff.fg": "0-7",
"sys.iaware.cpuset.screenoff.kbg": "0-3",
"sys.iaware.cpuset.screenoff.sysbg": "0-3",
"sys.iaware.cpuset.screenoff.taboost": "",
"sys.iaware.cpuset.screenoff.topapp": "0-7",
"sys.iaware.cpuset.screenon.bg": "2-3",
"sys.iaware.cpuset.screenon.boost": "4-7",
"sys.iaware.cpuset.screenon.fg": "0-7",
"sys.iaware.cpuset.screenon.kbg": "2-3,5",
"sys.iaware.cpuset.screenon.sysbg": "0-3",
"sys.iaware.cpuset.screenon.taboost": "4-7",
"sys.iaware.cpuset.screenon.topapp": "0-7",
"sys.iaware.eas.on": "true",
"sys.iaware.empty_app_percent": "50",
"sys.iaware.filteredType": "255",
"sys.iaware.switch_set_success": "true",
"sys.iaware.type": "-1",
"sys.isolated_storage_snapshot": "true",
"sys.iswifihotspoton": "false",
"sys.logbootcomplete": "1",
"sys.pg.nat_status": "600000",
"sys.pg.pre_rescue_boot_count": "1",
"sys.rescue_boot_count": "1",
"sys.resettype": "normal:COLDBOOT",
"sys.retaildemo.enabled": "0",
"sys.rog.density": "480",
"sys.rog.height": "2340",
"sys.rog.width": "1080",
"sys.runtime_data.hiddenapi.enable": "true",
"sys.settingsprovider_ready": "1",
"sys.show_google_nlp": "false",
"sys.super_power_save": "false",
"sys.sysctl.extra_free_kbytes": "61440",
"sys.sysctl.tcp_def_init_rwnd": "60",
"sys.system_server.start_count": "1",
"sys.system_server.start_elapsed": "9963",
"sys.system_server.start_uptime": "9963",
"sys.thermal.vr_fps": "0",
"sys.thermal.vr_ratio_height": "0",
"sys.thermal.vr_ratio_width": "0",
"sys.thermal.vr_warning_level": "0",
"sys.tpdoze.exclude": "",
"sys.tpdoze.include": "ALL",
"sys.trigger_bms_heating": "0",
"sys.update.state": "true",
"sys.usb.config": "hisuite,mtp,mass_storage",
"sys.usb.configfs": "1",
"sys.usb.controller": "ff100000.dwc3",
"sys.usb.ffs.ready": "0",
"sys.usb.ffs_hdb.ready": "0",
"sys.usb.mtp.device_type": "3",
"sys.usb.set_default": "false",
"sys.usb.state": "hisuite,mtp,mass_storage",
"sys.use_memfd": "false",
"sys.user.0.ce_available": "true",
"sys.video.smartcare.sample.open": "true",
"sys.wechat.smartcare.sample.open": "true",
"sys.wifitracing.started": "1",
"system_init.hwextdeviceservice": "1",
"uifirst_listview_optimization_enable": "1",
"vold.crypto_unencrypt_updatedir": "/data/update",
"vold.cryptsd.keystate": "lock",
"vold.has_adoptable": "0",
"vold.has_quota": "0",
"vold.has_reserved": "1",
"vold.post_fs_data_done": "1",
"wifi.direct.interface": "p2p0",
"wifi.interface": "wlan0"
},
"sensor": {
"1": {
"maxDelay": 200000,
"maxRange": 78.4532,
"minDelay": 2000,
"name": "accelerometer-icm20690",
"power": 0.23,
"resolution": 0.000009576806,
"stringType": "android.sensor.accelerometer",
"type": 1,
"vendor": "invensense",
"version": 1
},
"2": {
"maxDelay": 200000,
"maxRange": 2000,
"minDelay": 10000,
"name": "akm-akm09918",
"power": 6.8,
"resolution": 0.0625,
"stringType": "android.sensor.magnetic_field",
"type": 2,
"vendor": "akm",
"version": 1001
},
"3": {
"maxDelay": 20000,
"maxRange": 360,
"minDelay": 10000,
"name": "orientation",
"power": 13,
"resolution": 0.1,
"stringType": "android.sensor.orientation",
"type": 3,
"vendor": "huawei",
"version": 1
},
"4": {
"maxDelay": 200000,
"maxRange": 34.906586,
"minDelay": 2000,
"name": "gyroscope-icm20690",
"power": 6.1,
"resolution": 0.000017453292,
"stringType": "android.sensor.gyroscope",
"type": 4,
"vendor": "invensense",
"version": 1
},
"5": {
"maxDelay": 0,
"maxRange": 10000,
"minDelay": 0,
"name": "als-apds9253",
"power": 0.75,
"resolution": 1,
"stringType": "android.sensor.light",
"type": 5,
"vendor": "avago",
"version": 1
},
"6": {
"maxDelay": 1000000,
"maxRange": 1100,
"minDelay": 100000,
"name": "airpress-bmp380",
"power": 0.65,
"resolution": 0.01,
"stringType": "android.sensor.pressure",
"type": 6,
"vendor": "bosch",
"version": 1
},
"8": {
"maxDelay": 0,
"maxRange": 5,
"minDelay": 0,
"name": "proximity",
"power": 0.75,
"resolution": 5,
"stringType": "android.sensor.proximity",
"type": 8,
"vendor": "Taos",
"version": 1
},
"9": {
"maxDelay": 20000,
"maxRange": 9.80665,
"minDelay": 10000,
"name": "gravity",
"power": 0.2,
"resolution": 0.15328126,
"stringType": "android.sensor.gravity",
"type": 9,
"vendor": "huawei",
"version": 1
},
"10": {
"maxDelay": 20000,
"maxRange": 78.4532,
"minDelay": 10000,
"name": "linear Acceleration",
"power": 0.2,
"resolution": 0.009576807,
"stringType": "android.sensor.linear_acceleration",
"type": 10,
"vendor": "huawei",
"version": 1
},
"11": {
"maxDelay": 20000,
"maxRange": 1,
"minDelay": 10000,
"name": "rotation Vector",
"power": 6.1,
"resolution": 5.9604645e-8,
"stringType": "android.sensor.rotation_vector",
"type": 11,
"vendor": "huawei",
"version": 1
},
"14": {
"maxDelay": 200000,
"maxRange": 2000,
"minDelay": 16667,
"name": "uncalibrated Magnetic Field",
"power": 6.8,
"resolution": 0.0625,
"stringType": "android.sensor.magnetic_field_uncalibrated",
"type": 14,
"vendor": "Asahi Kasei Microdevices",
"version": 1
},
"15": {
"maxDelay": 20000,
"maxRange": 1,
"minDelay": 10000,
"name": "game Rotation Vector",
"power": 6.1,
"resolution": 5.9604645e-8,
"stringType": "android.sensor.game_rotation_vector",
"type": 15,
"vendor": "huawei",
"version": 1
},
"16": {
"maxDelay": 200000,
"maxRange": 34.906586,
"minDelay": 2000,
"name": "uncalibrated Gyroscope",
"power": 6.1,
"resolution": 0.000017453292,
"stringType": "android.sensor.gyroscope_uncalibrated",
"type": 16,
"vendor": "STMicroelectronics",
"version": 1
},
"17": {
"maxDelay": 0,
"maxRange": 2147483650,
"minDelay": -1,
"name": "significant Motion",
"power": 0.23,
"resolution": 1,
"stringType": "android.sensor.significant_motion",
"type": 17,
"vendor": "huawei",
"version": 1
},
"18": {
"maxDelay": 0,
"maxRange": 2147483650,
"minDelay": 0,
"name": "step Detector",
"power": 0.23,
"resolution": 1,
"stringType": "android.sensor.step_detector",
"type": 18,
"vendor": "huawei",
"version": 1
},
"19": {
"maxDelay": 0,
"maxRange": 2147483650,
"minDelay": 0,
"name": "step counter",
"power": 0.23,
"resolution": 1,
"stringType": "android.sensor.step_counter",
"type": 19,
"vendor": "huawei",
"version": 1
},
"20": {
"maxDelay": 200000,
"maxRange": 1,
"minDelay": 10000,
"name": "geomagnetic Rotation Vector",
"power": 6.1,
"resolution": 5.9604645e-8,
"stringType": "android.sensor.geomagnetic_rotation_vector",
"type": 20,
"vendor": "huawei",
"version": 1
},
"35": {
"maxDelay": 200000,
"maxRange": 78.4532,
"minDelay": 5000,
"name": "uncalibrated Accelerometer",
"power": 0.23,
"resolution": 0.000009576806,
"stringType": "android.sensor.accelerometer_uncalibrated",
"type": 35,
"vendor": "huawei",
"version": 1
},
"65538": {
"maxDelay": 0,
"maxRange": 1,
"minDelay": 0,
"name": "HALL sensor",
"power": 0.75,
"resolution": 1,
"stringType": "android.sensor.hall",
"type": 65538,
"vendor": "huawei",
"version": 1
},
"65544": {
"maxDelay": 500000,
"maxRange": 1,
"minDelay": 10000,
"name": "phonecall sensor",
"power": 0.23,
"resolution": 1,
"stringType": "android.sensor.gesture",
"type": 65544,
"vendor": "huawei",
"version": 1
},
"65545": {
"maxDelay": 500000,
"maxRange": 1,
"minDelay": 10000,
"name": "mag bracket",
"power": 0.23,
"resolution": 1,
"stringType": "android.sensor.magn_bracket",
"type": 65545,
"vendor": "huawei, virtual",
"version": 1
},
"65552": {
"maxDelay": 1000000,
"maxRange": 65535,
"minDelay": 500000,
"name": "RPC sensor",
"power": 5,
"resolution": 1,
"stringType": "android.sensor.rpc",
"type": 65552,
"vendor": "huawei",
"version": 1
},
"65553": {
"maxDelay": 200000,
"maxRange": 65535,
"minDelay": 50000,
"name": "agt",
"power": 0.1,
"resolution": 0.001,
"stringType": "android.sensor.agt",
"type": 65553,
"vendor": "huawei",
"version": 1
},
"65554": {
"maxDelay": 200000,
"maxRange": 65535,
"minDelay": 0,
"name": "color sensor",
"power": 0.1,
"resolution": 0.001,
"stringType": "android.sensor.color",
"type": 65554,
"vendor": "huawei",
"version": 1
},
"65555": {
"maxDelay": 200000,
"maxRange": 650,
"minDelay": 16000,
"name": "tof sensor",
"power": 0.75,
"resolution": 1,
"stringType": "android.sensor.tof",
"type": 65555,
"vendor": "huawei",
"version": 1
},
"65556": {
"maxDelay": 0,
"maxRange": 65535,
"minDelay": 0,
"name": "drop sensor",
"power": 0.25,
"resolution": 1,
"stringType": "android.sensor.drop",
"type": 65556,
"vendor": "huawei",
"version": 1
}
}
}
0x009. 这种方式将用真机跑开放http接口由python端发起请求处理数据等操作,由于开始代码不稳定,优化代码后速度还不错。文章内所有截图以及内容,均为技术分析使用,分析完毕后已全部经删除.
友情提示:本文只为技术分享交流,请勿非法用途.产生一切法律问题与本人无关
在浏览的同时希望给予作者打赏,来支持作者的服务器维护费用.一分也是爱~