管理员管理员组
文章数:302931
.htm
JDK安装:
LinuxMint13自带了OpenJDK,但这不是我想要的,我们想要sun-java6。
1、安装sun的jdk之前,先删除OpenJDK,打开Synaptic,搜索OpenJDK,彻底删除所有包。
或者执行 sudoapt-getautoremoveopenjdk-6-jre
2、从sun.html官网下载最新的安装文件(如:jdk-6u34-linux-x64.bin)。
减少执行权限:sudochmodu+xjdk-6u34-linux-x64.bin
将安装文件复制到/usr/lib/java/目录下
执行安装命令/jdk-6u34-linux-x64.bin
成功安装JDK后,我们就要配置JDK了。 使用命令 $ sudogedit /etc/environment 更改环境文件,添加以下代码:
路径=“/usr/lib/java/jdk1.6.0_34/bin”
CLASSPATH =“/usr/lib/java/jdk1.6.0_34/lib”
JAVA_HOME="/usr/lib/java/jdk1.6.0_34"
如果PATH已经存在,用逗号作为间隔,加上jdk的bin目录地址,这样java的环境变量就配置成功了,但是默认使用的JDK可能不是我们刚刚安装的,因为ubuntu可能有默认的jdk,比如openjdk; 因此,为了使用我们默认安装的jdk,需要执行以下命令:
$ sudo update-alternatives --install /usr/bin/javajava/usr/lib/java/jdk1.6.0_34/bin/java300
$ sudo update-alternatives --install /usr/bin/javacjavac /usr/lib/java/jdk1.6.0_34/bin/javac300
$ sudo update-alternatives --configjava
成功执行命令后,我们安装的JDK就是系统默认的。 执行命令$java-version成功查看JDK的相关信息,如:
java版本“1.6.0_34”
Java(TM) SERuntimeEnvironment (build1.6.0_34-b04)
JavaHotSpot(TM)64-BitServerVM(build20.9-b04,混合模式)
1、步骤如下:
$cd[android系统所在目录]//第一步进入要编译的目录
$.build/envsetup.sh//该脚本用于设置ANDROID的编译环境(注意旁边有一个空格)
$choosecombo//这个命令也需要在build目录下执行。 用于选择编译目标(如目标硬件、eng或user等)。通常厂商会设置自己特有的编译选项
补充:执行前两步编译系统。 android平台提供了三个编译命令:make、mmm、mm。 使用方法及环境如下:
make:不带任何参数,用于编译整个系统,耗时较长。 如果不想编译整个系统,最好不要使用
make+模块名:编译单个模块,并将与其相关的模块一起编译安卓 源码 编译,
mm:该命令需要在源码目录下使用。 它只编译当前目录中的模块。 和mmm是一样的
注意:如果知道模块名称,只需使用make+模块名称即可; 如果不知道模块名但知道模块所在目录,则使用mmh或mmm,这两个的编译时间比较短
$make//编译整个源代码
注意:如果要编译单个项目的源码,必须先编译整个项目的源码,然后再编译单个源码
Android模块编译、mm命令
如果你只需要更改某个模块的内容,但每次都必须执行make,那么你最终会等待很长时间。
使用模块编译,只需要在所在模块的目录或其子目录下执行mm,就可以编译出单独的apk。 岂不是太好了!
具体步骤:
1)打开~/.baserc文件并添加source~/I850/build/envsetup.sh。 添加您自己的文件路径,这样您就不需要在执行 mm 命令之前每次启动新终端时都引用该文件。
2)完成步骤1后,你就可以在你的模块上随便执行mm了。 如果想使用其他快捷命令,可以查看envsetup.sh文件,例如cgrep、jgrep、resgrep对不同类型的文件进行相应的查询。以及m、mmm等。
3)也可以使用adbpush将你的apk推送到模拟器或者移动端,也可以在项目根目录下通过make-snod生成新的system.img
2、源码编译后找到对应apk的位置路径:
/home/wangxianming/aw813/AP/out/target/product/aw813/system/app/Mms.apk//找到邮件对应的apk
3.如何在手机中使用编译好的adb将编译好的adb烧录到手机中:
(1)$cd/aw813/AP/out/host/linux-x86/bin
$./adbkill-server//杀死手机中的adb
(2)$./adbdevices//标识编译好的adb
(3) 如果权限不够安卓 源码 编译,NoPermissions会使用root权限代替:
$ 苏密码:
注意:数据库必须一致! 否则烧写版本会报错!
4.安装APK
$adbinstallxxx.apk//直接安装APK
$adbinstall-rxxx.apk//安装并覆盖现有APK
本文标签:如何在Linux环境下编译Android源码
2019独角兽企业急聘Python工程师标准>>>
编译Android模拟器:
在Ubuntu下,我们可以在源码中编译自己的模拟器和SDK等编译工具。 其实这个和windows下下载的看起来是一样的。
编译Android模拟器的步骤与编译Android系统非常相似:
Øsourcebuild/envsetup.sh
Ølunch sdk-eng
Ømakesdk
每次执行make时安卓源码编译,编译系统都会手动验证之前的编译项和本次编译项。 如果两次不同,所有目标代码都会被删除,当然现在是./build/core/main.mk。
71#这允许在config.make之后强制执行cleanbuild-included
72 #环境设置已完成,但在我们生成任何依赖项之前。
73 #filedoestherm-rfinlinesothedepswhicharealldonebelowwill
第74章
75 包括 $(BUILD_SYSTEM)/cleanbuild.mk
我们把第75行注释掉,这样我们就不用每次都手动删除之前编译的中间代码并重新编译了。
编译完成后效果如右图所示:
sdk安装在以下目录:android_source/out/host/linux-x86/sdk
该目录下有一个压缩包,上面我们从eclipse中更新下载指定Target的sdk包。
如果你做过app开发,你就会知道,我们只有下载不同版本的sdk后,才会创建不同版本的模拟器。 编译好sdk后,我们就可以创建并运行Android4.0模拟器了。
$ cd android_source/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools
首先查看当前编译的sdk的id号来创建模拟器:
$androidlisttargets
可用的 Android 目标:
----------
id:1或“android-14”
名称:Android4.0
类型:平台
API 级别:14
修订:2
外观:WXGA800、WQVGA400、WXGA720、HVGA、WVGA854、WQVGA432、WVGA800(默认)、QVGA、WSVGA
ABI:无 ABI。
创建一个模拟器:
$ androidcreateavd-nmydroid-t1
注:-n表示指定模拟器的名称安卓源码编译,-t表示指定创建模拟的版本id
启动模拟器:
$模拟器-avdmydroid&
因为模拟器需要启动android系统,所以需要用到几个镜像文件,分别是:kernel-qemu、system.img、userdata.img、ramdisk.img
kernel-qemu:内核镜像文件,是Linux操作系统为qemu模拟器编译的内核文件,上面安装了qemu模拟的硬件驱动程序。 如果以后把Android移植到开发板或者手机上,那么第一步首先要做一个支持开发板或者手机的内核。
system.img:是android系统的文件系统,里面包含了android系统的应用程序(apk)、系统使用的各种库(jar、so、a)和资源、配置文件(etc目录下) ,以及系统命令(bin、usr/bin、xbin),镜像文件由out/target/product/generic/system目录打包生成,我们可以将该目录的内容多样化,例如如果想要android系统默认要安装应用程序,请将安装的apk文件复制到out/target/product/PRODUCT/system/app目录下。
userdata.img:用户数据镜像,包含程序安装信息,如windows的C:/ProgramFiles/目录。
ramdisk.img:显存C盘镜像,这个文件对于没有做过Linux移植的人来说不太容易理解,linux内核启动时,需要挂载一个文件系统作为自己的根文件系统,一般文件系统存储在块设备上,即硬盘或者闪存上,富含Linux内核在启动过程中所依赖的一些程序和配置文件。 上述userdata.img和system.img镜像在Linux系统启动后挂起。 下载到其数据、系统目录。
我们可以通过下面的脚本run_emulator.sh指定Android模拟器加载指定的镜像文件:
#!/bin/bash
PWD_PATH=`密码`
IMG_PATH=$PWD_PATH/out/target/product/generic
exportPATH=$PWD_PATH/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools:$PATH
exportANDROID_PRODUCT_OUT=$PWD_PATH/out/target/product/generic
exportANDROID_SWT=$PWD_PATH/out/host/linux-x86/framework
模拟器内核 $PWD_PATH/kernel/goldfish/arch/arm/boot/zImage
笔记:
ANDROID_PRODUCT_OUT:必须指定环境变量,模拟器会搜索该环境变量下的所有镜像文件
-kernel:指定内核镜像
事实上,你也可以单独指定每个图像文件,通过以下命令:
$emulator-kernel$PWD_PATH/kernel/goldfish/arch/arm/boot/zImage
-图像$IMG_PATH/system.img
-数据$IMG_PATH/userdata.img
-ramdisk $IMG_PATH/ramdisk.img
笔记:
-system指定system.img
-data 指定userdata.img
-ramdisk 指定ramdisk.img
如果我们以后要运行adbshell连接模拟器,必须使用root权限,否则会出现错误:error: device not found。
通过启动Android系统->SystemSettings->Aboutphone,我们可以看到是用我们自己编译的内核启动的。