关于Google应用SetupWizard.apk和ro.setupwizard.mode

最近产品集成了Google的相关应用SetupWizard.apk,但是很不是给力的是,这个开机导购式Wizard,让人感觉不是很舒服。OK,那就干掉它。干掉它,完了,google相关account相关的东西都出问题了。但是又不想让那个Wizard界面出来影响刚拿到机器用户的好心情。没有SetupWizard.apk的源码。OK,那我们也要搞点大致能读的东西出来看看么,就算死,也要死的瞑目。

        如何反编译APK,ok,这个相关方法“baidu”or“google”一下,很快就可以看到很多貌似不错的方法,那就开始搞。apk-(rar)->classes.dex-(dex2jar)->Jar-(XJad)->source code。ok,这样大致能搞出一些还算有可读性的源代码。

        BaseActivity.java里面的onCreate方法中,我看到了一个很貌似眼熟的字符串“ro.setupwizard.mode”,"ro.*"这个开头的变量,基本上都是android系统的一些全局变量,我们在onCreate函数里面看到SystemProperties.get(“ro.setupwizard.mode”,s),这下就清楚,这个SetupWizard.apk代码中会读取这个全局变量,在看看下面的这段代码,就会发现问题所在了:

        String s;

String s1;

        s1 = SystemProperties.get(“ro.setupwizard.mode”,s);

        Mode mode = Mode.valueOf(s1);

问题关键就在于此了,Mode是一个extends Enum的类,主要种类有:REQUIRED,OPTIONAL,DISABLED,EMULATOR

在去看看build.prop这个存有大量环境变量的文件,果然,发现问题,这个里面的ro.setupwizard.mode = OPTIONAL。但是这个build.prorp也是生成的变量表,继续查,在build/core/main.mk里面,我们可以看到。在TARGET_BUILD_VARIANT是eng的时候默认的会将这个全局系统变量写为OPTIONAL,我们将其改为DISABLE,这下世界清静了,一切正常,不在用开始繁杂的SetupWizard,就可以开始体验我们的Android了。

 

        后续会继续跟踪,在user和eng模式下,这个setupwizard对于ro.setupwizard.mode的处理。

你可能感兴趣的:(android,String,Google,jar,Build,wizard)