androidlinux编译环境
❶ linux怎么搭建Android开发环境
一、安装前所需要准备的软件:
1. JDK(jdk-6u27-linux-i586.bin
2. AndroidSDK(android-sdk_r12-linux_x86)
3. eclipse(eclipse-SDK-3.7-linux-gtk.tar.gz)
在Linux下创建一个android用户,用来管理android的开发环境,把准备的软件拷贝到/home/android目录下,让我们开始搭建环境吧!
二、安装JDK,eclipse和AndroidSDK都依赖于jdk的环境,确保工作的目录是/home/android
为jdk-6u27-linux-1586.bin添加可执行权限 chmod u+x jdk-6u27-linux-1586.bin
使用 ./jdk-6u27-linux-1586.bin
配置环境变量,Linux下需要修改/etc/profile文件,使用 sudo vi /etc/profile
❷ linux环境下开发android跟windows下开发有什么区别
1,很多代码用到了 NDK,NDK 需要用 Linux 编译更方便,比方说绝大多数游戏都要用 NDK。
2,很多开发者需要涉及 android 源代码,必须在 Linux 下编译。
3,CPU 产商提供的工具链是 Linux 版本,围绕该 CPU 进行的相关优化,相关代码必须在 Linux 下进行开发(尤其是硬件解码音视频播放等等功能)。
4,AVD只是界面分辨率兼容性测试的时候临时用一下的,实际调试一定是用真机,所以android开发效率与AVD性能无关。
5,Windows 环境只能做很有限的一小部分与硬件无关的 android 开发工作,作为硬件厂商,随机内置的程序当然都要针对该硬件优化,这些工作必须使用 Linux 来做,因此从硬件产商的角度来看,这与 Windows 环境“烂不烂”无关,而是“能不能”的问题。
❸ android ndk编译arm-linux平台可执行程序
既然是移植就不能再用原来的Android ndk进行编译了吧,不能图省事啊,要移植当然要换编译环境重新编译,Android ndk编译不出arm-linux程序的,要重新写Makefile也没办法呀,还是交叉编译吧。
❹ 如何在Linux平台下编译android工程
我是在windows下做开发的,但是编译环境还是在linux上。。大体的步骤如下:
1.首先在windows环境下编写工程(eclipse下编写android工程)
2.打开linux开发环境(tcl平台:\\10.120.90.207\longc\workspace\code\project\kernel\android\JB)
3.将运行环境的脚本文件运行./evnsetup:配置android运行环境
/JB/build/
找到envsetup.sh
运行.envsetup.sh(source envsetup.h或./envsetup)
所有操作都在终端完成
4.将工程文件拷贝到指定目录下(TCL平台下的自带程序在package\TCL_Apps目录下)
5.删除一些文件
保留/res,/src,AndroidManifest.xml三个文件
创建Android.mk(makefile文件,linux下用makefile文件来集成一些命令,运行程序的指令和设置都在此处)Android.mk的编写
6.编译
进入工程文件目录
输入mm命令进行编译。
7.生成apk文件,编译完成
❺ 如何在linux下编译windows版android sdk-czxttkl
1.下好Android源码
2.在Terminal中输入:$ sudo apt-get install mingw32
tofrodos
mingw32是一个交叉编译器,
tofrodos用于unix和dos之间命令转换
映像中交叉编译器的定义是能跨平台编译某些代码所需要的东西.
其他的还得仔细研究
3. 先编译好默认的android平台和linux版的sdk,在Terminal中跳转到android源码目录,输入:
$
. build/envsetup.sh
$ lunch full-eng
$
make
$
. build/envsetup.sh
$ lunch sdk-eng
$ make
sdk
若不先编译android默认的平台和linux版的sdk,很可能产生不可预知的错误,例如:
Error:
Install:
out/host/windows-x86/bin/sdklauncher.exe
make[1]: *** No rule to make
target out/host/linux-x86/bin/emugen,
needed
by
`out/host/windows-x86/obj/STATIC_LIBRARIES/
lib_renderControl_dec_intermediates/renderControl_dec.cpp'.
Stop.
make[1]: Leaving directory
make: *** [winsdk-tools] Error
2
4.正式开始编译windows版的android
sdk。在Terminal中跳转到android源码目录,输入:
$ . build/envsetup.sh
$ lunch
sdk-eng
$
make win_sdk
5.最后生成的sdk位于:
ANDROID_SOURCE_ROOT/out/host/windows/sdk
❻ 如何在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有任何问题,请及时与我联系,我们共同探讨。
❼ 将LINUX软件编译成安卓可用的APK
android虽然是基于linux的,但是他们并不是二进制兼容的。
android的工作方式是,在linux系统中运行一个基于qemu的虚拟机,在虚拟机中运行java虚拟机。android程序的api还是以java为主的,所以android是不支持J2sejava程序的。
所以一个随便的linux程序代码是不可以编译成android软件的。
如果你想在android手机上运行python perl 或者shall脚本的话,是可以的,在android上有专门的终端什么的。
❽ 如何加快linux android 的编译速度
项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。
1. 使用tmpfs来代替部分IO读写
2.ccache,可以将ccache的缓存文件设置在tmpfs上,但是这样的话,每次开机后,ccache的缓存文件会丢失
3.distcc,多机器编译
4.将屏幕输出打印到内存文件或者/dev/null中,避免终端设备(慢速设备)拖慢速度。
tmpfs
有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。
这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel来测试一下编译速度:
用物理磁盘:40分16秒
用tmpfs:39分56秒
呃……没什么变化。看来编译慢很大程度上瓶颈并不在IO上面。但对于一个实际项目来说,编译过程中可能还会有打包等IO密集的操作,所以只要可能,用tmpfs是有益无害的。当然对于大项目来说,你需要有足够的内存才能负担得起这个tmpfs的开销。
make -j
既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
还是用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一个编译器驱动器。第一趟编译时ccache缓存了GCC的“-E”输出、编译选项以及.o文件到$HOME/.ccache。第二次编译时尽量利用缓存,必要时更新缓存。所以即使"make clean; make"也能从中获得好处。ccache是经过仔细编写的,确保了与直接使用GCC获得完全相同的输出。
ccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。这对于玩Kernel来说实在是再好不过了,因为经常需要修改一些Kernel的代码,然后再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作,只有每次make clean再make才行。
安装完ccache后,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local /bin会在PATH中排在/usr/bin前面)。
安装的另外一种方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路径加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
这样每次启动g++的时候都会启动/usr/lib/ccache/bin/g++,而不会启动/usr/bin/g++
效果跟使用命令行ccache g++效果一样
这样每次用户登录时,使用g++编译器时会自动启动ccache
继续测试:
用ccache的第一次编译(make -j4):23分38秒
用ccache的第二次编译(make -j4):8分48秒
用ccache的第三次编译(修改若干配置,make -j4):23分48秒
看来修改配置(我改了CPU类型...)对ccache的影响是很大的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。
可以用ccache -s来查看cache的使用和命中情况:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,显然只有第二编次译时cache命中了,cache miss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。
distcc
一台机器的能力有限,可以联合多台电脑一起来编译。这在公司的日常开发中也是可行的,因为可能每个开发人员都有自己的开发编译环境,它们的编译器版本一般是一致的,公司的网络也通常具有较好的性能。这时就是distcc大显身手的时候了。
使用distcc,并不像想象中那样要求每台电脑都具有完全一致的环境,它只要求源代码可以用make -j并行编译,并且参与分布式编译的电脑系统中具有相同的编译器。因为它的原理只是把预处理好的源文件分发到多台计算机上,预处理、编译后的目标文件的链接和其它除编译以外的工作仍然是在发起编译的主控电脑上完成,所以只要求发起编译的那台机器具备一套完整的编译环境就可以了。
distcc安装后,可以启动一下它的服务:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默认的3632端口允许来自同一个网络的distcc连接。
然后设置一下DISTCC_HOSTS环境变量,设置可以参与编译的机器列表。通常localhost也参与编译,但如果可以参与编译的机器很多,则可以把localhost从这个列表中去掉,这样本机就完全只是进行预处理、分发和链接了,编译都在别的机器上完成。因为机器很多时,localhost的处理负担很重,所以它就不再“兼职”编译了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然后与ccache类似把g++,gcc等常用的命令链接到/usr/bin/distcc上就可以了。
在make的时候,也必须用-j参数,一般是参数可以用所有参用编译的计算机CPU内核总数的两倍做为并行的任务数。
同样测试一下:
一台双核计算机,make -j4:23分16秒
两台双核计算机,make -j4:16分40秒
两台双核计算机,make -j8:15分49秒
跟最开始用一台双核时的23分钟相比,还是快了不少的。如果有更多的计算机加入,也可以得到更好的效果。
在编译过程中可以用distccmon-text来查看编译任务的分配情况。distcc也可以与ccache同时使用,通过设置一个环境变量就可以做到,非常方便。
总结一下:
tmpfs: 解决IO瓶颈,充分利用本机内存资源
make -j: 充分利用本机计算资源
distcc: 利用多台计算机资源
ccache: 减少重复编译相同代码的时间
这些工具的好处都在于布署的成本相对较低,综合利用这些工具,就可以轻轻松松的节省相当可观的时间。上面介绍的都是这些工具最基本的用法,更多的用法可以参考它们各自的man page。
5.还有提速方法是把屏幕输出重定向到内存文件或/dev/null,因对终端设备(慢速设备)的阻塞写操作也会拖慢速度。推荐内存文件,这样发生错误时,能够查看。
❾ android代码在哪些linux平台运行编译,有人说只能在Ubuntu下编译
所有linux系统中都可以,在windows中编译的话可以下载telnet程序或secureCRT程序用linux中同样的命令进行android源码的编译。
❿ android 系统安装linux的软件 比如安装一个GCC编译器,在手机上面编译*.c文件
这个。。。不可以的吧。。。我们还知道智能电视是android系统的,但电视安装应用只能从应用商店,不能从网上下载呢。。。android不能安装linux的软件的