Android FAQ

From FriendlyARM WiKi
Jump to: navigation, search

有没有Android相关的开发文档?

有,由友善工程师编写,介绍如何搭建 Android 开发环境以及编写Android应用软件,并在Tiny6410和Mini6410上调试。 文档的下载地址:

Android2.3 (for Windows7):http://www.arm9home.net/read.php?tid-10057.html
Android2.2 (for Fedora9): http://www.arm9home.net/read.php?tid-9403.html
Tiny4412 Android硬件开发指南: http://www.arm9home.net/read.php?tid-82748.html

怎么编译单个模块?

在android源代码根目录执行

. setenv

再到你要编译的模块的目录执行以下命令即可。

mmm ./

注意,但并不是所有模块都可以单独编译的,一般app和lib通常都可以单独编译,但一些公共的库就不行。


如何将Android程序下载到开发板上运行?

1) 通过miniUSB线,在eclipse运行程序时,会自动下载并运行你的程序
2) 通过adb命令来安装
3) 拷贝到SD卡,在开发板上点击apk文件进行安装
4) 通过ftpget下载apk文件到开发板,通过命令 pm install xxx.apk 进行安装, (xxx.apk改成你的apk文件名)
注:愤怒的小鸟在安装前要将SD卡拨出。

如何在Linux下安装ADB驱动?

参考文档: http://www.arm9home.net/read.php?tid-9403.html

如何在Windows7下安装ADB驱动?

参考文档:http://www.arm9home.net/read.php?tid-10057.html

Android下无法执行我编译写的C程序?

程序一定要静态编译,即在arm-linux-gcc/arm-linux-g++上加上-static参数。

如何在ANDROID上开发串口通讯的程序?

使用libfriendlyarm-hardware.so类库中的接口可以实现,具体可参考FriendlyARM编写的《Android 2.3 开发指南》,该文档下载地址:http://www.arm9home.net/read.php?tid-10057.html

当然也可以自已编写JNI类库来实现,可参考《Mini6410之Qt和Qtopia编程开发指南》。

iTest和libfriendlyarm-hardware.so是否开放源代码?

不开放,可以自已用JNI写一个自已的lib, 至于驱动的接口,可参考文档《Mini6410之Qt和Qtopia编程开发指南》,文档下载地址:http://www.arm9home.net/read.php?tid-9360.html

如何在ANDROID中访问摄像头?

友善已经按标准的Android接口编写了Camera HAL层的程序,所以你用标准的Android API就可以访问摄像头了,
如果你使用的是 210 开发板,在 android 4.0.3 的源代码目录,这里有我们写的一个开源Demo:
android-4.0.3_r1/device/friendly-arm/mini210/USBCamera
如果你使用的是 4412 开发板,并使用 Android 5 系统,可以从github上获得我们提供的一个Demo:
https://github.com/friendlyarm/android_CameraDemo

非大陆的移动运营商,如何进行3G拨号?在哪里可以修改拨号参数?

通过修改 /etc/ppp/peers 下面的pppd脚本来实现

我想让Android支持鼠标和键盘,如何做呢?

Android2.x对鼠标支持并不好,就算你插上鼠标并能成功识别,Android也只是把你的鼠标识别成5向滚轮键而以,界面上并不会出现鼠标光标。
不过,开源社区有一些项目意在将ANDOIRD移植到PC上网本上,他们自行在ANDROID中增加了鼠标的支持,例如 android-x86 项目,你可以参考他们的实现,自行定制 Android 源代码。
Android 4~5 则已经很好地支持鼠标了。

Android2.3的LED驱动源代码在什么位置?

位于 drivers/char/mini6410_leds.c

如何在命令行进行3G拨号?

华为E1750在Mini6410和Tiny6410通过命令行拨号的方法是,在终端上执行以下命令:

3g-ppp /system/etc/3g-modem/12d1.1446.12d1.1001
call-ppp wcdma

执行以上命令后,就会在后台进行拨号了,然后进入目录/var/run/,查看是否产出文件 ppp0-ok,如果有,则表示已拨号成功,ppp0-ok文件内会存储IP地址和DNS。

要断开网络,kill pppd进程ID 即可。

其它型号的3G上网卡可以在图形界面上拨号成功后,通过ps查看进程列表来获得3g-ppp的命令行,再结合上面所说的步骤进行。

Android下如何开机运行程序?

则最简单的方法是定制Android源代码,用C编写一个service程序,然后将该service添加到 init.rc 中即可开机自动运行了。

6410 android 版本为什么不用 init 而用linuxrc ?

使用 linuxrc 主要是为了检查是否需要校准触摸屏,如果需要(通常发生在第一次开机时)就调出校准画面,最终还是会调用 Android中的init的。

210 android 内核中scripts/FriendlyArm.cpio的作用是什么?

FriendlyARM.cpio 是用于启动时的控制,比如在mount根文件系统前检测一下一线触摸,对于电容屏用户,可以禁用它,如果要用ramdisk,也必须禁止用它。

/linuxrc 文件的用处是什么?

linuxrc主要是用于一线屏时的校准,如果是电容屏,可以去掉,换成android的init 即可。

Android4可以看到已经加载U盘,但无法浏览文件?

出现这种情况可能是你安装的ES文件浏览器已经更新,包名和窗口名攺变了, 导致UDISK应用无法调用你所安装的 ES文件浏览器,实际上U盘已经加载,你用你的ES文件浏览器,或其它FILE BROWER软件打开 /udisk 目录即可。

210下无法使用TVP5150摄像头

要注意以下事项:
1) 开机只插AV-IN摄像头
2) 内核要用 zImage_tvp5150
3) J11的跳针要跳到TVP5150的那端

如何更换Linux/Android内核开机LOGO?

先从光盘中解压 Linux 源代码,这里假设Linux源代码目录为 /opt/linux-3.5, 你要更换的图片为 /opt/logo.png; 第一步,将图片转换为ppm格式:

pngtopnm /opt/logo.png > /tmp/linux_logo.pnm
pnmquant 224 /tmp/linux_logo.pnm > /tmp/linux_logo_224.pnm
pnmtoplainpnm /tmp/linux_logo_224.pnm > /tmp/linux_logo_224.ppm

第二步,将ppm格式的图片替换掉默认的内核Logo:

cp /tmp/linux_logo_224.ppm /opt/linux-3.5/drivers/video/logo/logo_linux_clut224.ppm

第三步,参考用户手册,编译内核即可。 如果你在执行命令的过程中找到 pngtopnm 等命令,使用 apt-get install 或 yum install 来安装即可。

如何更攺Mac地址?

在烧写系统时,在FriendlyARM.ini中指定Mac地址 只需要在Linux-CommandLine或者Android-CommandLine中加上参数 ethmac 即可指定Mac地址,如下所示:

Android-CommandLine = root=/dev/mtdblock4 rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc androidboot.console=ttySAC0 gs=0 ethmac=08:90:00:A0:02:99

另外,如果你使用的是 210 开发板的 Android 4.0.3, 还需要禁用图形界面的mac地址修改机制,在板子上测试时,可编辑 /system/etc/init.mini210.sh 文件,删除以下内容:

# Ehternet mac address
 
change_mac_address()
{
    echo "set macaddress" >> /data/eth0-log.txt
    /system/busybox/sbin/ifconfig eth0 down
    /system/busybox/sbin/ifconfig eth0 hw ether $1
    /system/busybox/sbin/ifconfig eth0 up
}
 
if [ -f /data/system/eth0-macaddress.conf ] ; then
echo "found /data/system/eth0-macaddress.conf" >> /data/eth0-log.txt
source  /data/system/eth0-macaddress.conf
DEV_ADDR=`cat /sys/class/net/eth0/address`
if [ "$DEV_ADDR" = "00:00:00:00:00:00" ]; then
change_mac_address $MAC
elif [ "$DEV_ADDR" != "$MAC" ]; then
change_mac_address $MAC
fi
fi

量产制作ROM时,在源代码目录,该文件位于 android-4.0.3_r1/device/friendly-arm/mini210 目录下,可作相应的修改再制作量产的ROM。