你的位置:首页 > 操作系统

[操作系统]第二章 搭建Android开发环境


一、JDK的下载:

Oracle JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

将Android-sdk_r24.41-linux.tgz 文件复制到Linux 文件系统中的某个目录〈可以自读者任意指定〉,然后在Linux 终端进入Android-sdk_r24.41-linux.tgz 文件所在的目录, 并执行如下的命令解压

sudo tar -zvxf Android-sdk_r24.41-linux.tgz

解压后,会看到当前目录中多了一个android-sdk-linux 目录,进入android-sdk-linux/tools 目录,会发现有一个文件名为android的脚本文件, 如图:

QQ截图20160418133902

 

执行这个脚本文件(双击该脚本文件或直接在Linux 终端执行该脚本文件〉,会显示如图所示的Android SDK 安装界面。

image

     由于Android SDK 采用在线安装的方式(也就是说只下载了一个安装器和必要的工具, 更多的文件需要在统更新〉,所以前面下载的Android SOK 并不完整,仍然需要通过Internet 安装很多东西.启动安装界面后,可以选择自己想要的Android 版本〈选中前面的复选框即可〉,最后单击如图所示的安装界面右下角的“ Install 22 package”按钮来安装被选中的包。在安装的过程中要有稳定而快速的Internet 连接,否则安装时间会很长。

     安装完Android SOK 后,进入<Android SDK 安装目录>,会看到如图1所示的目录结构。其中, platforms 目录存储与各个版本相关的Android SDK 资源, 每一个Android SDK 版本用一个单独的目录存储, 如图2所示。

image

                                                                图1

image

                                                                    图2

                                                                 

     由于<Android SDK 安装目录>/platform-tools 和<Android SDK 安装目录>/tools 目录中包含了很多常用的工具,因此建议读者将这两个目录加入PATH 环境变量。步骤如下(假设Android SDK 的安装目录是/sdk/android/android-sdk-linux ) 。

在Linux 终端执行下面的命令。

sudo gedit /etc/profile

在profile 文件的最后添加如下的代码:

export ANDROID_SDK_PATH=/Android/sdk/android-sdk-linux

export PATH=.:$ANDROID_SDK_PATH/platform-tools:$PATH


保存并关闭profile 文件, 在Linux 终端输入如下的命令执行profile 文件中的命令:

sourse /etc/profile

Ubuntu下安装过程:

cd ~/Downloads/sudo wget http://dl.gmirror.org/android/android-sdk_r24.4.1-linux.tgzsudo tar -zxvf android-sdk_r24.4.1-linux.tgz
sudo echo 'export ANDROID_HOME="'$HOME'/Downloads/android-sdk-linux"' >> ~/.bashrcsudo echo 'export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"' >> ~/.bashrcsudo echo 'export JAVA_CMD="/usr/lib/jvm/java-7-openjdk-amd64/bin/java"' >> ~/.bashrc

关闭“终端”,再开启一个“终端”,让环境变量生效。

启动Android SDK Manager

android

根据需要,选择最新版的Android SDK Platform-tools、Samples for SDK等等下载即可(约2.6GB)。

注意:一定要安装Android Support Repository,否则gradle会报错。

如果下载速度慢,有2个办法:

1、配hosts:ping g.cn,为dl-ssl.google.com设置hosts,并且在Android SDK Manager——》菜单——》Tools——》Options中选中“Force https to http”

2、国内cdn镜像下载:todo

二、安装eclipse:

      在Linux 下安装Eclipse 比较简单,只需要到如下的页面下载合适的Eclipse for Linux: 的最新版本即可(注意自己的机器是32 位的Linux 还是64 位的Linux 机器)。

http://www.eclipse.org/downloads/?osType=linux

解压:

sudo tar –zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz

解压后会得到一个Eclipse 目录,进入该目录后,会看到一个Eclipse 可执行文件,如图黑框中所示。执行该文件即可启动Eclipse .

image

    启动eclipse,选择help-Install New Software

work with为    http://dl-ssl.google.com/android/eclipse/
选择安装   android development tools

如果安装过程中出现错误:

The operation cannot be completed. See the details

则表明需要安装WST,输入地址http://download.eclipse.org/releases/galileo/选择最后一项的最后一个子项WST即可。

如果安装WST的过程出现错误:

An error occurred while installing the itemssession context was:(profile=PlatformProfile, phase=org.eclipse.equinox.internal.provisional.p2.engine.phases.Install, operand=null –> [R]org.eclipse.ant.ui 3.4.1.v20090901_r351, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction).
The artifact file for osgi.bundle,org.eclipse.ant.ui,3.4.1.v20090901_r351 was not found.
有可能没有安装Eclipse 的eclipse-pde或eclipse-jdt插件

我的错误:

image

由于google已经转向Android Studio。所以网上的方法可能无法解决,那就选择离线安装吧。

下载链接: http://pan.baidu.com/s/1mh5LLES 密码: xe39

image

     复制*.zip到eclipse目录下,在Eclipse中,”help” – “Install New Software” – “Add” – “Archive” 选择下载的ADT Archive包即可。这种方式要断网安装,否则安装不成功。

     只安装ADT 还不能用来开发,还需要配置ADT,以便让ADT 能找到Android SDK。在Eclipse中单击“Window”>“Preferences” 菜单项, 会显示“Preferences”对话框,如图所示。单击左侧的“Android "节点,在右侧的“SDK Location" 文本框中输入Android SDK 的安装目录,然后单击“Apple”按钮, 会将当前Android SDK支持的Android版本都列出来,最后单击“OK”按钮关闭“ Preferences” 对话框。

image

最终安装图片:

image

如果出不来AVD小图标,可以去-------Windows---Perspective-----Customize Perspective设置如下配置:

image

安装交叉编译环境:

      X86架构的CPU采用的是复杂指令集计算机(Complex Instruction Set Computer, CICS ),而ARM 架构的CPU 使用的是精简指令集计算机( Reduced lnstruction Set Computer, RISC)。由于这两种架构的CPU 使用了不同的指令集, 因此在·xs6 架构上开发可运行在ARM 架构上的程序就必须要使用交叉编译器。通常交叉编译器和相关工具包含了很多可执行文件以及大量的共享库及头文
件等资源。这些资源的集合称为交叉编译环境。

    我们自己可以编译制作一个交叉编译工具链(Cross-compile Toolchain)来用,但为了方便、稳定起见,我们大多数时候会去选择成熟的第三方工具链。

codesourcery的交叉工具链是很常见的一种,以ARM为例,我们可以http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite处下载到最新的版本:

image

可以看到有2个OS平台版本可供选择,选择第一个下载。

image

 

现在应该选择哪个呢?在codesourcery的一个页面上我们找到了答案:

 

This table applies to the target system on which your applications will run, not to the host system on which you run Sourcery G++.
Target Platform Description
EABI/ELF RTOS systems or bare metal systems where no operating system is present. These configurations should not be used to build Linux kernels or applications.  用于RTOS或者没有os的硬件设备。这个配置不能用于构建内核或者应用程序。


uClinux™ Systems running uClinux, i.e. Linux on CPUs without an MMU. Use Sourcery G++ to build both the uClinux kernel and applications. 
GNU/Linux® Systems running full Linux, i.e., Linux on CPUs with an MMU. Use Sourcery G++ to build both the Linux kernel and applications.  这个用于运行带有MMU的CPU上的linux系统。可以构建linux内核和应用程序。


Microsoft Windows® Systems running Microsoft Windows 2000, or later.

 

也就是说,如果打算用来编译linux kernel或者基于linux的应用程序,则应该选择GNU/Linux;EABI/ELF适用于没有操作系统(或者RTOS)的裸机;uClinux适用于没有MMU的Linux。

image

 

Linux版本的安装文件是bin格式,读者可执行下面的命令安装CodeSourcery。其中package表示CodeSourcery的安装文件名。

sh package.bin

    执行上面的命令后,会显示可视化的安装界面,如图2-32所示,读者可按提示安装CodeSourcery。

 

技术分享

  注意:64位系统无法执行上面的语句,如图:

image

解决办法:

image

image

为了使用方便,建议读者将如下路径加到PATH环境变量中。(新版本不需要)

   /root/compilers/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin

    下面编写一个简单的C程序来测试一下这个交叉编译环境。

 

[cpp] view plaincopy 



  1. //  first.c  
  2. #include <stdio.h>  
  3. int main()  
  4. {  
  5.     printf("first arm program\n");  
  6.     return 0;  
  7. }  


输入下面的命令编译first.c文件(需要加-static选项)。

 

# arm-none-linux-gnueabi-gcc -static -o first first.c

输入下面的命令将first文件上传到任意的Android设备的/data/local目录中(没有root权限也可以)。

# adb push first /data/local

使用adb shell命令进入Android设备的控制台,并进入/data/local目录,执行如下的命令

# ./first

     执行上面的命令就会输出“first arm program”信息。first程序在X86架构上运行的Ubuntu Linux中是无法运行的。读者可以试着在Ubuntu Linux中运行first程序,看看会发生什么。

注意:在安装Code Sourcery的过程中会在/lib目录寻找一个libc.so.6库文件,但在Ubuntu Linux11.04及以上版本/lib目录已经没有libc.so.6库文件了。这个库文件被放在了其他的目录。在32位的Ubuntu Linux中该文件的路径是/lib/i386-linux-gnu/libc.so.6,在64位的Ubuntu Linux中该文件的路径是/lib/x86_64-linux-gnu/libc.so.6。在安装Code Sourcery之前可以使用ln命令为libc.so.6文件在/lib目录建立一个链接。

副:adb识别Android设备出现空白或问号

Android设备通过USB线连接电脑。执行命令:

adb devices

如果显示空白或者问号(List of devices attached ???????????? no permissions),说明无法识别这款设备,修改配置即可,步骤如下。

 

插上手机时运行

lsusb

拔下手机再运行lsusb,少了一行,那个就是设备。

比如Bus 002 Device 003: ID 0bb4:0ccf High Tech Computer Corp.  表示HTC的厂商ID为0bb4

小米1S的 Bus 002 Device 007: ID 18d1:9025 Google Inc.,表示小米的厂商ID为18d1

锤子手机Smartisan T1是Bus 003 Device 019: ID 29a9:7019,表示锤子的厂商ID为29a9

按照厂商ID填写,比如锤子T1就写:

echo '0x29a9' | tee -a ~/.android/adb_usb.iniecho 'SUBSYSTEM=="usb", ATTR{idVendor}=="29a9", MODE="0666", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/51-android.rulessudo chmod a+r /etc/udev/rules.d/51-android.rulessudo service udev restartadb kill-serveradb start-server

把设备的“USB调试”关掉,拔下来,重新连上电脑,再打开“USB调试”。

adb devices

如果显示正常,即可。

官方文档:http://developer.android.com/tools/device.html

锤子论坛:http://bbs.smartisan.cn/thread-59957-1-1.html

如果是华为手机,仍然无法显示,请参考:http://blog.csdn.net/aryang/article/details/16843235

使用命令编译打包Android项目:新方法Gradle

echo 进入一个项目,比如democd ~/Downloads/android-sdk-linux/samples/android-23/ui/ActionBarCompat-Styledecho 编译打包,自动下载依赖的lib和项目./gradlew assembleDebugecho 安装到手机或者虚拟机等设备里adb install ActionBarCompat-StyledSample/build/apk/ActionBarCompat-StyledSample-debug-unaligned.apk

从android-18开始,android sdk中带的官方demo使用gradle打包,不再使用ant打包。

优点:gradle会自动下载依赖,不像ant那样要手动下载lib,而且把第三方的东西放到自己的代码库里无法跟进升级,还要逐个android update project,然后才能编译本项目。学习做demo时可能没体会,当一个项目有10个依赖的时候,就发现ant太麻烦了,gradle很方便。

参考:http://tools.android.com/tech-docs/new-build-system

 

使用命令编译打包Android项目:老方法ant

安装ant:

sudo apt-get install -y ant

ant编译一个项目的步骤:

复制代码
echo 进入一个项目,比如democd ~/Downloads/android-sdk-linux/samples/android-17/ApiDemosecho 生成build.19 是目标OS的意思,使用android list targets可以查看。如果没有安装SDK中的Android API,则targets为空出错。常见的有"android-19"和"Google Inc.:Google APIs:19"android update project -p . -s -t "android-19"echo 编译打包,需要jdkant debugecho 安装到手机或者虚拟机等设备里adb install bin/ApiDemos-debug.apk
复制代码

 

开发时如何快速切换wifi

使用WiFi List widget Free(含通知栏广告)即可。在桌面上1秒钟切换到另一个wifi,不用进系统设置中切换。下载地址:https://play.google.com/store/apps/details?id=pl.rkmiec.wifilist.free&hl=zh_CN

效果图:


网络调试Android

Android可以使用网络编译安装(wifi或有线),不用每次都接上usb线。

要求:设备需要root

方法1:在设备中启动“终端”(如果没有,则到市场上装一个),设备终端里执行命令:

susetprop service.adb.tcp.port 5555stop adbdstart adbd

把设备用usb线接到电脑上,手机弹出“开发者授权”,同意记住。

在电脑中执行命令:

adb connect 192.168.199.193adb devices

以后编译安装就方便了,在eclipse里直接能识别,用命令也行,比如:

adb -s 192.168.199.193:5555 install bin/demo-debug.apk

方法2、使用app自动执行上面的操作,安装WiFi ADB - Debug Over Air即可,下载地址https://play.google.com/store/apps/details?id=com.ttxapps.wifiadb

如图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如何安装google play

因为法律原因,所以大陆行货手机不能集成google play。详情请看:http://www.zhihu.com/question/20892245

如果开发需要,则根据Android版本下载对应的gapps包,重启到recovery,刷入包即可。下载地址:http://www.appkg.com/gapps 或  http://wiki.cyanogenmod.org/w/Google_Apps 或 国内镜像下载:http://gmirror.org/#gapps

刷入以后,重启就可以看见google play,如果没安装成功,则解压缩zip包,用root explorer复制gapps-xxxx/system/app中的所有apk到 系统的/system/app中,重启即可。

使用命令创建Android项目

官方文档有详细说明:http://developer.android.com/intl/zh-cn/training/basics/firstapp/creating-project.html#CommandLine 

如何解决Android模拟器虚拟机太卡

安装virtualbox,下载www.android-x86.org的最新iso,安装,就不卡了。使用网络调试android即可。

详细步骤:http://www.apkbus.com/android-43835-1-1.html

Android官方arm虚拟机未使用“CPU虚拟化”,所以很卡。而Virtualbox和iOS虚拟机都是x86的,都能调用“CPU虚拟化技术”,很流畅。

IDE

建议使用新出的、目前google主推的android studio,请看:http://tools.android.com/download/studio/canary/latest ,国内镜像下载:http://gmirror.org/#android-studio

老公司老项目会使用eclipse,请看:http://www.cnblogs.com/sink_cup/archive/2011/10/31/ubuntu_x64_eclipse_android_sdk_java.html

 

截图: