开机向导wifi设置无法跳过

转载 2016年08月29日 14:42:40

目前第一次开机(或者恢复出厂设置后开机)有以下两个问题:

  • 开机向导wifi设置界面skip按钮置灰,等待一段时间后才可以点击跳过
  • 开机动画完成后黑屏一段时间才出现开机向导第一个界面

以上两个问题并不会同时出现(即类似互斥关系)

WIFI设置界面无法skip问题,主要因为GmsCore得3个dex文件做dex2oat时间太长导致:

  1. 由于手机防盗功能,开机向导在wifi设置界面需要判断FRP的状态来决定是否一定需要网络来登录Google账户验证
  2. FRP状态需要通过GmsCore的FrpService获取,而FrpService需要等待GmsCore的3个插件dex文件做dex2oat完成后才能启动
  3. 如果在开机向导的wifi设置界面,FrpService还没有启动起来,那么这个时候skip按钮就是置灰的;需要一直等待FrpService启动后获取到正确的FRP状态后skip按钮才可以点击

开机向导启动前黑屏问题,关键在于从开机动画完成到开机向导的第一个有界面activity启动花费太长时间,而这个又是因为其它应用在开机阶段首次运行时做dex2oat导致cpu loading几乎100%:出现黑屏问题的时候,由于开机向导启动时间被延后,所以在wifi设置界面时GmsCore的dex2oat已完成,这个时候可以正常通过FrpService获取到frp状态,从而可以一次性跳过;而未出现黑屏问题的时候,由于开机向导启动时间早,所以在wifi设置界面时GmsCore的dex2oat还未完成,所以无法正常获取frp状态,导致无法skip

总结:

以上两个问题都是同一个原因造成(App占用CPU资源做dex2oat),只是对应的现象不一样

解法主要从以下方面进行优化:

  • 缩短GmsCore插件做dex2oat时间
  • 延迟开机向导启动时间(加长开机动画时间)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java
 
importjava.lang.Thread;
 
finalint startActivityLocked(...) {
 
 ...
 
 if(err == ActivityManager.START_SUCCESS) {
 
   finalint userId = aInfo != null? UserHandle.getUserId(aInfo.applicationInfo.uid) : 0;
 
   ///M: @{
 
   ComponentName SetupCmpName = intent.getComponent();
 
   String GMSSetupString = "com.google.android.setupwizard/.SetupWizardActivity";
 
   if(userId == 0&& SetupCmpName != null&& GMSSetupString.equals(SetupCmpName.flattenToShortString())) {
 
     intsleepTimeMS = 5000;
 
     Slog.i(TAG,"setupwizard sleep " + sleepTimeMS);
 
     try{
 
       Thread.sleep(sleepTimeMS);
 
     }catch(Exception e){
 
       Slog.i(TAG, e.toString());
 
     }
 
   }
 
   ///M: @}
 
   Slog.i(TAG,"START u" + userId + " {" + intent.toShortString(true,true,true,false)
 
   ...
 
 }
 
 ...
 
}

修改说明:
因为这是64位GMS造成的性能问题,所以如果此项目配置稍差,那么以上的sleepTimeMS可能还要加大(side effect:sleep时间过长会导致通过system server启动的Service等操作因为等待执行而timeout甚至发生anr)
当然,如果项目配置好,这个时间可以修改缩短进行测试
这里sleep造成的影响是,延迟第一次开机时间,即退出动画会延长一段时间退出,因为只对第一次开机动画时间有影响,这个对用户影响不是很大


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/frameworks/base/core/java/android/os/AsyncTask.java
 
publicfinal boolean cancel(booleanmayInterruptIfRunning) {
 
 ///M: @{
 
 java.lang.StackTraceElement stackTrace[] = newjava.lang.Throwable().getStackTrace();
 
 for(inti = 0; i < stackTrace.length; i ++) {
 
   String classMethodName = stackTrace[i].getClassName()+"."+stackTrace[i].getMethodName();
 
   //"com.google.android.gms.auth.frp.FrpClient.isChallengeSupported"
 
   if(classMethodName.contains("com.google.android.setupwizard.util.FrpHelper")) {
 
     android.util.Log.w(LOG_TAG,"Setupwizard canceled this task, getStatus()="+getStatus());
 
     returnfalse;
 
   }
 
 }
 
 ///M: @}
 
 mCancelled.set(true);
 
 returnmFuture.cancel(mayInterruptIfRunning);
 
}


跳过 google的开机向导 SetupWizard

问题: 恢复出厂设置之前没有退出google的账号,恢复出厂设置后在开机引导界面又无法连接上google登上之前的账号,卡死在开机引导。 解决方法1: 删除system/priv-app/Setu...
  • li_jin_shen
  • li_jin_shen
  • 2016年11月09日 17:23
  • 3856

如何在首次启动时跳过Google安装向导

如果您是Android第一次启动时频繁面对安装向导的人之一,那么您就位于正确的位置。我们将看到如何在第一次启动后跳过安装向导。什么是安装向导?安装向导可帮助用户自定义android,并使其有机会熟悉用...
  • xiezhongtian
  • xiezhongtian
  • 2018年01月22日 15:49
  • 260

在加入谷歌开机向导的情况下,使wifi关闭

以下是AMX运营商对wifi需求的描述: Wifi的默认值需要设为关闭 但是项目引入了google的设置向导,其包名为com.google.android.setupwizard,在设置向导中,w...
  • chi_wy
  • chi_wy
  • 2015年07月31日 14:08
  • 1374

Android M 概率跳不过google开机向导原因分析

更新:      google更新开机向导APK后,我们可以通过点击上一步,再重新进wifi界面.多试几次,可能就可以跳过连wifi界面了.(也有变态的解法,判断google的开机向导activit...
  • lookfuyao
  • lookfuyao
  • 2016年03月10日 10:07
  • 3383

GMS6.0集成遇到的问题

1.gms包无法编译 在android目录下建立vendor目录,之后把goole整个目录拷贝进去, 1) 在mydevice.mk文件中添加 ifeq ($(BUILD_WITH_GMS), ...
  • gsldqtan
  • gsldqtan
  • 2016年09月05日 16:55
  • 1134

GMS 5.1_r3/6.0_r2 以上版本开机向导wifi设置无法跳过

▪Description   更新版本GMS(5.1_r3/6.0_r2)后出现,在开机向导wifi设置界面,跳过按钮置灰 5.1_r3版本,按钮置灰一段时间后可以恢复,点击即可跳过...
  • qq_30427341
  • qq_30427341
  • 2017年05月24日 15:38
  • 513

Android L中Setupwizard保持竖屏处理

一、问题现象 在部分perso定制中需要Setupwizard启动过程中全程竖屏,默认屏幕旋转开启(adb shell settings get system accelerometer_rotat...
  • guai8023
  • guai8023
  • 2016年02月15日 16:12
  • 1011

跳过设置向导方法

通过设置2个设置属相,跳过安卓手机设置向导。
  • hitbeauty
  • hitbeauty
  • 2015年07月10日 10:12
  • 2801

Android开机向导setupwizard,设置系统语言,WiFi向导

Android的框架设计有考虑到开机向导这一场景,因此我们实现开机向导参考Android的Provision.apk Provision: MSM8976/repo/packages/apps/Pro...
  • qq_25804863
  • qq_25804863
  • 2015年09月23日 01:42
  • 8579

开机向导wifi设置无法跳过

目前第一次开机(或者恢复出厂设置后开机)有以下两个问题: 开机向导wifi设置界面skip按钮置灰,等待一段时间后才可以点击跳过开机动画完成后黑屏一段时间才出现开机向导第一个界面 以上两个问题并不会...
  • u014028835
  • u014028835
  • 2016年08月29日 14:42
  • 2463
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开机向导wifi设置无法跳过
举报原因:
原因补充:

(最多只允许输入30个字)