当前位置: 首页 > news >正文

Android之ubuntu源码开发环境搭建笔记

为什么80%的码农都做不了架构师?>>>   hot3.png

昨天,把电脑主机全换了,因此之前的工作环境得重新搭建,我是既开心又纠结,开心的是可以用高配置的电脑,纠结的是搭环境比较麻烦,稍有不慎,就会导致源代码编译不过,前功尽弃。为了减少工作量,以及避免不必要掉麻烦。我都是尽量保持与之前电脑相同的软件以及配置方式,终于今天全编译代码通过了,总共花了40多分钟,比之前电脑的3个多小时缩短了很多宝贵时间,总之就是一个字:爽,两个字:超爽。

下图是新电脑配置,其实要是加个SSD,估计编译速度又得提高一个档次


OK,进入正题,本人安装的是64位的ubuntu 11.04,这是为了与之前老电脑一致(之前是32位的),谷歌也建议我们编译4.0以上代码使用11.04,其实个人觉得,12.04应该也是没什么很大的问题的,而且11.04已经没有官方源了,我是为了省事,才继续使用11.04。

1.首先是gcc和g++版本:

输入命令:

gcc -v

对应版本:... ...gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)


g++ -v

对应版本:... ...gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)


2.Java版本:

javac -version

我这里是:javac 1.6.0_37

安装:32位jdk下载

64位jdk下载

下载好Jdk后执行下面的操作

 sudo mv jdk-6u37-linux-i586.bin /usr/bin
 sudo chmod +x /usr/bin/jdk-6u37-linux-i586.bin
 sudo ./usr/bin/jdk-6u37-linux-i586.bin
 cd
 vim .profile
增加下面两行到文件后面:

export JAVAHOME=/usr/bin/jdk1.6.0_37/
export PATH=$JAVAHOME/bin:$PATH


存盘重启工具就生效了

如果安装64位的操作系统,安装新版本java的时候可能会报错,先尝试下面的命令看能否解决(我没 遇到)

 sudo apt-get install g++-multilib
 sudo apt-get install gcc-multilib


如果编译报错androideabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

sudo apt-get install lib32z1
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev valgrind zlib1g-d
sudo apt-get install vim subversion
sudo apt-get install openssh-server
sudo apt-get install libarchive-zip-perl

参考 http://source.android.com/source/initializing.html


3.ndk配置

我下载了最新的ndk-r9,从官网下载后,解压到任意位置,我这里是:
/home/topwise/way/adt-bundle-linux-x86_64-20130917/android-ndk-r9

然后配置环境变量:
sudo vim /etc/environment
我的电脑显示:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/topwise/way/adt-bundle-linux-x86_64-20130917/android-ndk-r9"
最后那个路径就是我们指定ndk路径。保存,然后注销或重启一下电脑,打开终端输入ndk-build即可。


4.adb配置:

我没有单独下载adb工具,因为我们在谷歌官网下载eclipse时,里面自带了。比如我下载的是:adt-bundle-linux-x86_64-20130917

adb工具就在adt-bundle-linux-x86_64-20130917/sdk/platform-tools目录下面

我们可以cd到此目录下,然后执行:

chmod 777 adb

sudo cp adb /usr/bin

即可


千万不要以为就此结束了,我们此时连接一台手机输入adb shell,会发现连接不上,因为我们还少了两步:

修改文件(可能不同电脑文件名不同,但是.rules后缀是一样的):
sudo vim /etc/udev/rules.d/70-persistent-net.rules

在末尾加上一句:
SUBSYSTEM=="usb",ATTRS{idVendor}=="1782",ATTRS{idProduct}=="5d04",MODE="0666"

注意:idVendor对应下面ID后4位,idProduct对于冒号后面4位数字通过lsusb命令可以查看如下类似的
Bus 002 Device 014: ID 1782:4d00 Spreadtrum Communications Inc


最后,我们需要指定手机端口号:

vim ~/.android/adb_usb.ini

如果没有此文件,新建一个就是,在文件末尾加上0x1782,也是对于上面ID后4位数字,记得加上0x,因为是16进制的。


OK,简单记一下笔记,以备将来


转载于:https://my.oschina.net/cjkall/blog/195800

相关文章:

  • [转]Nodejs基础中间件Connect
  • mybatis 中的where标签
  • 高并发量网站解决方案
  • WinPcap的开发与应用:获取设备列表
  • 什么是JSON ?
  • Java-优秀博客推荐
  • ConfigFileApplicationListener
  • iOS网络监测区分2、3、4G
  • 剑指offer---3、按之字形顺序打印二叉树
  • 艾森尼克:提供高品质大通量RO膜,树立滤芯行业新标杆!
  • 《JAVA——帮你解决高并发秒杀》
  • MyBatis源码分析-MyBatis初始化流程
  • 左神算法进阶班1_4Manacher算法
  • centos下安装mysql5.7
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • css布局,左右固定中间自适应实现
  • emacs初体验
  • JavaScript的使用你知道几种?(上)
  • JS专题之继承
  • Just for fun——迅速写完快速排序
  • MySQL数据库运维之数据恢复
  • nginx 配置多 域名 + 多 https
  • QQ浏览器x5内核的兼容性问题
  • unity如何实现一个固定宽度的orthagraphic相机
  • 初识 webpack
  • 初探 Vue 生命周期和钩子函数
  • 基于游标的分页接口实现
  • 老板让我十分钟上手nx-admin
  • 前端路由实现-history
  • 深入浅出Node.js
  • 算法系列——算法入门之递归分而治之思想的实现
  • 我是如何设计 Upload 上传组件的
  • 详解NodeJs流之一
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • $.ajax()方法详解
  • (20050108)又读《平凡的世界》
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (rabbitmq的高级特性)消息可靠性
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第二周)效能测试
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .dwp和.webpart的区别
  • .net core 连接数据库,通过数据库生成Modell
  • .Net Core与存储过程(一)
  • .net 怎么循环得到数组里的值_关于js数组
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .net操作Excel出错解决
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • 。Net下Windows服务程序开发疑惑
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思