android 编译主机,Android】源码编译 ---zzz

问题解决 参考

1)/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 权限不够

解决:chmod a+x prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc

2)/bin/bash: build/core/find-jdk-tools-jar.sh: 权限不够

/bin/bash: build/tools/findleaves.py: 权限不够

chmod  a+x   build/core/find-jdk-tools-jar.sh

chmod  a+x   build/tools/findleaves.py

3)Your version is: java version "1.5.0".

The correct version is: 1.6.

解决:    新立得 上 openjdk-6-jdk

或到这里下:

4)/bin/bash: g++: 未找到命令

解决:apt-get    install  g++

5)external/clearsilver/cgi/cgi.c:22:18: 致命错误: zlib.h:没有那个文件或目录

解决:apt-get install zlib1g-dev

6)out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误 1

解决方法:

gedit frameworks/base/libs/utils/Android.mk

Change the line:

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

To:

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)  -fpermissive

7)/bin/bash: flex: 未找到命令

解决:apt-get install flex

8)out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1

apt-get install libncurses5-dev

9)out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误

解决:  修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:

将以下语句

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

修改为

HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

或者

原因:

因机器上的gcc版本过高,需替换成4.4.6重新进行编译。

解决方法:

1、安装4.4版本的gcc和g++

$ sudo apt-get install gcc-4.4

$ sudo apt-get install g++-4.4

2、设置gcc版本,使gcc链接到gcc-4.4

$ ls -l /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

$ cd /usr/bin

$ sudo mv gcc gcc.bak

$ sudo ln -s gcc-4.4 gcc

3、设置g++版本,使g++链接到g++-4.4

$ sudo mv g++ g++.bak

$ sudo ln -s g++-4.4 g++

4、设置完毕后,重新进行编译即可

10) sh: gperf: not found

calling gperf failed: 32512 at ./makeprop.pl line 96.

make: ***

[out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h]

错误 25

make: ***

正在删除文件“out/target/product/generic/obj/STATIC_LIBRARIES

/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h”

解决方法:apt-get install libgl1-mesa-dev

结果:Android 编译完成后,将在根目录中生成一个 out 文件夹,所有生成的内容均放置在这个文件夹中。

out 文件夹如下所示:

out/

|-- CaseCheck.txt

|-- casecheck.txt

|-- host

|    |-- common

|    `-- linux-x86

`-- target

|-- common

`-- product

主要的两个目录为 host和target,前者表示在主机(x86)生成的工具,后者表示目标机(模认为 ARMv5)运行的内容。

host 目录的结构如下所示:

out/host/

|-- common

|     `-- obj  (JAVA 库)

`-- linux-x86

|-- bin   (二进制程序)

|-- framework     (JAVA 库,*.jar 文件)

|-- lib       (共享库*.so)

`-- obj      (中间生成的目标文件)

host 目录是一些在主机上用的工具,有一些是二进制程序,有一些是 JAVA 的程序。

target 目录的结构如下所示:

out/target/

|-- common

|     |-- R   (资源文件)

|     |-- docs

|     `-- obj   (目标文件)

`-- product

`-- generic

其中 common 目录表示通用的内容,product 中则是针对产品的内容。

在 common 目录的 obj 中,包含两个重要的目录:

APPS 中包含了 JAVA 应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成 Android 应用程序的 APK 包。

JAVA_LIBRARIES 中包含了 JAVA 的库,每个库对应其中一个子目录。

在默认的情况下,Android 编译将生成 generic 目录,如果选定产品还可以生成其他的目录。

generic 包含了以下内容:

out/target/product/generic/

|-- android-info.txt

|-- clean_steps.mk

|-- data

|-- obj

|-- ramdisk.img

|-- root

|-- symbols

|-- system

|-- system.img

|-- userdata-qemu.img

`-- userdata.img

编译也可以:$ make-j4

这里-j4表示用四个线程编译,4表示线程数,读者可根据自己机器的情况设置(如机器为单CPU双核处理器,可设置为-j2或-j4,即该数为CPU内核总数或内核总数的2倍。)

成功后:

Install: out/target/product/generic/system/app/Contacts.apk

Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp

Combining NOTICE files: out/target/product/generic/obj/NOTICE.html

Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

Install system fs image: out/target/product/generic/system.img

Installed file list: out/target/product/generic/installed-files.txt

运行编译成功的文件:

$ vi .bashrc  添加:

export Android_PRODUCT_OUT=~/桌面/android2.3.4_32bit/out/target/product/generic

Android_PRODUCT_OUT_BIN=~/桌面/android2.3.4_32bit/out/host/linux-x86/bin

export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

$ source .bashrc

$ emulator -image system.img -data userdata.img -ramdisk ramdisk.img

错误:

emulator: ERROR: You did not specify a virtual device name, and the system

directory could not be found.

If you are an Android SDK user, please use '@' or '-avd '

to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator

原因是你没有建立avd,建立方法如下:

1、

cd到bin 目录下,终端中输入 ./android 执行该脚本,启动 Android SDK Manager -> Tools

-> Manage AVDs -> 打开 Android Virtual Device Manager

后,新建一个avd,然后再执行emulator -avd my_avd -partition-size

512 便可正常

错误:

SWT folder '/root/桌面/android2.3.4_32bit/out/host/linux-x86/framework/x86' does not exist.

Please export ANDROID_SWT to point to the folder containing swt.jar for your platform.

错误:Error: Error parsing the sdk.

Error: /root/桌面/android2.3.4_32bit/out/host/linux-x86/platforms is missing.

Error: Unable to parse SDK content.

但在out/host/linux-x86/sdk/android-sdk_eng.lawrencekang_linux-x86/tools目录下 ./android 则可以

原来在out/host/linux-x86/sdk/android-sdk_eng.lawrencekang_linux-x86/下面有platforms目录,可见android会查找上一级目录下的platforms目录

将platforms 和add-ons copy到 out/host/linux-x86下面然后运行 android就可以了

二,编译SDK

$ make  sdk

生成:out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86.zip

将 out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip 解压到本地目录。进入tools 目录,输入下面的命令创建 AVD:

$ ./android create avd -t 1 -c 128M -n froyo -s HVGA           //建立目标机器 froyo

出现错误:Error: Target id is not valid. Use 'android list targets' to get the target ids.

Android 2.2 is a basic Android platform.

Do you wish to create a custom hardware profile [no]

Created AVD 'froyo' based on Android 2.2, with the following hardware config:

hw.lcd.density=160

输入下面的命令,启动模拟器:

$ ./emulator -avd froyo -partition-size 160 &

三,编译完成SDK 就要启动模拟器

Android list 查看可以用的 sdk 和 avd  发现 为空自己编译的android sdk无法识别各版本platform的问题

进入编译结果目录 out/host/linux-x86/sdk/android-sdk_eng.cmoaciopm_linux-x86/tools 发现android-2.3是存在的,那为什么SDKManager检测不到呢?

SDKManager无法检测到Installpackages的原因了,我所检出的androidgingerbread源代码编译出的sdk目录结构与SDKManager检测逻辑是不一致的。

调整: android在2.3对sdk目录结构进行了调整,将platform下面的tools文件夹移动到SDK根目录下,命名为platform-

tools(里面包含了该platform的aapt和adb等工具。这样,platform在各操作系统下都统一了,不需要再为不同操作系统发布不同的

platform,仅发布不同的platform-tools即可)。

可见gingerbreak代码分支中sdkmanager的代码不是“最新的”,没有与编译出来的sdk目录结构保持一致。

做了软链接,骗过sdkmanager,重启检测一切正常

ln  -sf   /home/justin/android/src/out/host/linux-x86/sdk/android-sdk_eng.justin_linux-x86/tools        ~/android/sdk

根据自己的路径设置吧

启动虚拟机出现

SDL init failure, reason is: No available video device: OnUbuntu64

问题需要安装

apt-get install ia32-libs lib32stdc++6

问题Cannot load 32-bit SWT libraries on 64-bit JVM

1.For Eclipse, go to Eclipse -> Preferences -> Java -> Installed JRE

2.For Flash Builder, go to Flash Builder ->

Preferences -> Java ->Installed JREs Then, edit the selected Java

VM, adding the following value forthe

Default VM Arguments field -d32

启动编译好的源码(模拟器)

1)自己有一个可以运行的 SDK库,将编译好的 SDK 版本拷贝到platforms 文件夹下面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ 面试题记录

1、new 、 delete 、 malloc 、 free 的区别与关系? new / delete 是C的运算符,malloc / free 是C的标准库函数。 new会调用对象的构造函数,delete会调用对象的析构函数。它们都可用于动态申请内存和释放内存。 对于非内部数据类型的对象而言…

android实现3种定位的切换,Android 滑动定位+吸附悬停效果实现

在前两篇文章中,分别介绍了tablayoutscrollview 和 tablayoutrecyclerview 实现的滑动定位的功能,文章链接:Android 实现锚点定位Android tabLayoutrecyclerView实现锚点定位仔细看的话,这种滑动定位的功能,还可以整体…

用JavaScript语言判断一个三位数是否为水仙花数

// 提示用户输入一个三位数// 如果不是三位数或者不是数字,则提示“非法输入”;// 如果输入合法,判断这个三位数是否为水仙花数。// (每一位数的三次方之和等于这个数本身,就是水仙花数。例如:153 370 371 …

unity mmd不支持android,MMD模型导入Unity的解决方案

前言学了Unity后,总是感觉缺少资源,包括人物、物品模型、动作数据、贴图、特效,各种插件,还被骗去学了几天各种美术软件。说起模型和动作数据,就又想到MMD,毕竟有那么现成的资源,虽然不能商用&a…

关于windows cmd的一些便捷应用

在同事的指点下,我学会了一种非常方便的进入路径的方法 在windows文件夹中直接打开到要执行的文件的位置,然后在我的电脑那个路径当中输入cmd 之后,cmd的对话框会弹出来,并且显示在当前路径下,这样,有一些需…

android中的 listview,Android中ListView的初步认识(一)

ListView是安卓开发中常用的组件之一,它的作用是在一个垂直的列表中展现出所需的项目。接下来,我们看一下ListView的实现方法:第一种 是常见的在XML中定义然后在activity中使用findViewById来获取的方式(这个相当基础了,直接代码)…

Tcl 语言改写Java题目-1

Java题目:https://blog.csdn.net/wenzhi20102321/article/details/52274976 Program1. proc fun_1 {x} { if {$x<3} { return 1 } else { return [expr [fun_1 [expr $x - 1]] [fun_1 [expr $x - 2]]] }}puts [fun_1 10] program 2 #判断是不是素数…

android开发app初始化,安卓快速开发框架(一)XBaseAndroid初始化使用

XBaseAndroid如果您需要使用最新版可以去github查看。该文章描述的是1.0.9.4版本。使用AndroidStudio 3.0创建一个新的安卓项目如果您不知道如何创建&#xff0c;请猛戳此处。配置仓库引用项目结构.png点击build.gradle(Project)&#xff0c;添加以下maven仓库。allprojects {r…

Python之模块与包(下)

1、什么是包 #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module names” 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 #具体的&#xff1a;包就是一个包含有__init__.py文件的文件夹&#xff0c;所以其实我…

html 状态 304,网站频繁出现304状态码的原因

原标题&#xff1a;网站频繁出现304状态码的原因很多SEOER经常说网站日志反回值304是怎么回事&#xff1f;经常会碰到站长们抱怨蜘蛛抓取返回码老是304状态&#xff0c;且抓取的次数越来越少的问题。搜索引擎为了自身的用户体验&#xff0c;会想尽办法来提高检索调用率、准确性…

接口测试学习——操作MySQL

第一步要导入第三方的jar包。&#xff08;jemeter不能直接连接MySQL&#xff09; 操作方法就是点击“测试计划”&#xff0c;右侧展开的页面中选择【浏览】&#xff0c;选择MySQL的jar包。导入即可。 第二步&#xff1a;创建数据库链接的配置&#xff1a;MySQL的路径URL、端口号…

html5网页自动滚动,Html5 滚动穿透的方法

问题背景&#xff1a;网站需要在移动端完成适配,针对移动端H5以及web端采用的都是bluma这种flex布局解决方案在H5中使用的列表采用的是 react-virtualized 来绘制表格为了展示表格中单行数据的具体详情&#xff0c;通常的解决方案是采用新页面或者是弹窗来完成。这里采用的是弹…

html代码 打开本地文件,打开本地HTML文件

我在布局中有一个textview(名为-t_c)&#xff0c;代码为&#xff1a; -android:id"id/GoToTCContacting"android:layout_width"360dp"android:layout_height"wrap_content"android:layout_marginLeft"2dp"android:layout_marginRight&…

元组,字符串的基础

元组&#xff0c;字符串&#xff0c; a(1,2,3,4,56,) type(a) print(type(a)) #元祖就是不可变列表 usernameinput("username:") if username.strip()"spencer": #语句能够让输入的内容多按空格&#xff1a;移除空白print("welcome") names"…

mac如何看html5视频播放器,苹果Mac系统看HTML5视频教程介绍

上一回&#xff0c;小编教了大家一个Mac用 HTML5 免费看优酷和土豆等付费视频&#xff0c;这回小编又找到一个用HTML5看视频的好方法&#xff0c;很多很好用的资源&#xff0c;你可以在Mac上看各种地方台的直播以及乐视、凤凰卫视、TVB、东森等港澳台电视节目哦&#xff01;大部…

node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记

用户无法直接访问后台接口 需要node端转发请求 并将数据以.csv文件格式生成以供客户端下载。 很不幸出现了中文乱码的问题 挖了各种坟帖&#xff0c;下了各种依赖包&#xff0c;csv、json2csv、bufferHelper、iconv-lite等等 多次尝试后 发现真正起作用的只有iconv-lite这个库 …

html中设置负边距的意义,css负边距之详解

自从1998年CSS2作为推荐以来&#xff0c;表格的使用渐渐退去&#xff0c;成为历史。正因为此&#xff0c;从那以后CSS布局成为了优雅代码的代名词。对于所有设计师使用过的CSS概念&#xff0c;负边距作为最少讨论到的定位方式要记上一功。这就像是在线纹身-每个人都会做&#x…

warning: expression result unuesd 可能原因是函数忘了加括号,

转载于:https://www.cnblogs.com/chulin/p/9082833.html

计算机怎样辅助英语听力教学方法有哪些,计算机辅助教学在英语听力中的运用.doc...

计算机辅助教学在英语听力中的运用.docPAGEPAGE 5计算机辅助教学在英语听力中的运用摘要&#xff1a;随着现代科学技术与电脑的发展&#xff0c;计算机辅助教学比以往运用的更加广泛&#xff0c;在计算机的帮助下&#xff0c;我们可以把大量的网上信息运用到英语教学中&#xf…

vue基础18(vue-cli脚手架项目中组件的使用)

vue-cli脚手架项目中组件的使用 在webpack-simple模板中&#xff0c;包括webpck模板。一个.vue文件就是一个组件。 为什么会这样呢&#xff1f;因为webpack干活了&#xff01;webpack的将我们所有的资源文件进行打包。同时webpack还能将我们的html&#xff08;template&#xf…