android引导,安卓设置向导

如何用nfs来引导android

用NFS作为rootfs来启动内核在开发中的必备的,用nfs启动android,也就免去频繁的对nand烧写操作。网上有很多文章,可惜都是互相copy,参考性不强。下面来说明如何用NFS来启动android,具体的操作就不细说了。通常的嵌入式linux使用NFS启动,需要启动NFS的文件系统和相关网络支持,这是第一步,至少内核在最后阶段能mount到FS,而mount之前网络协议也必须是支持的。

创新互联公司是一家专注于网站设计、网站制作与策划设计,梅江网站建设哪家好?创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:梅江等地区。梅江做网站价格咨询:028-86922220

内核启用NFS文件系统支持,网络里面支持IP_PNP下的BOOTP,DHCP,RARP

android内核在最后阶段,是执行RAMDISK中的init进程来remount分区,system和data也是在这个时候才挂载上的。使用NFS启动时,要关闭内核中的ramdisk功能。这样,内核启动后,mount到NFS的目录,然后直接执行NFS目录下的init进程

准备android的文件系统。编译aosp代码,最终生成system, data, root目录,分别copy到NFS目录下,配置NFS允许网络访问该目录。在nfsroot目录下,需要修改init.rc文件。里面会对system重新挂载,可以注释掉该内容,修改如下:

#on fs

# mount mtd partitions

# Mount /system rw first to give the filesystem a chance to save a checkpoint

#mount yaffs2 mtd@system /system

#mount yaffs2 mtd@system /system ro remount

#mount yaffs2 mtd@userdata /data nosuid nodev

#mount yaffs2 mtd@cache /cache nosuid nodev

on post-fs

# once everything is setup, no need to modify /

mount rootfs rootfs / rw remount

这里,关闭也on fs的action操作,记得把on fs也注释掉

Android初探开机引导

因为需求有做开机引导,所以简单的学习下这块功能的流程,并简单的做个总结

主要参考文章:

做开机引导,主要要做到的效果就是 只有第一次使用的时候会打开,只打开一次,当执行完开机引导的流程之后,之后开机都不会再展示

要实现开机引导,那么就一定是系统应用,按照原理来说,需要两个步骤,第一,需要引导页的优先级比LAUNCHER高。第二,需要流程完毕之后执行某些操作让应用下次不会启动。

可以设置android:priority属性,系统会判断启动priority优先级高的。

这样配置之后,其它应用的优先级如果没有设置的话默认就是0,这样就会优先打开引导页。

自己可以在引导页中写自己想要做的逻辑。当执行完所有逻辑之后,需要配置

这里主要做了设置Settings.Global.DEVICE_PROVISIONED和Settings.Secure.USER_SETUP_COMPLETE两个参数,还有PackageManager.setComponentEnabledSetting方法禁用组件

第一个参数是组件名

第二个参数是状态

不可用状态:COMPONENT_ENABLED_STATE_DISABLED

可用状态:COMPONENT_ENABLED_STATE_ENABLED

默认状态:COMPONENT_ENABLED_STATE_DEFAULT

第三个参数flags

DONT_KILL_APP或者0,0表示杀死包含该组件的app

运行时会发现设置priority优先级比LAUNCHER高,在开机之后也会提示让你选择打开应用,而不是默认打开优先级高的,关于这个问题,可以参考这篇文章

只需要把应用安装到system/priv-app中,就能解决这个问题。正常来说一般系统应用也是安装在这么文件夹中,只是平时调试的时候会为了方便直接run,所以可能出现这个问题。

将应用安装到该文件夹中可以使用这个命令,然后重启

看了很多文章,都没有讲到为什么要设置这两属性,因为要达成目的,我们只需要设置priority和调用setComponentEnabledSetting方法就行,为什么要设置这两个参数?不设置会有什么影响。

其实简单来说,系统在其他地方有用到这两个参数,举个简单的例子,我直接

去运行程序,能够很明显的测出这种情况下按Home键没反应,除此之外屏保也会不显示。

所以这两个参数还是需要在这个地方设为1的。

android 引导页提示框,该怎么解决

不知道楼主要做什么效果,如果只为判断何时显示的话,在引导页定义一个/**

* 进入下一页

*/

private void goNextPage() {

// 是否是第一次加载

String isFirestLoad = Util.getSharePersistent(

activity.getApplicationContext(), FIREST_LOAD);

if (isFirestLoad != null isFirestLoad.equals("true")) {

Intent intent = new Intent();

intent.setClass(this, welcome.class);

startActivityForResult(intent, 0);

}

}

在oncreat中判断goNextPage();

/**

* 关闭引导页的操作

*/

close = (ImageButton) findViewById(R.id.close);

close.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Util.saveSharePersistent(activity.getApplicationContext(),

FIREST_LOAD, "true");

goNextPage();

}

请教下android 这种新手引导功能该怎么实现?

1、第一阶段:加在首页的PopupWindow上面

private void addFeatureGuide() {

LayoutInflater layoutInflater = LayoutInflater.from(this);

LinearLayout popContentView = (LinearLayout) layoutInflater.inflate(R.layout.popup, null);

PopupWindow popupWindow = new PopupWindow(popContentView, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

popupWindow.showAtLocation(this.findViewById(R.id.main_root), Gravity.CENTER, 0, 0);

}

在onResume的时候调用addFeatureGuide()方法。

这样应该OK了吧?不!Run的时候报错了:

FATAL EXCEPTION: main

java.lang.RuntimeException: Unable to resume activity {com.example/com.example.MyActivity}: android.view.WindowManager$BadTokenException: Unable to add window — token null is not valid; is your activity running?

at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)

at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)

at android.app.ActivityThread.access$2300(ActivityThread.java:125)

Android 跳过Gapps开机引导

Android 手机在刷了 Gapps 之后,在开机进入系统时会进入 Gapps 的开机引导(也就是设置 Google 帐号神马的)。但是这需要连 Google 进行验证,于是。。。。。。。。

对于这种情况,可以通过以下方法解决:

这个方法就不多说了,只要能连上 Google ,就不会卡在这里了。至于怎么连 Google ,请自行寻找科学上网。

这个Gapps的开机引导是需要连网进行的,默认的情况下如果不连网的情况下是会自动跳过的。但是许多系统在默认情况下 Wifi 和数据是会自动打开,就算把卡取了,也还会有 Wifi ,一样无法跳过。对此,可选择先不刷 Gapps ,进入系统后将 Wifi 的数据关闭,再刷 Gapps ,此方法有一定弊端,有可能会导致 Gapps 某些应用发生某些玄学问题。。。。。

在设置时,可点击 复制数据 ,而后拉到最底,点击 离线设置 后再进行一些设置就可进入系统。(但同样玄学的是,有时在 复制数据 里,并没有离线设置或使用本地设置这一选项╮( ̄▽ ̄)╭)

这可能是最玄学的一个方法了,据传连点屏幕四角就可跳过此引导( 顺时针 方向,从左上角开始)。但是!!!但是!!!这是检验血统的时刻,时灵时不灵。别问我是怎么知道的。 (╯‵□′)╯︵┻━┻

敲黑板!!! 这是我所试过最科学的方法。在开机情况下,将手机连上电脑,使用 adb 工具来修改 USER_SETUP_COMPLETE 和 DEVICE_PROVISIONED 的值。具体操作如下:

最后附上测试环境:

PC: Windwos 10

Android: LineageOS 15.0 for Xiaomi Mi 5

Gapps: open_gapps-arm64-8.0-aroma-20171021

adb: 1.0.39


文章名称:android引导,安卓设置向导
文章来源:http://cdiso.cn/article/dssjghp.html

其他资讯