linux android环境的搭建,交叉编译环境的搭建
如何在linux下配置AndroidStudio开发环境
1.选择linux系统
个人比较推荐国产的UbuntuKylin,目前最新的系统已经更新到16.04了,这个系统集合了原生Ubuntu系统的优点,有具有中国特色,比较适合国人使用。还有一个国产系统比较推荐,就是deepin,目前已经跟新到15.1.1,这个系统界面真心不错。
这两个系统都内嵌了使用人群基数最大的搜狗输入法,解决了最基本的文字输入问题,qq和微信都能使用,解决了基本沟通问题。废话不多说,首先看一下怎么制作linux系统U盘启动盘。deepin可以使用官方系统文件deepin-boot-maker-1.0.exe制作,具体教程请自行百度,这里不在赘述。
这里主要以UbuntuKylin系统为例子(这里下载:64位,32位,给大家介绍一下如何在linux下配置Android Studio。
系统文件.iso下载完毕以后,下载u盘制作工具Rufus进行制作(下载Rufus),这个工具比较推荐,本人使用其他u盘制作工具,一直没安装成功,最后使用Rufus(制作过程中,会提示要下载两个小文件,同意即可)终于完美解决。界面比较简单,具体操作流程软件打开以后一目了然,不细说。
2.安装jdk及配置环境变量
jdk当然要安装linux版本的(这里选用1.7版本的),下载完毕,进行解压,然后配置环境变量,打开终端或者使用快捷键ctrl+alt+T,输入一下命令:
$sudo gedit~/.bashrc
在打开的文件末尾添加以下代码:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=${JAVA_HOME}/bin:$PATH
到此为止,jdk的环境变量就配置完毕了
3.安装Android Studio
下载android studio 2.0,这个版本不带sdk,所以安装完毕后,需要在android的studio中下载sdk。文件下载完成后,可以看到是一个.zip文件,直接解压提取文件,然后在/android-studio/bin中可以看到有一个文件叫做“studio.sh”,这个文件就是android studio的可执行文件,相当于windows中的.exe文件。但是默认是不能直接执行的,所以需要在/android-studio/bin目录下打开终端,输入以下命令,执行.sh文件:
sh studio.sh
耐心等待几秒钟后,就会看到android studio熟悉的安装界面,按照步骤一步一步执行,就能完成android studio的安装,然后像在windows平台一样安装sdk,不再废话。
4.安装Genymotion和virtualbox
android studio安装完毕以后,如果能有一个android模拟器像windows下的Genymotion一样就好了。幸运的是,在Genymotion真的有了linux版本。点此下载Genymotion
下载完毕后,大家发现是一个.bin文件,是不能直接打开运行的,这时候需要在下载目录中打开终端输入一下命令
chmod+x genymotion-2.6.0-ubuntu15_x64.bin
接着用下面的命令执行即可:
./genymotion-2.6.0-ubuntu15_x64.bin
如果电脑里边没有安装virtualbox,Genymotion是不能成功运行的,所以在运行Genymotion之前需要安装virtualbox,virtualbox下载完毕后,发现这是一个.deb文件,如果电脑安装了Ubuntu Software,可以双击直接运行,否则,需要打开终端输入一下命令进行安装:
sudo dpkg-i virtualbox-5.0_5.0.18-106667~Ubuntu~xenial_amd64.deb
安装完成后,就可以正常使用Genymotion了。
到这里,在linux下配置Android Studio开发环境已经结束,可以享受愉快地开发过程了。
时间匆忙没来的及截图,全是文字性叙述,谢谢各位朋友坚持读完。关于linux下配置AS有任何问题,请及时与我联系,我们共同探讨。
另将文中软件下载地址一并放到这里:
1.UbuntuKylin系统
64位,
32位,
2.u盘制作工具Rufus
3.jdk1.7(linux版本)
4.android studio 2.0(linux版本)
5.Genymotion(linux版本)
6.virtualbox((linux版本)
文/豆福(简书作者)
原文链接:
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
linux怎么搭建android开发环境
在ubuntu下搭建android开发环境,准备学习一下android开发。经过2个多小时,终于搭建成功。
1、安装JDK
首先到oracle的官网上下载linux版本的JDK(网址为:-download-400750.html),这里选择 Linux x86- Self Extracting Installer。直接运行安装,先把这个文件cp到你的安装目录下,然后在你的安装目录直接执行:
./jdk-6u26-linux-i586.bin
如果执行失败是因为没有执行权限,那么还需要加上执行权限:
chmod+x./jdk-6u26-linux-i586.bin
安装程序会自动给你安装到当前目录的jdk1.6.0_26目录下。程序安装好了,接着需要设置环境变量。执行:
sudo gedit/etc/profile
执行中提示:(gedit:4849): Gtk-WARNING**: Attempting to store changes into `/root/.local这个错误,从网上搜索了一下,sudo mkdir-p/root/.local/share/也就是表示以超级用户(sudo命令)身份创建目录,这样解决了这个问题。
在配置文件最后加入如下部分:
export JAVA_HOME=/home/jackwong/jdk1.6.0_26
export JRE_HOME=/home/jackwong/jdk1.6.0_26/jre
export PATH=/home/jackwong/jdk1.6.0_26/bin:$PATH
export CLASSPATH=.:/home/jackwong/jdk1.6.0_26/lib:/home/jackwong/jdk1.6.0_26/jre/lib
保存,然后注销当前用户,重新登录,环境变量就生效了。
验证是否安装成功:
执行:
java-version
如果出现:
java version"1.6.0_26"
Java(TM) SE Runtime Environment(build 1.6.0_26-b06)
Java HotSpot(TM) Server VM(build 20.0-b11, mixed mode)
这样的信息,就说明OK了。
注意,ubuntu默认已经安装了openjdk,所以你就算不安装jdk,执行java-version也不会报错,但是报告的信息和安装了jdk是不一样的,请注意区分。
2.安装eclipse
目前官方推荐开发环境是eclipse+ADT。当然你完全可以采用其他任何一种开发环境,但是我还是选择了官方的推荐,因为一切都是免费的。下载eclipse的地址是:我下载的是32bit linux:
Eclipse IDE for Java Developers。
我下载下来的文件是eclipse-java-juno-SR1-linux-gtk.tar.gz
当然首先是解压,执行命令:
tar zvxf eclipse-java-juno-SR1-linux-gtk.tar.gz
解压成功之后,就出现了一个eclipse目录。这个目录就是安装好的eclipse了,进入这个目录,执行eclipse文件,即可启动eclipse。
自己建立桌面启动快捷方式,即桌面右键创建启动器。
3.下载安装Android SDK Starter Package
Android SDK Starter Package这个只是SDK的核心基本工具,有了它,再利用它的管理工具下载其他你需要到部分。看到这个目录中有个android脚本文件了吗?执行它,就会启动Android SDK and AVD Manager,这个工具可以帮你下载其他你需要的部分,还可以创建模拟机。
下载地址是:
一般是下载最新版,我下载的:android-sdk_r21.1-linux.tgz。
接下来当然是解包了:tar zvxf android-sdk_r21.1-linux.tgz
解包完毕,就会在当前目录下出现android-sdk-linux_x86目录了。这个目录下就是sdk的基本工具了。记住这个目录,因为以后你运行工具或者设置ADT的时候,会需要这个目录的!
4.安装ADT(Android Development Tools)插件
ADT插件是google官方开发的Eclipse的一个插件,专门为Android应用开发而准备的。启动 Eclipse,然后选择 Help> Install New Software....。单击右上角的Add按钮,在弹出的 Add Repository对话框中,Name一栏目填写"ADT Plugin",在Location一栏就有两个选择,一个是填入下载网址:,这样就可以网上下载安装。第二个选择是如果我已经下载了ADT Plugin,那么就单击旁边的Archive按钮,直接找到插件所在到包即可。这里我用的是第一种方法。比如我用的就是第二种,把Developer SDK Tools前面的checkbox选上,然后单击下面的next按钮,然后就等着安装进度条完成吧,其中会出现安装软件的列表,你单击Next即可,然后会出现license,你必须选择agree才行,然后单击finish就完成了。安装完成之后,重启eclipse即可。
5.配置ADT插件
配置的内容就是要修改在eclipse中到ADT插件的引用指向,需要指向前面安装好的Android SDK目录,还记得这个目录吗?
启动eclipse,选择Window> Preferences..
在弹出的Preferences对话框中左边选择Android标签,右边SDK location选择你当初Android SDK的目录即可。比如我到目录是:/home/AAA/android-sdk-linux_x86(AAA这里是我的用户名),然后单击apply,再单击ok即可。
在这个过程中会弹出一个对话框问你是否要参加google的满意度调查报告。你可以选择参加还是不参加。单击process按钮即可。
安装好之后,你可以常用Help> Check for Updates选项来保持ADT保持最新。
6.添加Android操作系统和部件
到目前为止,基本配置都差不多了,但是为了开发android应用,还必须添加一个android操作系统,用于模拟器模拟你的应用程序。当然还有一些其他部件需要安装。其实就是通过SDK工具包中的Android SDK Manager来完成。当然在eclipse中可以直接启动这个程序:Window> Android SDK Manager.
当然也可以直接运行sdk目录下的tools目录下的android脚本来启动。
推荐的部件一般是:
SDK Tools,这个你安装了sdk starter package实际上已经装好了。
SDK Platform-tools,这个要装。
SDK platform,这个至少需要一个。也就是操作系统,你可以下载多个,比如2.2,3.1你可以都下载,但是至少必须一个,因为模拟器运行的时候是必须要的。所以,如果你想各种平台都模拟测试一下,那么你就需要各种版本的android都下载一个。
我下载了SDK Platform-tools和Android 2.3.3,Android 4.1,Extras几个包。
下载完成之后,Android的开发环境就搭建好了。
7.对模拟器进行设置
选择windows->Android Virtual Device Manager点击new,具体配置如图.
完成后点击start,虚拟机运行后,可将语言调整为中文简体。
8.hello,android测试程序
启动eclipse,选择File->New->Project...,选择android下Android Application Project.
Application name:Hello,Android这是应用程序名字,也是程序运行的时候显示在屏幕上方的文字,注意第一个字母要大写。
project name:HelloAndroid这是项目名称,也就是包含文件的目录名称
Package Name:my.android这个不用解释,学过java的都应该知道,这是类的包名。
其它地方默认就可以了。
然后一路next,在Activity name处设置为:Helloandroidactivity(注意要求第一个字母大写)就可以了。
完成后,在my.android下找到Helloandroidactivity.java,打开后,把里面的onCreate方法的代码更新如下:
import android.widget.TextView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
TextView tv= new TextView(this);
tv.setText("Hello, Android!=你好,安卓!");
setContentView(tv);
}
然后运行,等一段时间,会出现android虚拟机,并运行该程序。
如何搭建 android 开发环境
一.认识android的架构
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
二.搭建环境
搭建开发环境
对国内的开发者来说最痛苦的是无法去访问android开发网站。为了更好的认识世界,对程序员来说,会翻墙也是的一门技术,带你去领略墙外的世界,好了,不废话了,国内开发者访问(androiddevtools)上面已经有了所有你要的资源,同时可以下载到我们的主角framework
但是这样的搭建只能去阅读源代码,我们无法去更进一步去实现自己的rom,我们看到锤子的系统在早期的开放rom是自己从新实现了framework的代码,现在看起来他成功了,所以我们还要去搭建android系统的源码编译环境。
搭建源码编译环境
三.开始主题
在一开始写c程序的时候都有一个运行的入口,比如
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
//这里的main就是应用的入口
int main(int argc, const char* argv[]){
return 0;
}
在计算机网络原理中我们用socket实现一个服务器端,不断的接听客户端的访问,而且他的代码是这样实现的:
#include<winsock2.h>
#pragma comment(lib,"WS2_32.lib")
#include<stdio.h>
void main()
{
WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;
wVersionRequested= MAKEWORD(2, 2);//2.2版本的套接字
//加载套接字库,如果失败返回
err= WSAStartup(wVersionRequested,&wsaData);
if(err!= 0)
{
return;
}
//判断高低字节是不是2,如果不是2.2的版本则退出
if(LOBYTE(wsaData.wVersion)!= 2||
HIBYTE(wsaData.wVersion)!= 2)
{
return;
}
//创建流式套接字,基于TCP(SOCK_STREAM)
SOCKET socSrv= socket(AF_INET, SOCK_STREAM, 0);
//Socket地址结构体的创建
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr= htonl(INADDR_ANY);//转换Unsigned long型为网络字节序格
addrSrv.sin_family= AF_INET;//指定地址簇
addrSrv.sin_port= htons(6000);
//指定端口号,除sin_family参数外,其它参数都是网络字节序,因此需要转换
//将套接字绑定到一个端口号和本地地址上
bind(socSrv,(SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//必须用sizeof,strlen不行
listen(socSrv, 5);
SOCKADDR_IN addrClient;//字义用来接收客户端Socket的结构体
int len= sizeof(SOCKADDR);//初始化参数,这个参数必须进行初始化,sizeof
//循环等待接受客户端发送请求
while(1)
{
//等待客户请求到来;当请求到来后,接受连接请求,
//返回一个新的对应于此次连接的套接字(accept)。
//此时程序在此发生阻塞
SOCKET sockConn= accept(socSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"Welcome%s to JoyChou",
inet_ntoa(addrClient.sin_addr));//格式化输出
//用返回的套接字和客户端进行通信
send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多发送一个字节
//接收数据
char recvBuf[100];
recv(sockConn, recvBuf, 100, 0);
printf("%s\\n", recvBuf);
closesocket(sockConn);
}
}
他采用了一个while死循环去监听客户端的请求。
先上源代码
public final class ActivityThread{
public static void main(String[] args){
SamplingProfilerIntegration.start();
CloseGuard.setEnabled(false);
Environment.initForCurrentUser();
EventLogger.setReporter(new EventLoggingReporter());
Security.addProvider(new AndroidKeyStoreProvider());
final File configDir= Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);
Process.setArgV0("<pre-initialized>");
Looper.prepareMainLooper();
//从中可以看到为app开辟了一个线程进入了looper之中
ActivityThread thread= new ActivityThread();
thread.attach(false);
if(sMainThreadHandler== null){
sMainThreadHandler= thread.getHandler();
}
AsyncTask.init();
if(false){
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG,"ActivityThread"));
}
Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");
}
}
看到源码失望了,没有一个while循环啊,其实用了他方法实现
//用一个looper的机制循环监听响应
Looper.prepareMainLooper();
Looper.loop();
进一步深入代码
public static void loop(){
final Looper me= myLooper();
if(me== null){
throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread.");
}
final MessageQueue queue= me.mQueue;
Binder.clearCallingIdentity();
final long ident= Binder.clearCallingIdentity();
//在这里看到了一个循环监听消息
for(;;){
Message msg= queue.next();// might block
if(msg== null){
// No message indicates that the message queue is quitting.
return;
}
Printer logging= me.mLogging;
if(logging!= null){
logging.println(">>>>> Dispatching to"+ msg.target+""+
msg.callback+":"+ msg.what);
}
msg.target.dispatchMessage(msg);
if(logging!= null){
logging.println("<<<<< Finished to"+ msg.target+""+ msg.callback);
}
// Make sure that during the course of dispatching the
// identity of the thread wasn't corrupted.
final long newIdent= Binder.clearCallingIdentity();
if(ident!= newIdent){
Log.wtf(TAG,"Thread identity changed from 0x"
+ Long.toHexString(ident)+" to 0x"
+ Long.toHexString(newIdent)+" while dispatching to"
+ msg.target.getClass().getName()+""
+ msg.callback+" what="+ msg.what);
}
msg.recycleUnchecked();
}
}