首页> android技术

android技术 存档

Android应用项目目录结构一览

2012年02月05日 分类目录 :android技术 1

       在上一篇日志(Android应用开发环境搭建指引)中,我们搭建了一个Android应用开发环境,其中我们选用了官方提供支持的Eclipse平台作为集成开发环境。今天,我们将以经典的Hello World项目来熟悉Eclipse中创建的Android项目的目录结构及其作用。

一 创建Hello World项目

       Andorid项目创建三种方式:

  1. 菜单栏File->New->Android Project
  2. 工具栏Open a Wizard to help create a new android project图标
  3. 左侧Package Explorer窗体中右键弹出窗口New->Android Project

      无论通过上述3种方式中的哪种都会进入同一个Android 项目创建引导过程,因此,这一步就看个人习惯了。

当我们进入到Android Protect创建过程中后,我们将首先见到这个节目,一般来说,我们需要做的仅仅是在ProjectName处输入项目名字,然后按Next进入下一步。

这一步的任务是选择一个构建目标,其中Android平台为必选项,如果你的Android SDK中有多个SDK版本,选择其中一个就可以了。

继续下一步,这步我们需要指定一个PackageName,根据Java的命名习惯,包名为域名的倒写+项目名,如我的网站域名为wangqige.com,则包名为com.wangqige.helloworld。此外,如果需要创建一个测试项目来做Android项目测试的话,则需要勾上Create a Test Project。最后点Finish就可以了。

二    Android项目目录结构说明

Android Project目录主要由src、gen、res、AndroidManifest.xml几部分组成。除此之外还有一些文件及目录是我们暂时不需要接触或不会接触到的。接下来依次来看看各目录、文件的主要功效:

1)src目录,顾名思义,该目录是我们主要接触的,我们的应用源代码均被置于该目录下。

2)gen,此为Android自动生成文件夹,里面含有一个非常重要的.java文件——R.java,它是我们的代码和资源文件互相产生联系的重要依据。因此不可改动、不可删除该文件。

3)res目录,这是存放资源文件的地方。里面主要包括drawable、layout、values三个目录。

    1.drawable目录放置图片资源,在Android2.1以上该目录将细分为drawable-hdpi、drawable-ldpi、drawable-mdpi,这三个目录分别放置不同分辨率的图片资源。对于刚刚接触Android开发的我们,目前还不需要根据不同分辨率配置图片,因此只需要一个drawable就够了。

    2.layout目录放置Android应用布局XML文件,其中有一个main.xml,显然这是最主要的布局文件了。当然,在实际开发中,没有main.xml也不要紧,只需要程序能够正确加载到需要的布局文件就可以了。

    3.values目录主要放置文本资源文件,通常用于文本内容的国际化,以及避免出现硬编码(即在代码中直接编写文本内容)。

4)在这些文件夹之外,我们还需要注意AndroidManifest.xml,这是Android项目的核心。如果我们的应用需要获得特殊权限(例如发信息)则必须在该文件中进行声明以获得权限,此外,当我们的应用有多个Activity的时候,我们也需要将所有Activity在该文件中进行声明。

    事实上,以上这些只是默认生成的内容,根据我们的不同需要,我们还可以创建额外的目录来放置相关资源。而像AndroidManifest.xml以及这里我并未提及到的proguard.cfg、project.properties也都还有许多功能,这需要我们根据需求去进一步挖掘。

, , , , , ,

Android应用开发环境搭建指引

2012年02月04日 分类目录 :android技术 0

       由于工作的缘故,现在开始全面进入Android应用开发领域了。之所以在标题上加上“应用”两字,是因为本文基于Windows平台撰写,而Windows 平台无法进行Android编译,因此只能进行应用开发。如果还需要接触Android 源代码的话建议在Linux环境上搭建开发平台。

一    基础资源下载安装:

  1. 安装JDK6以上版本,推荐安装JDK6.0.27,这个版本比较稳定。下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html

            安装的时候建议直接安装在根目录下,不要安装在默认的Program Files目录下。之所以这样是因为Android是基于Linux的,Linux路径不支持空格字符,所以可能会产生问题

  2. 下载Eclipse, 推荐下载Eclipse for java developers版,下载地址:  http://www.eclipse.org/downloads/ (64位系统用户请下载对应版本)
  3. 下载Android SDK,推荐下载安装版,下载地址:http://developer.android.com/sdk/index.html
  4.         同样建议安装在根目录下,不要安装在Program Files目录下。

二    系统环境变量配置:

  1. JDK的配置请参阅《配置Java编译环境
  2. 在PATH中配置Android SDK工具,添加以下两个目录:X:\android-sdk\platform-tools;X:\android-sdk\tools。注:“X:\”部分请根据实际情况修改

        配置完之后打开CMD,输入java -Version 和android -h两个命令,检查是否配置成功。

三    Android SDK下载:

        之前我们已经安装了Android SDK,但是事实上里面是空的,我们并没有下载SDK,现在我们在准备工作完成的基础上可以下载SDK了。打开SDK Manager.exe,当Fetching完了之后我们可以看到列表中有一系列的资源可供下载:

       其中Tools文件夹中的2个必须安装,下面的N多不同版本的Android SDK则选其一即可,目前最新的是Android 4.0.3,但是对于我们来说,这个并不需要跟进,选择装机量较大的2.2或2.3即可。等将来4.0成为主流后再跟进也不迟。

四    ADT For Eclipse下载安装

       启动Eclipse(Win7用户请使用管理员身份),进入插件安装对话框(Menu栏Help->Install New Software)

        在地址栏输入 https://dl-ssl.google.com/android/eclipse/,并按回车键,稍等一会就会加载出可安装插件列表,全部安装上吧。

这里还有一点需要注意的,由于安装ADT的时候还需要一些依赖插件,因此必须确保Available Software site列表中http://download.eclipse.org/releases/indigo(旧版本eclipse用户请把indigo修改为相应版本)处于选中状态,如果列表中没有则自行ADD一个。

安装完成后重启Eclipse,启动后应该会弹出一个android sdk的配置窗口,把其中sdk路径改为之前安装的路径即可。

五    Android模拟器配置

        为了方便开发者进行调试,Android SDK还提供了一个模拟器工具,我们编译好的Android应用可以直接在这个模拟器中进行测试,而不需要放到真机上。打开AVD Manager工具,点New按键,进行简单的配置之后就可以创建出一个模拟环境了。

 

后记

        至此,Windows下Android应用开发环境就搭建好了,快去创建一个Hello World项目体验一下吧。

, , ,

将me501升级到android2.3系统

2011年03月15日 分类目录 :android技术 21

不知是不是折腾上瘾来了,不久前才刚刚从android1.5刷到android2.1,昨天就又折腾上android2.3了。刷之前在android论坛里看了不少贴,发现普遍都说这个版本做得很好,所以就心痒痒起来了,总体来说这次刷机还是非常的顺利的,这里写下一些我关于这次的版本的感觉。

这次我刷的不再是网友基于moto制作的rom包的修改版,而是彻头彻尾的第三方rom,经常关注android系统的人一定知道(至少听说过)CyanogenMod这个第三方android ROM制作组织,他们做的rom在全球范围内都非常受人喜欢,许多android手机入机后第一件事便是将原版系统更换成他们制作的版本。

从网友那得到的反馈,这一版本基本没什么严重影响我们使用体验的Bug,而且比一些2.1、2.2版本运行更流畅,尤其是对于像我这样的低端手机(moto me501)来说,它的流畅度更是优于moto 官方的1.5版,因此,对于me501用户来说,我非常推荐大家刷这个系统。

在刷android2.3之前,请先确定已经获得了手机的root权限,me501用户如果还没获取root权限,请先浏览《从一而终搞定me501刷android 2.1》中有关刷root权限的部分。

当你获取到root权限之后,让我们正式进入android2.3时代。

首先将刷2.3需要用到的两个压缩包下载并放到sd卡根目录下:wipedatacachesystem.zipGingerXT-rel9.zip。注:由于之前有多人按照我的日志里说的来刷机,但是始终停留在moto标志界面而联系我寻求帮助,最后发现是他们rom包下载错误,因此请在下载后确认压缩包大小,如果发现下载到的文件远小于网页上所显示的大小,请尝试重新下载。

将这两个压缩包放到sd卡中之后,重启手机并进入工程模式(当看到moto标志时按住照相键),出现黑屏+小字后按音量键“-”,然后滑动触摸板选择flash zip from sd,先刷wipedatacachesystem.zip,刷完后再刷GingerXT-rel9.zip,都刷完之后重启手机就行了,第一次进入系统时可能会在moto标志那停留很久,请不要担心(我差点因为这拔电池了,惭愧)。

下面先奉上几张截图,以觞各位看官:

接下来要说的是我们刷机完成后的一些注意事项,这也是本文最重要的部分(刷机过程由于和之前那篇日志中刷2.1系统有所重叠,所以没有细说):

  • 刷机完成之后第一件事情先将手机的时区调整到中国标准时间(设置—日期与时间,然后把自动那里的勾去掉,再在选择时区那里找到中国标准时间)
  • 然后安装一个电子市场,默认包中并没带google应用包,所以需要的朋友得自己去下。我虽然手机上安装了国内的安卓市场,但是从我的体验来看,它做得并不好,更新缓慢,我从市场里下载到的qq输入法竟然不是最新版。这里我推荐大家在电脑上安装豌豆荚,我们可以通过它在电脑上下载安装手机应用,非常方便且节约时间。
  • 在之前我们不得不安装一个apn控制程序来控制数据流量,而这个rom已经自带该功能,因此不必再费心安装了
  • 此包默认没有中文输入,所以请下载并安装中文输入法程序
  • 通讯录中没有记录,因此请从sim卡中导入(在通讯录界面按菜单键)
  • 窗口小插件似乎只支持安装在手机内存中的程序,因此像墨迹天气这样的有窗口小插件的程序建议安装在手机内存
  • 喜欢超频的人不必再安装setCPU,rom内置CPU设置功能(位于CM设置中)

对我而言,似乎智能手机的乐趣便是不断地刷机了,智能手机的娱乐功能早已被我的itouch4所剥夺,它只剩下了通信+在无wifi环境下上网聊QQ和看新闻的功能。从某种程度来说,我使用智能手机有点暴敛天物了。

, , ,

让android2.x安装程序到SD卡

2011年03月02日 分类目录 :android技术 2

现阶段的智能手机默认情况下都是将程序安装在手机内存(ROM)中,如果是像iphone这样有几个G、乃至于几十个G的话,我们没有什么感觉。但是像ME501这样的中低端手机,手机内存只有可怜的几百MB,如果我们装的程序多点(来一两个体积较大的游戏)的话,那就糟糕了。幸好,android2.0之后就允许我们把程序安装到SD卡上了。

在昨天的《从一而终搞定me501刷android2.1》中最后曾提到过在完成刷机后可以选择对SD卡进行分区或直接重启进入系统,本文中就将介绍SD卡分区并为手机设置默认程序安装到SD卡的过程。和之前那篇日志一样,本文仅是对网上已有资料的一个汇总、整理而已。

wait!wait!wait!怎么进到这个界面?如果在开机见到moto标志时按住照相键,等出现小字时按“音量-”键就行了。

当我们刷好机之后,选择Partition SD开始对SD卡进行分区:

点进去之后选择partition SD,然后是提示是否格卡!继续点确认

下一步选择分区大小(建议设为96就可以了,不能再大了)确认后提示为ext2—-512M(可根据需要进行调整,这就是你今后存文件程序的地方),2G的可以直接确定,2G以下的,酌情按上下键调整ext-2大小,以免fat32分区容量太低)然后再按确定键出现partitioning sdcard,大约半分钟后即出现partitioning complete。

完成后重启手机进入系统,如果刷的是我在前一篇文章中所使用的那个ROM包的话,接下来的操作会非常之简单。

在手机里的应用程序中找到GScript Mod,里面自带了许多实用的命令,这里我们需要用到的是Enable Apps2SD和Move Dalvik-cache to SD,依次运行他们,第一次运行时会弹出root权限申请,只要授予权限就行了,全部完成之后,我们rom中的空间就会变大了。

如果你刷的包里没有这个GScript Mod,那可以安装app2sd小工具(http://u.115.com/file/f4c4e16d7b),依次选择move apps to SD和Move dalvik-cache to sd两项。

下图是我现在手机内存使用情况:

,

从一而终搞定me501刷android 2.1

2011年03月01日 分类目录 :android技术 28

随着android2.3的发布,我们这些可怜的moto非高端机用户却还在为能升级到2.1而烦恼,为何?moto官方不给我们(me501)提供升级服务啊,所以,我们只能依靠更为优秀的民间团体来实现我们升级系统的这个小小的愿望了。

从我入手me501起,我就一直关注着安卓网上me501版块的动向,从期待有高手破解root到期待完美版rom,当有人成功获取到root权限并发出教程之后,我也参照着做了,也的确是成功获取到了root权限。当时我也根据我的实际操作记录,综合网上的几篇教程写了一篇日志(详见:获取MOTO ME501的ROOT权限) ,由于疏于管理,该文中所用到的几个资源网盘早已到期,罪过罪过!

从去年下半年起,网上的技术客们就不断地研究、修改、发布适合me501使用的高版本android系统,从2.1到2.2,这些第三方rom在广大测试人员的帮助下,也不断地再完善着,这两天,我折腾电子设备的心又开始痒痒了,于是就下载了个评价还不错的rom,在第一次失败的情况下,终于于第二次刷机时成功了,现发出我的刷机流程,以供参考!

注:本文中的截图一概来自互联网

    一般来说,我们刷机一共需要经过如下几个步骤:

  1. 获取root权限
  2. 刷recovery
  3. 刷新版rom

        获取root权限在我之前的教程中是一个非常繁琐的过程,也许有一小部分人即使参照着那个教程也无法成功获取,而现在,网上已有网友共享出来一个1键获取root权限的批处理,而且,此批处理还同时完成了刷recovery的操作。岂不快哉?

        首先,安装MOTO的USB驱动(下载地址:32位    64位,请根据实际环境下载合适的驱动)

        然后将手机调节到USB调试模式:设置点位于“设置”—“应用程序”—开发

        下载用到的批处理(下载地址) ,解压缩,刷机运行root.bat,vista\7用户如果不放心成功率可以用管理员权限运行它

之后就会出现下图所示的情况了,在这个批处理中,我们需要做的仅仅是选择需要进行的操作而已

之后我们重启下手机,再按上RE管理器试试,一般来说是能成功的。

完成后正式开始刷rom:

首先,我们当然要先下载一个合适的rom,现在一些android论坛上都有不少rom,但是没有一个是完美版的,因此我们只能选择一个相对较好的版本。我选择的是安卓网me501版块里gameboys制作的版本。至于特点和下载地址请参考原文:2011年较完美2.1版完整功能适度精简彻底汉化可选超频ROM(18号更新

gameboys提供的rom有多个,请根据自己的实际需求进行选择,我这里使用的是第一个集成了爆音补丁的。

下载完成之后将下载到的压缩包复制到sd卡根目录下,然后重启手机,当moto的标志出现时,长按相机键,进入工程模式,当出现几行小字时按“音量-”键,进入recovery模式。

当出现如图所示界面后,选择wipe,滑动触摸键进行选择,按击确认选择,之后进入wipe选择界面,推荐选择wipe all.

wipe完成后选择Flash zip from SD,进入sd卡,选中刚才复制到SD卡中的压缩文件开始刷机。

刷机完成后有两个选择,一是直接选择reboot system now 进入系统,二是给sd卡进行分区(这部分在本文中暂不涉及)

回到系统之后,进行一些必要的设置就能进入桌面了,然后就开始体验android2.1给我们带来的全新体验吧!

来看看我的新界面,我用的主屏幕是默认的,所以稍微难看了点,大家可以自行去应用市场下载漂亮的桌面

rom包来源于:2011年较完美2.1版完整功能适度精简彻底汉化可选超频ROM(18号更新

一键root+recover+busybox用到的批处理来自于:一键完成root,busybox,recovery.成功率99.9%.1.5全功能可用.部分2.1用

 

最后再次感谢,所有做出了贡献牛人!

再次说明:文本全部内容均来源于安卓网,我只是进行了收集、归纳、总结罢了

, , , , , ,

获取MOTO ME501的ROOT权限

2010年09月02日 分类目录 :android技术 4

现在购买的手机都会和电脑一样预装一大堆垃圾软件(很多我们都根本用不上),如果是电脑,我们还可以直接删除,但是手机就不一定了,如果我们没有root权限,我们完全无法删除它们。因此,我们要想尽一切办法来获取手机的root权限。也正是这种原因,一些手机厂商就利用各种技术手段来阻止(至少是加大难度)极客们破解手机并获得root权限。而在这之中,MOTO的ME501无疑是一个典型的代表,无论是国内还是国外的Android手机论坛或MOTO手机论坛上,都有无数ME501用户在求root权限,但是迟迟没有出现教程,不过近日,终于有高手获取了root权限,并将过程分享了出来。

2011年3月2日更新:此方法已过时,现在有更简单的方法了,详见:《从一而终搞定me501刷android2.1》一文。

获取root权限的好处:

1.删除预装的垃圾软件(这些软件使用率低,又占空间,还占内存)

2.安装使用一些优秀的、需要root权限的软件

3.甚至是可以刷第三方ROM

4.……

5.……

要获得ME501的root的理由:

ME501用户即使不想用那些需要root权限的软件,也一定要想办法去获得root权限,这是因为me501安装了太多多余的软件。原本装了也就算了,不去用就行了,但是它偏偏又都会开机自启动,硬生生地占去了多达60MB以上的内存。在这种情况下,我们还有不获取root权限来删除它们的理由么?当然,我们必须删除他们!

ME501获取root的步骤此教程为Droid2版,不过ME501同样试用,已经有不少ME501用户据此获得了root权限,所以ME501用户可以放心):

准备工作:

1.下载需要用到的工具(装入SD卡adb.zipadb驱动.zipMotorola_Handset_USB_Driver_32_v4.2.4.zip

3.解压缩到文件夹,这里我解压到了c:\Moto_MSM_Root,大家可以根据自己的需要解压到任意一个文件夹

4.确认已启用USB调试模式

5.改变手机与电脑的连接模式(使用USB储存设备模式)

正式开始下面的步骤要开始麻烦了,大家做好心理准备,要有耐心):

1.安装Handset_USB_Driver_32_v4.2.4.msi

2.右键安装android_usb.inf

3.重启电脑

4.将装入SD卡文件夹里的ConnectBot-git-2010-08-23_16-23-44-all.apk复制进手机并安装

5.把SD卡文件夹中的“根目录”里的Superuser.apk”和”su”文件复制到手机SD卡的根目录下,并安装Superuser.apk

6.打开adb文件夹中的root.bat,输入以下命令:

cd data/local/tmp

chmod 0755 rageagainstthecage-arm5.bin

./rageagainstthecage-arm5.bin

7.打开adb文件夹中的kill.bat,界面会一闪而过,不管它

8.在手机上打开刚安装的ConnectBot,单击左下角的ssh,选择local,接着在昵称文本框中随便输入一个昵称

9.然后我们会看到一个黑色的界面,在这里开始输入命令,同样每行一条,且每条之后都要回车(手机虚拟键盘上的那个回车)

命令如下:(第二条命令可能会失败,不管它)

cd data/local/tmp
chmod 0755 rageagainstthecage-arm5.bin
./rageagainstthecage-arm5.bin

10.出现”Forked **** childs.”后,我们接着会出现软件出错,点击强制关闭,ConnectBot就会强制被退出
11.好了,拔出USB数据线,继续在手机上打开ConnectBot,选择我们刚才的申请的昵称,又回到黑色的界面,继续输入一下命令(还是老样子,一行之后回车):
cd /data/local/tmp
sh install-root.sh
exit
exit


12.接着断开连接,同意退出,至此我们已经取得ME501的Root权限

2011年3月2日更新:此方法已过时,现在有更简单的方法了,详见:《从一而终搞定me501刷android2.1》一文。

本文转自http://www.hiapk.com/thread-454207-1-1.html,文中部分略作修改,但不影响进程。

在PC端安装体验Google Android系统

2010年07月19日 分类目录 :android技术 3

自Google发布Android系统之后,移动设备市场爆发了第二春,各大手机厂商纷纷推出其预装Android系统的手机,近日(7月11日)我也总算是入手了一部Android系手机——MOTO ME501。借由这一契机,我也开始鼓捣起Android了,不过只是在应用层面,面对成千上万的Android应用,我不可能一一在手机上安装体验,于是就想到Android系统是基于Linux的一个系统,那应该可以在电脑上安装运行,那么在VirtualBOX中装个虚拟机应该也可以吧。

根据Google所得,在PC上体验Android系统主要有两种方法:其一,使用Android模拟器;其二是在VirtualBOX等虚拟机中运行。Android模拟器的资源由于站点在墙外(墙内可以下载到的都是Windows版的)所以无法体验,这里就只介绍第二种体验法。

VirtualBOX的安装非常简单,在此不再累赘,直接进入正题。下载VirtualBOX。这里补充一下,Ubuntu用户可以选择使用开源版本或者官方版本,这纯属个人喜好,我这里使用的是官方版本。

安装好VirtualBOX之后,开始设置虚拟机。首先是新建虚拟电脑:


虚拟电脑的操作系统选择Other,版本也是Other/UNknown

由于运行的系统不大,内存可以设置的小一些,我这里设置200MB其实是有点浪费的。

转入创建虚拟硬盘界面

由于前面选择了设置动态扩展,这里硬盘空间设大点也无妨了,我设置了10GB。

虚拟硬盘设置完成,回到虚拟电脑创建过程

全部设置完成,开始使用虚拟机。第一次运行虚拟机时会弹出运行向导,进行系统安装。

注册虚拟光盘

这里的介质选择下载到的LIVEAndroid镜像(下载地址:http://code.google.com/p/live-android/

启动后选择系统分辨率,这个就根据各自的喜好来选择吧。

载入Android系统过程

当看到这个画面时就意味着即将进入系统了

熟悉的界面,每天开机时都会和它相见

一个基本成型的手机界面呈现在我们面前咯

来看看互联网访问效果

菜单界面,全英文的,不用怕,我们可以设置成简体中文,不过不完整,将就着还是可以的

选择“Settings”—“Locale & text”

Select locale,拉至列表最后就是中文了

来看看设置后的效果

根据LIVEAndroid项目主页的百科显示,这种体验法也是可以安装应用的,不过稍微麻烦点,无法直接下载安装。

首先需要进入Linux终端(alt+f1),退出终端是alt+f7

输入 cd /data/app

输入 wget “应用的下载地址(形如http://192.168.1.110:8080/test.apk)”

当下载、安装完成后回到图形界面,就可以使用刚刚安装的应用了。

, ,

更换ME501的来电铃声和通知铃声

2010年07月12日 分类目录 :android技术 0

新入手的Moto ME501只用了一天,就犯下了若干过错,一个不小心打电话出去,又没找到挂断的地方(其实就在屏幕上,一开始慌慌张张地没发现,惭愧!),就白打了2个电话,其中一个还很悲剧的是个长途,唉!~好了,废话不多说了,进入正题。android手机更换铃声还真是比塞班麻烦多了,找了很久没找到设置的地方(特指设置为自定义铃声,默认铃声可以很方便的修改),后来在网上搜了下终于知道了更换的方法,现在此共享一下。

相对来说,来电铃声的更换比较方便,在文件管理器中找到需要用作铃声的mp3,长按该音乐文档,在弹出的选项框中选择设置为铃声即可。

而通知铃声(即短消息等)的更换就麻烦多了,也不是操作上的麻烦,而是条条框框限制了点。要用作通知铃声的音乐必须放在名为“notifications”的文件夹中,否则无法设置,然后点击触摸板左上那个按键,选择“设置”,在“声音及铃声”中的“通知铃声”中就可以选择该文件夹中的铃声了。这里之所以铃声必须放在名为“notifications”的文件夹里,估计是因为通知铃声只能调用该文件夹的吧,如果这样,那也就是说默认的那些铃声也是在手机内存的“notifications”文件夹中。就此看来,如果能拿到root权限的话,也可以考虑直接把铃声放在手机内存里。

说完整体在啰嗦点,me501的blur真是太好了,本来我的sim卡里已经没了所有同学的联系方式,没想到blur绑定人人网之后,就帮我把同学们人人网上的个人资料都同步下来了,这也包括了他们在人人网上填的手机号,虽然不是所有人都有填,但也减少了我很多工作,可以少收集很多人的电话。

利用qq邮箱中的随身盘实现电脑、手机互传文件

2010年05月11日 分类目录 :android技术| web技术 0

有时候,我需要下载些文件到手机上,用手机上网下载又费时又费钱,那就只能用电脑上网下载,然后再通过数据线传到手机上了。但是,如果身边刚好没有数据线怎么办?问周围的朋友借用下?万一他们也没呢?岂不是没辙了吗?现在,我想说的是,这样尴尬全都不复存在了,我们可以用qq邮箱中集成的随身盘来实现这个转移。 » 阅读全文

无觅相关文章插件,快速提升流量

, ,