开发环境
http://dengzhangtao.iteye.com/blog/1636477
1.准备编译环境(ubuntu系统)
32位和64位系统需要安装的工具:
(编译cm10,用64位)
命令:
apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl
libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool
64位系统安装这些:
命令:
apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib
新建目录
命令:
mkdir -p ~/bin
安装repo 命令
用下面的命令下载“repo”二进制文件并修改权限为可执行:
命令:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
将 ~/bin 目录导出到PATH变量
确保 ~/bin 目录 在PATH变量中,那样方便使用repo命令,否则就要像下面那样每次导出到PATH变量:
命令:
export PATH=${PATH}:~/bin
2.初始化源代码仓库
新建目录用于下载源代码,并切换到此目录:
命令:
mkdir -p ~/Source
命令:
cd Source
进入目录用下面的命令初始化仓库:
CM 10.1 :
命令:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
下载源代码
命令:
repo sync
这就是同步源代码,时间很长,下载大概8G大小。记住这个命令,经常会使用到,用于更新CyanogenMod 最新的源代码
获取预编译应用
命令:
cd ~/Source/vendor/cm
命令:
./get-prebuilts
准备指定设备的代码
当源代码下载完成后,输入:
命令(.后面是有个空格的):
. build/envsetup.sh
然后输入
命令:
breakfast ******
*****就是手机的代码名称,如p970,就是breakfast p970,一定要确保你的手机在CyanogenMod 官方是有rom发布过的。
提取手机中编译所需文件
确保你的手机连接上电脑,打开了usb调试模式。
在目录~/Source/device/***/***** 运行这个脚本proprietary-files.sh:
命令:
./extract-files.sh
***是手机的厂商如Samsung HTC lge,*****是手机代码名称如p970;
所以lg p970是目录:~/Source/device/lge/p970
打开提取文件快速编译
命令:
export USE_CCACHE=1
开始编译
命令:
cd ~/Source
brunch *****
***** 是手机代码名称,如p970
等编译完成,会提示生成了刷机包:cm-10.1-时间-UNOFFICIAL-***.zip
编译过程中可能出错:
如找不到内核(kernel)代码,则需要使用命令:repo sync 同步内核代码;
java.math.Math类常用的常量和方法:
Math.PI 记录的圆周率
Math.E记录e的常量
Math.abs 求绝对值
Math.sin 正弦函数 Math.asin 反正弦函数
Math.cos 余弦函数 Math.acos 反余弦函数
Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数
Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度
Math.ceil 得到不小于某数的最大整数
Math.floor 得到不大于某数的最大整数
例如:Math.floor(12.7) =12.0
Math.ceil(12.7) =13.0
ceil()是天花板,即向上取整。floor是地板,向下取整。round是四舍五入。
Math.IEEEremainder 求余
Math.max 求两数中最大
Math.min 求两数中最小
Math.sqrt 求开方
Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常
Math.sqrt(x):平方根
Math.pow(x,y):x的y次方
Math.exp 求e的任意次方
Math.log10 以10为底的对数
Math.log 自然对数
Math.rint 求距离某数最近的整数(可能比某数大,也可能比它小)
Math.round 同上,返回int型或者long型(上一个函数返回double型)
Math.random 返回0,1之间的一个随机数
java.math.BigInteger(大整数):
BigInteger bi1=new BigInteger("1234567890123456890");
BigInteger bi2=BigInteger.valueOf(123L);
bi1=bi1.add(bi2);//b1+b2
bi1=bi1.multiply(bi2);//b1*b2
bi1=bi1.subtract(bi2);//b1-b2
bi1=bi1.divide(bi2);// b1/b2
java.math.BigDecimal(大浮点数):
BigDecimal bd = new BigDecimal("3.1415926");
bd = bd.setScale(2,BigDecimal.ROUND_DOWN);//取3.1415926小数点后面二位
//不可变类:类初始化后其属性不可改变,例如String、Double属于不可变类。 //做法:1、把属性用private和final修饰 ;2、提供初始化属性的构造器; //3、只提供get方法不停工set方法 public class Address { private final String detail; private final String postCode; public Address(String detail, String postCode) { super(); this.detail = detail; this.postCode = postCode; } public Address() { this.detail =""; this.postCode=""; } public String getDetail() { return detail; } public String getPostCode() { return postCode; } }