Difference between revisions of "Android FAQ"

From FriendlyARM WiKi
Jump to: navigation, search
(如何更攺Mac地址?)
 
(14 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
文档的下载地址:
 
文档的下载地址:
  
Android2.3 (for Windows7):http://www.arm9home.net/read.php?tid-10057.html   
+
Android2.3 (for Windows7):http://www.arm9home.net/read.php?tid-10057.html  <br/>
Android2.2 (for Fedora9): http://www.arm9home.net/read.php?tid-9403.html
+
Android2.2 (for Fedora9): http://www.arm9home.net/read.php?tid-9403.html <br/>
 +
Tiny4412 Android硬件开发指南: http://www.arm9home.net/read.php?tid-82748.html <br/>
  
 
===怎么编译单个模块?===
 
===怎么编译单个模块?===
Line 23: Line 24:
 
注意,但并不是所有模块都可以单独编译的,一般app和lib通常都可以单独编译,但一些公共的库就不行。
 
注意,但并不是所有模块都可以单独编译的,一般app和lib通常都可以单独编译,但一些公共的库就不行。
  
===如何将Android程序下载到开发板上运行?===
 
  
1) 通过miniUSB线,在eclipse运行程序时,会自动下载并运行你的程序 
 
2) 通过adb命令来安装 
 
3) 拷贝到SD卡,在开发板上点击apk文件进行安装 
 
4) 通过ftpget下载apk文件到开发板,通过命令 pm install xxx.apk 进行安装, (xxx.apk改成你的apk文件名)
 
  
 +
===如何将Android程序下载到开发板上运行?===
 +
 +
1) 通过miniUSB线,在eclipse运行程序时,会自动下载并运行你的程序  <br />
 +
2) 通过adb命令来安装    <br />
 +
3) 拷贝到SD卡,在开发板上点击apk文件进行安装    <br />
 +
4) 通过ftpget下载apk文件到开发板,通过命令 pm install xxx.apk 进行安装, (xxx.apk改成你的apk文件名)  <br />
 
注:愤怒的小鸟在安装前要将SD卡拨出。
 
注:愤怒的小鸟在安装前要将SD卡拨出。
  
Line 36: Line 38:
 
参考文档: http://www.arm9home.net/read.php?tid-9403.html
 
参考文档: http://www.arm9home.net/read.php?tid-9403.html
  
===如何在Windows7下安装ADB驱动?
+
===如何在Windows7下安装ADB驱动?===
  
 
参考文档:http://www.arm9home.net/read.php?tid-10057.html
 
参考文档:http://www.arm9home.net/read.php?tid-10057.html
 
===在Fedora和Win7下安装USB ADB驱动均不成功怎么办?===
 
 
可参考《Android ADB over TCP/IP 及在Mini6410开发板上运行Helloworld 》,详见http://my.chinaunix.net/space.php?uid=24545924&do=blog&id=84556。
 
  
 
===Android下无法执行我编译写的C程序?===
 
===Android下无法执行我编译写的C程序?===
Line 61: Line 59:
 
===如何在ANDROID中访问摄像头?===
 
===如何在ANDROID中访问摄像头?===
  
友善已经按标准的Android接口编写了Camera HAL层的程序,所以你用标准的Android API就可以访问摄像头了。
+
友善已经按标准的Android接口编写了Camera HAL层的程序,所以你用标准的Android API就可以访问摄像头了, <br />
 +
如果你使用的是 210 开发板,在 android 4.0.3 的源代码目录,这里有我们写的一个开源Demo:<br />
 +
android-4.0.3_r1/device/friendly-arm/mini210/USBCamera<br />
 +
如果你使用的是 4412 开发板,并使用 Android 5 系统,可以从github上获得我们提供的一个Demo: <br />
 +
https://github.com/friendlyarm/android_CameraDemo
  
 
===非大陆的移动运营商,如何进行3G拨号?在哪里可以修改拨号参数?===
 
===非大陆的移动运营商,如何进行3G拨号?在哪里可以修改拨号参数?===
Line 69: Line 71:
 
===我想让Android支持鼠标和键盘,如何做呢?===
 
===我想让Android支持鼠标和键盘,如何做呢?===
  
Android是为指尖触摸设备而设计的,对鼠标支持并不好,就算你插上鼠标并能成功识别,Android也只是把你的鼠标识别成5向滚轮键而以,界面上并不会出现鼠标光标。  
+
Android2.x对鼠标支持并不好,就算你插上鼠标并能成功识别,Android也只是把你的鼠标识别成5向滚轮键而以,界面上并不会出现鼠标光标。 <br />
不过,开源社区有一些项目意在将ANDOIRD移植到PC上网本上,他们自行在ANDROID中增加了鼠标的支持,例如 android-x86 项目,你可以参考他们的实现,自行定制 Android 源代码。
+
不过,开源社区有一些项目意在将ANDOIRD移植到PC上网本上,他们自行在ANDROID中增加了鼠标的支持,例如 android-x86 项目,你可以参考他们的实现,自行定制 Android 源代码。 <br />
 +
Android 4~5 则已经很好地支持鼠标了。
  
 
===Android2.3的LED驱动源代码在什么位置?===
 
===Android2.3的LED驱动源代码在什么位置?===
Line 81: Line 84:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
# 3g-ppp/system/etc/3g-modem/12d1.1446.12d1.1001
+
3g-ppp /system/etc/3g-modem/12d1.1446.12d1.1001
# call-ppp wcdma
+
call-ppp wcdma
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
执行以上命令后,就会在后台进行拨号了,然后进入目录/var/run/,查看是否产出文件 ppp0-ok,如果有,则表示已拨号成功,ppp0-ok文件内会存储IP地址和DNS。
 
执行以上命令后,就会在后台进行拨号了,然后进入目录/var/run/,查看是否产出文件 ppp0-ok,如果有,则表示已拨号成功,ppp0-ok文件内会存储IP地址和DNS。
  
要断开网终,kill pppd进程ID 即可。
+
要断开网络,kill pppd进程ID 即可。
  
 
其它型号的3G上网卡可以在图形界面上拨号成功后,通过ps查看进程列表来获得3g-ppp的命令行,再结合上面所说的步骤进行。
 
其它型号的3G上网卡可以在图形界面上拨号成功后,通过ps查看进程列表来获得3g-ppp的命令行,再结合上面所说的步骤进行。
Line 114: Line 117:
 
===210下无法使用TVP5150摄像头===
 
===210下无法使用TVP5150摄像头===
  
要注意以下事项:   
+
要注意以下事项:  <br />
1) 开机只插AV-IN摄像头
+
1) 开机只插AV-IN摄像头   <br />
2) 内核要用 zImage_tvp5150
+
2) 内核要用 zImage_tvp5150   <br />
3) J11的跳针要跳到TVP5150的那端
+
3) J11的跳针要跳到TVP5150的那端 <br />
 +
 
 +
===如何更换Linux/Android内核开机LOGO?===
 +
 
 +
先从光盘中解压 Linux 源代码,这里假设Linux源代码目录为 /opt/linux-3.5, 你要更换的图片为 /opt/logo.png;
 +
第一步,将图片转换为ppm格式:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
第二步,将ppm格式的图片替换掉默认的内核Logo:
 +
<syntaxhighlight lang="bash">
 +
cp /tmp/linux_logo_224.ppm /opt/linux-3.5/drivers/video/logo/logo_linux_clut224.ppm
 +
</syntaxhighlight>
 +
第三步,参考用户手册,编译内核即可。
 +
如果你在执行命令的过程中找到 pngtopnm 等命令,使用 apt-get install 或 yum install 来安装即可。
 +
 
 +
===如何更攺Mac地址?===
 +
 
 +
在烧写系统时,在FriendlyARM.ini中指定Mac地址
 +
只需要在Linux-CommandLine或者Android-CommandLine中加上参数 ethmac 即可指定Mac地址,如下所示:
 +
<syntaxhighlight lang="bash">
 +
Android-CommandLine = root=/dev/mtdblock4 rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc androidboot.console=ttySAC0 gs=0 ethmac=08:90:00:A0:02:99
 +
</syntaxhighlight>
 +
 
 +
另外,如果你使用的是 210 开发板的 Android 4.0.3, 还需要禁用图形界面的mac地址修改机制,在板子上测试时,可编辑 /system/etc/init.mini210.sh 文件,删除以下内容:
 +
<syntaxhighlight lang="bash">
 +
# 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
 +
</syntaxhighlight>
 +
量产制作ROM时,在源代码目录,该文件位于 android-4.0.3_r1/device/friendly-arm/mini210 目录下,可作相应的修改再制作量产的ROM。

Latest revision as of 09:53, 28 July 2015

1 有没有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

2 怎么编译单个模块?

在android源代码根目录执行

. setenv

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

mmm ./

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


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

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

4 如何在Linux下安装ADB驱动?

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

5 如何在Windows7下安装ADB驱动?

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

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

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

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

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

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

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

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

9 如何在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

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

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

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

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

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

位于 drivers/char/mini6410_leds.c

13 如何在命令行进行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的命令行,再结合上面所说的步骤进行。

14 Android下如何开机运行程序?

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

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

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

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

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

17 /linuxrc 文件的用处是什么?

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

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

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

19 210下无法使用TVP5150摄像头

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

20 如何更换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 来安装即可。

21 如何更攺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。