rk3288_android7.1 随机生成SN号问题

问题现象

擦除flash升级后,SN号会被清空,不方便调试;希望擦除flash升级后,可以随机生成SN号


解决方案:

system/core/drmservice/drmservice.c 中 SERIALNO_FROM_IDB设为1,会使用工具写入的sn,否则会使用随机生成的sn。 此文件的main()中if(SERIALNO_FROM_IDB)里,当没有获取到工具写入的sn后,添加一段随机生成sn的代码(就是else里那段)即可。

diff --git a/drmservice/drmservice.c b/drmservice/drmservice.c
index ec3836ab7..9b7b13b39 100644
--- a/drmservice/drmservice.c
+++ b/drmservice/drmservice.c
@@ -1144,9 +1144,23 @@ int main( int argc, char *argv[] )
     if(SERIALNO_FROM_IDB)//read serialno form idb
     {
    
    
         vendor_storage_read_sn();
-        property_set("sys.serialno", sn_buf_idb[0] ? sn_buf_idb : "");
-        write_serialno2kernel(sn_buf_idb);
-        SLOGE("get serialno from idb,serialno = %s",sn_buf_idb);
+        SLOGE("[fy]:read sn_buf_idb:%s\n",sn_buf_idb);
+
+        generate_device_serialno(10,sn_buf_auto); //随机生成SN号
+        SLOGE("[fy]:read sn_buf_auto=%s\n",sn_buf_auto);
+
+        property_set("sys.serialno", sn_buf_idb[0] ? sn_buf_idb : sn_buf_auto); //判断SN号是哪种方式写入(随机?手动?)
+        if(sn_buf_idb[0])
+        {
    
    
+            write_serialno2kernel(sn_buf_idb);
+            SLOGE("[fy]:get serialno from idb,serialno = %s\n",sn_buf_idb);
+        }
+        else
+        {
    
    
+            write_serialno2kernel(sn_buf_auto);
+            SLOGE("[fy]:get serialno from auto,serialno = %s\n",sn_buf_auto);
+        }
+
         vendor_storage_read_second_sn();
         property_set("sys.sub_serialno", sn_buf_idb_two[0] ? sn_buf_idb_two : "");
         write_serialno2kernel(sn_buf_idb_two);

注:此功能不影响写号工具手动写入SN号 <当工具写入后会进行覆盖随机生成的SN号>。

猜你喜欢

转载自blog.csdn.net/weixin_45639314/article/details/128205457
今日推荐