本篇讲述如何制作WinPE。我参考了微软的技术文档:
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-create-usb-bootable-drive

首先打开开始菜单,找到Windows Kits并展开,右键“部署和映像工具环境”,以管理员身份运行,如下图所示:

在弹出的cmd窗口中,键入以下命令并按回车。此命令的目的是将PE的工作文件创建到你指定的文件夹中

# 要制作64位WinPE,使用下面这个命令。强烈建议使用64位的WinPE
copype amd64 C:\WinPE_amd64
# 如果是要32位的WinPE,则使用这条命令
copype x86 C:\WinPE
# WinPE和WinPE_amd64目录可以更换成你想要的名称,我自己怕麻烦就选择不更改
PE复制完成

接下来就是将PE烧录到U盘中了,使用如下命令:

# 64位
MakeWinPEMedia /UFD C:\WinPE_amd64 P:
# 32位
MakeWinPEMedia /UFD C:\WinPE P:

注意,P:是U盘的盘符。该命令会格式化U盘(FAT32格式),所以建议找个小容量U盘或者SD卡来操作(几年前淘汰下来的存储设备又可以重新发光发热)。盘符一定不能输入错误,否则就会呵呵。烧录时间根据存储设备的性能不同而不同,请耐心等待结束。

C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>MakeWinPEMedia /UFD C:\WinPE_amd64 E:
WARNING, ALL DATA ON DISK DRIVE E: WILL BE LOST!
Proceed with Format [Y,N]?Y
Formatting E:...

Setting the boot code on E:...

Copying files to E:...


Success

制作完成,可以把U盘插到VMWare中来测试一下效果:

WinPE界面

Emm…看到这个界面就表示WinPE已经制作成功了,这个就是微软的,原汁原味的WinPE。现在可以通过命令行来执行各种命令了。

好了,本篇教程就到这里,下次会讲如何个性化WinPE

首先,让我们去从微软官网上下载ADK。下载地址:
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/download-winpe–windows-pe

微软官网上的说明

然后,确认一下要制作的WinPE的内核版本。如果要制作1809版本及以上的,需要下载ADK和WinPE插件两个程序;如果是1803或者更早期的内核,则只需要下载一个ADK程序即可。注意,两个ADK并不是同一个程序。这里我选择使用1809的版本

下载完成后得到两个程序,上面一个是ADK,下面那个是WinPE Add-on

ADK程序

首先运行上面个adksetup.exe,因为目的是制作WinPE,所以在选择功能的时候,除了部署工具以外的其他功能统统用不到。点击安装后等待完成安装。

选择“部署工具”即可

接着安装下面那个adkwinpesetup.exe。过程中可能会多次跳出下面这个对话框,表示没有网络连接,这种情况下首先检查自己的网络,确认网络没问题的话只需多点几次Retry,基本就能下载成功。

没有网络连接?

下载过程中请耐心等待。。。。下载完成之后,WinPE的部署环境就搭建好了

在做Android开发之后,你会发现随着时间的推移,运行过越来越多的demo,用过越来越多的三方library,c盘空间也越来越少。查看个人用户文件夹,可以发现几个和Android有关的文件夹体积那可是真庞大。下面将会针对各个文件夹给出相应的办法(Windows版)

一、.android文件夹

这个文件夹主要用于保存adb调试用的key和avd模拟器,lldb也要使用这个文件夹

迁移方式1:添加ANDROID_SDK_HOME环境变量,指向你所要保存的地方。

举例:把用户目录下的.android搬到D:\test目录下,ANDROID_SDK_HOME就填写D:\test。最终结果是下次android studio启动后,.android文件夹就会出现在D:\test目录下

缺点:adb调试用的key无法迁移到新目录下,如果用户目录下.android文件夹不存在,每次使用adb命令后会再次生成此文件夹,并重新生成一个adb调试key

迁移方式2:利用符号链接 ,注意这里有两个点符号,一个都不能少,且要链接的地方文件夹必须存在,名称可以随意

mklink /d %USERPROFILE%\.android. <要链接到的地方>

这样就会创建一个符号链接,让android以为这个文件夹还在原来的地方,但其实已经哈哈哈

举例:mklink /d %USERPROFILE%\.android. D:\AndroidFiles

解释:对.android文件夹做一个符号链接到D盘的AndroidFiles文件夹,所有对.android文件夹里面文件的读写其实是在对D盘的AndroidFiles文件夹内容读写

二、.gradle文件夹

这个文件夹很变态,当你使用过某一个版本的gradle后,该版本的gradle就会被下载到这里面。同时使用gradle依赖的三方library也会被下载并保存其中。说穿了它就是一个本地的仓库,这个仓库理论上容量无限大,所以当然要搬走

迁移方式1:新建一个GRADLE_USER_HOME环境变量,指向你想要的位置,然后把.gradle目录剪切过去就ok了

这种迁移方式不会有残留,很干净

迁移方式2:符号链接,在原地留下一个符号链接,不占用c盘空间

三、.AndroidStudioXXXX文件夹

这是android studio的配置文件目录,容量可上G。这个文件夹无法通过改环境变量来达到迁移的目的

迁移方式1:修改android studio的配置,位于安装目录下的bin/idea.properties。感兴趣的可以去改

缺点:不能完全迁移,总有残留,而且每次升级studio后此文件都会被覆盖回去

迁移方式2:还是用符号链接

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

这样看来,符号链接好像是万能的了。。。

但其实不然,符号链接需要被链接的文件或文件夹必须存在,否则将出问题

之前写过一篇 android 去网络感叹号的文章,但是实测文中提到的方法在android 7.X系统中已经失效。

原理:
7.1.1更改了验证方式,导致之前的修改方法失效,升级为7.1.1后wifi的叉叉和4g的叹号又回来了。

解决方法:

adb shell settings put global captive_portal_https_url https://captive.v2ex.co/generate_204

完事后重启就能看到效果。如果还是不行,请检查网络是否正常

前不久遇到了一个极光推送的问题,java后台在进行消息推送的时候,安卓这边会同时收到通知和自定义消息,当时搞得很郁闷。

后来java后台发现了问题所在:

qq20160811

如此就能解决同时推送通知和自定义消息的问题了!

 

一句命令解决问题:

电脑端有adb的话

adb shell settings put global captive_portal_server g.cn

手机上操作的话需要有root,拿到手机的shell后

su

settings put global captive_portal_server g.cn

然后重启下手机

从此能正常使用的网络不会再跳出登录到XXX网络的烦人提示了,除了一些需要登录的免费热点

===============================================

2016年9月15日更新:

手机刷了Android 7.0 后发现此方法失效!7.0系统请移步:Android 7.X 去掉网络感叹号 

 

公司给配了一台Dell Inspiron  3558用于外出办公。由于工作需求又安装了Ubuntu 14.04,结果发现就触摸板没反应。为了能把触摸板用起来,找了很多方法都不奏效,最后在Google上找到这么个解决方案:

参考地址:http://askubuntu.com/questions/592925/dell-inspiron-3551-unresponsive-touchpad

主要思路是关闭i2c_hid并且在启动的时候加入nopnp参数(i2c_hid是啥我也没搞明白)

首先:sudo gedit /etc/default/grub

然后再gedit里面找到这么一行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

把它改成:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nopnp"
保存后执行:
sudo update-grub
然后再运行这4条语句:

echo "blacklist i2c_hid" | sudo tee /etc/modprobe.d/i2c-hid.conf
sudo depmod -a
sudo update-initramfs -u
echo "synaptics_i2c" | sudo tee -a /etc/modules

重启,然后就能发现触摸板居然能用了!

再贴一下英文原文:

 

You can fix it by switching off i2c_hid and setting nopnp in boot parameters this way

  1. Run

sudo gedit /etc/default/grub

In the open window edit line

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

it should look this way

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nopnp"

Save file and run

sudo update-grub
  1. Run
    echo "blacklist i2c_hid" | sudo tee /etc/modprobe.d/i2c-hid.conf
    sudo depmod -a
    sudo update-initramfs -u
    echo "synaptics_i2c" | sudo tee -a /etc/modules
    
  2. Reboot.

操作环境:Win8.1企业版+VMWare WorkStation 12 Pro

电脑系统重装后,神马驱动都没了,包括adb的。现在做开发需要安装adb驱动,但是又不想在自己的电脑上安装那些360手机助手等等奇葩流氓软件,于是在虚拟机里面操作安装了adb驱动(死也是死个虚拟机而已)。问题来了,如何把这个驱动从虚拟机里面捞出来呢?现在知道的是驱动肯定在Windows文件夹中,为了方便,直接把Windows文件夹捞出来

尝试1:VMWare 有映射虚拟磁盘的功能,能轻松的把虚拟磁盘映射到主机中。

QQ20150927100732

但是!这有个问题。。。虽然磁盘映射成功了,在Windows资源管理器中能看见这个盘,但在Windows磁盘管理中却看不见这个盘;同理更新驱动的时候都提示位置不存在:

QQ20150927101109

QQ20150927101309

坑爹啊!

那么既然Windows资源管理器里面能看见它,就直接复制出来吧!

提示要提供权限

QQ20150927101513

然后,奇怪的一幕再次发生:

QQ20150927101618

MD居然说位置不可用!微软这是傻逼了吗???

右键修改文件夹属性:

QQ20150927101954

权限也改不了,真是哔了狗了。。。

换个思路:右键以管理员身份运行VMWare,这个主意看上去不错

QQ20150927102300

点击确定后,弹了一个对话框(大概是讲什么快照啊什么问题),再点了下确定

QQ20150927102444

还是位置不可用!这回在windows资源管理器里面都看不见了!

到此为止,这条路走不通。。。

尝试2:以前玩过M$的vhd,这种类型的盘挂载后能在Windows资源管理器里面显示,磁盘管理里面也能处理。google了一下找到这么个软件

QQ20150927102755

能把vmdk转成vhd。。。(不得不赞叹现在的软件真强大)

QQ20150927102929

双击转换完成后的vhd文件直接挂载,这次挂载在H盘

然后更新驱动程序:

QQ20150927103108

成功读取到了!

写到这里,基本上是实现我的想法了。虽然最后还是驱动安装失败,至少是发现了VMware的这个缺点,以后能少走弯路。。。

问:使用UltraISO制作光盘映像文件时,选项“启用ISO文件卷过滤器”是什么意思,选择与否有什么区别?
答:关于“ISO文件卷过滤器”的说明:

1)ISO文件卷过滤器的作用只是去掉尾部的空白数据而已。

2)有些光盘加密程序会在尾部隐藏加密信息,这些信息位于ISO文件卷之外,因此启用“ISO文件卷过滤器”会出现问题。这时切忌启用“ISO文件过滤器”。否则无法正常制作镜像,或制作的镜像可能无法使用。这也是UltraISO单独设置这个选项的道理。

3)几乎所有刻录软件在将ISO镜像刻录到CD-R上时会添加空白数据(Padding Blocks),目的是提高光盘的访问性能。否则有些老光驱在定位最外边的扇区时可能有问题。

4)Windows资源管理器通过ISO文件卷的目录信息,直接访问文件数据。尾部的空白数据不会对光盘的使用造成任何影响。

5)因此几乎所有的镜像制作软件,包括Nero,CloneCD,Alcohol 102%均采用“忠实原盘”的方式制作ISO。这样既不影响使用,也不会遗漏任何有用数据。

6)UltraISO的“ISO文件卷过滤器”对使用MD5校验有所帮助。如果ISO文件为标准数据镜像,可以用WinMD5软件提取MD5校验码;刻录 后,用UltraISO+ISO过滤器可制作大小相同的镜像,方便进行MD5校验。不过这种方法比较繁琐。建议用UltraISO的”检查CD/DVD光 盘”功能,先计算ISO的MD5码,然后直接计算光盘的MD5码,可直接比较。在此项功能,ISO过滤器缺省打开,因此不会包含光盘尾部的空白扇区。

关于UltraISO提供“ISO文件卷过滤器”的好处:

1)在制作镜像文件时采用“忠实原盘”的方式,同时提供“ISO文件卷过滤器”选项。
一般情况下,不启用“ISO文件卷过滤器”,确保制作的镜像不会丢失重要信息。
如果是标准数据光盘,启用“ISO文件卷过滤器”,可得到大小与原ISO一样的镜像文件,便于检查。

2)在检查光盘/ISO文件时,自动启用“ISO文件卷过滤器”,从而避免因刻录软件添加Padding Blocks而造成的差异。