ubuntu下编译Android出现的问题 总结

在ubuntu下编译Android Gingerbread 出现了些问题,总结如下:

对于Android2.3以上的版本,编译最好在64位ubuntu下进行编译,以避免不必要的错误,具体编译方法参考source.android.com

A.

出现多次权限不够
/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 权限不够
/bin/bash: /usr/meizu/Android/out/host/linux-x86/bin/bison: 权限不够
/bin/bash: build/core/find-jdk-tools-jar.sh: 权限不够
解决:
增加权限便可。
chmod a+x prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc
chmod a+x /usr/meizu/Android/out/host/linux-x86/bin/bison

B 出现bison找不到.
/bin/bash: bison:找不到命令

其他错误请参考:

用sudo apt-get install bison解决。

C.
E: d pkg 被中断,您必须手工运行 sudo dpkg –configure -a 执行sudo dpkg –configure -a 解决此问题

D.

下载repo时出现 Couldn't resolve host 'android.git.kernel.org'

解决:

如果不能够下载repo,则说明被墙了 需要用代理服务器,在此网站能够找到一些最新的免费代理http://www.nbdaili.com/

curl -x 81.177.32.41:3128 http://android.git.kernel.org/repo > ~/bin/repo

E.
arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directory”这样的错误
chmod -R 777 *

其他错误请参考此帖:http://blog.csdn.net/zzp16/article/details/6578344



1. 解决Ubuntu安装sun-java6-jre时无法选择ok键的问题
  
先点一下tab键才能选ok
2.
删除原来的JDK
sudo apt-get remove sun-java6-jre sun-java6-plugin sun-java6-binsun-java6-fonts
3.  make clean   ---> make update-api   -->  make
4. /etc/apt/sources.list,
  
执行 apt-getupdate 更新软件库
5.
无法获得锁 /var/lib/dpkg/lock
   sudo rm/var/cache/apt/archives/lock
   sudo rm /var/lib/dpkg/lock
6.
错误:
   arm-eabi-gcc: error trying to exec'cc1': execvp: No such file or directory
   make: ***[out/target/product/generic/obj/EXECUTABLES/dalvikvm_intermediates/Main.o]
错误 1
   ---
解决办法:可能是权限问题,到android源码目录下,直接chmod -R 777 *
7.
编译源码模块:(http://blog.csdn.net/luoshengyang/article/details/6566662
    a. 
首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
         build
下的一个文件:
         source build/envsetup.sh   
(前面要加上source,否则找不到mmm等命令)(不同的shell窗口都得运行该命令后才能使用mmm等命令)

    b.  
使用mmm命令来编译指定的模块,例如QuickSearchBox应用程序:
         mmmpackages/apps/QuickSearchBox/

    c. 
编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。
        make snod

    d. 
模拟器到环境变量 运行模拟器
        exportPATH=$PATH:/mydroid2.30/mydroid/out/host/linux-x86/bin
        exportANDROID_PRODUCT_OUT=/mydroid2.30/mydroid/out/target/product/generic
         //
注释~/Android/out/host/linux-x86/bin有我们要执行的emulator命令,而~/Android/out/target/product/genericAndroid镜像存放目录,下面执行emulator命令时会用到。
        emulator
8.
源码中存放app到路径out/target/product/generic/system/app
  
刷机时,该路径中到apk都会成为系统自带应用。
9.
错误:  ./adbdevices 提示????????????   nopermissions
   ----
解决办法:切换到root用户,使用adb kill-server adb start-server 就可以了
   ----
原因:adb需要在root权限时再启动才有权限。
10.
错误:编译的源码apk在真机上安装时会出现INSTALL_FAILED_OLDER_SDK问题
    ---
解决办法:修改源码下build/core/version_defaults.mk文件,将
              PLATFORM_VERSION := 2.3.1
              PLATFORM_VERSION_CODENAME:= REL
      
然后重新编译整个源码。
11. android
分辨率的修改 && hdpi-mdpi  http://lostghoul.blog.163.com/blog/static/11172199920112842738688/
   
在文件 夹build\target\product\generic.mk加入
    CUSTOM_LOCALES:= hdpi mdpi ldpi
12.
错误:root用户使用geditemacs带图形界面的都出错
  
在终端切换至root,然后gedit某文件,结果报错:
   (gedit:4987): EggSMClient-WARNING **:Failed to connect to the session manager: None of the authentication protocolsspecified are supported**
  GLib-GIO:ERROR:gdbusconnection.c:2270:initable_init: assertion failed:(connection->initialization_error == NULL)
   Aborted (core dumped)
     -----
解决方法:切换到root权限,在/etc/bash.bashrc 文件尾部添加:
        exportDBUS_SESSION_BUS_ADDRESS=""
13.
错误:进不了系统。修改了profile文件后,可能导致进不了系统(输入密码后,又返回输入密码的界面)
   
解决办法:a.在输入密码界面,按ctrl+alt+F1 键,进入命令行模式
            b.
输入用户名和密码login
            c.
执行命令/usr/bin/sudo vi /etc/profile
            d.
将文件修改回来后,重启电脑即可。
14.
ubuntu下打开.TXT文件,中文显示为乱码
   
打开应用程序——系统工具——配置编辑器。如果没有的话打开系统——首选项——主菜单——系统工具——配置编辑器。
  
依次点开
   apps->gedit-2->preferences
->encodings 中的auto-detected
  
在双击弹出对话框中加入GB18030GBKGB2312,然后将GB18030,GB2312移到最上
  
再次打开.txt文件,问题解决了。

15. 
当替换了整个代码包,编译出错找不到资源时,只需要修改资源文件中的任意一个,让它重新编译资源就好。

16.
编译时出现make: *** 是一个目录。 停止。   可能是目录下含有多个项目的工程,去掉多余的就ok了。



Target system fs image:out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img

   /etc/bash.bashrc
  .bashrc




/mydroid2.30/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/libexec/gcc/arm-eabi/4.3.1

PATH=/usr/bin/gcc:/usr/share/man/man1:$PATH
export PATH

/home/rainy/android-sdk-linux/platform-tools/

app到路径
out/target/product/generic/system/app

当在源码里加入新的资源图片时,该资源图片得先在xml里有用到,编译才会通过,否则编译时会说代码中引用不到。  解决办法就是先随便放到一个xml里面,编译一次之后再用到代码中应用,后面再编译就不会出现该问题了。


启动指定分辨率的模拟器:如 emulator -skin WVGA800

列出连接到电脑到设备 lsusb
 

export ANDROID_HOME=/home/rainy/android-sdk-linux :$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools
 
emulator-5554模拟器上安装ebook.apk
  adb -s emulator-5554 installebook.apk
 
在真机上安装ebook.apk
  adb -s HT9BYL904399 installebook.apk
 
emulator-5554模拟器上重新安装ebook.apk
  adb -s emulator-5554 install -rebook.apk
 
在真机上重新安装ebook.apk
  adb -s HT9BYL904399 install -rebook.apk
 
emulator-5554模拟器上卸载ebook.apk(不保留数据和缓冲目录)
  adb -s emulator-5554 uninstallnet.blogjava.mobile.ebook
 
在真机上卸载ebook.apk(保留数据和缓冲目录)
  adb -s HT9BYL904399 uninstall -knet.blogjava.mobile.ebook



source /etc/profile   ulimit -n 

./adb uninstall com.android.quicksearchbox
./adb install/mydroid2.30/mydroid/out/target/product/generic/system/app/QuickSearchBox.apk

 
编译时,哪里找不到资源就修改一下该资源,就会重新编译了,


02-23 11:11:16.819: E/EasouSearch(2741): httperror:java.io.FileNotFoundException: http://smartphone.easou.com:8080/oss/upload/QuickSearchBox.apkcode=0

02-23 11:11:16.719: I/EasouSearch(2741): httpget:http://smartphone.easou.com:8080/oss/upload/QuickSearchBox.apk
02-23 11:11:14.476: I/EasouSearch(2741): httpget:http://smartphone.easou.com:8080/oss/s/UpdateAction?uid=1329966609375914&version=1.0.1.120223&product=easou
搜索&phoneScreenWidth=540&phoneScreenHeight=960&phoneMac=D4:20:6D:83:04:A0&phoneFirmwareVersion=2.3.4&phoneImsi=460028118375914&phoneModel=HTCEVO3DX515m&phoneImei=356871041081724&phoneCid=bkcn3510_&project=46804&productId=1

/mydroid2.30/mydroid/packages/apps/PackageInstaller/src/com/android/packageinstaller


    * QVGA (240x320, low density, smallscreen)
    * WQVGA400 (240x400, low density,normal screen)
    * WQVGA432 (240x432, low density,normal screen)
    * HVGA (320x480, medium density,normal screen)
    * WVGA800 (480x800, high density,normal screen)
    * WVGA854 (480x854 high density,normal screen)
    * WXGA720 (1280x720, extra-highdensity, normal screen) new
    * WSVGA (1024x600, medium density,large screen) new
    * WXGA (1280x800, medium density,xlarge screen)


 exportPATH=$PATH:/AndroidSrc/2.3/mydroid/out/host/linux-x86/bin
        exportANDROID_PRODUCT_OUT=/AndroidSrc/2.3/mydroid/out/target/product/generic
         //
注释~/Android/out/host/linux-x86/bin有我们要执行的emulator命令,而~/Android/out/target/product/genericAndroid镜像存放目录,下面执行emulator命令时会用到。
        emulator








 


你可能感兴趣的:(ubuntu下编译Android出现的问题 总结)