日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發(fā)布時(shí)間:2023/12/10 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 编译主机,Android】源码编译 ---zzz 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題解決 參考

1)/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 權(quán)限不夠

解決: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: 權(quán)限不夠

/bin/bash: build/tools/findleaves.py: 權(quán)限不夠

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: 致命錯(cuò)誤: zlib.h:沒有那個(gè)文件或目錄

解決:apt-get install zlib1g-dev

6)out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 錯(cuò)誤 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] 錯(cuò)誤 1

apt-get install libncurses5-dev

9)out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 錯(cuò)誤

解決:? 修改源碼目錄下/build/core/combo/HOST_linux-x86.mk文件:

將以下語句

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

修改為

HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

或者

原因:

因機(jī)器上的gcc版本過高,需替換成4.4.6重新進(jìn)行編譯。

解決方法:

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

$ sudo apt-get install gcc-4.4

$ sudo apt-get install g++-4.4

2、設(shè)置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、設(shè)置g++版本,使g++鏈接到g++-4.4

$ sudo mv g++ g++.bak

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

4、設(shè)置完畢后,重新進(jìn)行編譯即可

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]

錯(cuò)誤 25

make: ***

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

/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h”

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

結(jié)果:Android 編譯完成后,將在根目錄中生成一個(gè) out 文件夾,所有生成的內(nèi)容均放置在這個(gè)文件夾中。

out 文件夾如下所示:

out/

|-- CaseCheck.txt

|-- casecheck.txt

|-- host

|??? |-- common

|??? `-- linux-x86

`-- target

|-- common

`-- product

主要的兩個(gè)目錄為 host和target,前者表示在主機(jī)(x86)生成的工具,后者表示目標(biāo)機(jī)(模認(rèn)為 ARMv5)運(yùn)行的內(nèi)容。

host 目錄的結(jié)構(gòu)如下所示:

out/host/

|-- common

|???? `-- obj? (JAVA 庫)

`-- linux-x86

|-- bin?? (二進(jìn)制程序)

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

|-- lib?????? (共享庫*.so)

`-- obj????? (中間生成的目標(biāo)文件)

host 目錄是一些在主機(jī)上用的工具,有一些是二進(jìn)制程序,有一些是 JAVA 的程序。

target 目錄的結(jié)構(gòu)如下所示:

out/target/

|-- common

|???? |-- R?? (資源文件)

|???? |-- docs

|???? `-- obj?? (目標(biāo)文件)

`-- product

`-- generic

其中 common 目錄表示通用的內(nèi)容,product 中則是針對(duì)產(chǎn)品的內(nèi)容。

在 common 目錄的 obj 中,包含兩個(gè)重要的目錄:

APPS 中包含了 JAVA 應(yīng)用程序生成的目標(biāo),每個(gè)應(yīng)用程序?qū)?yīng)其中一個(gè)子目錄,將結(jié)合每個(gè)應(yīng)用程序的原始文件生成 Android 應(yīng)用程序的 APK 包。

JAVA_LIBRARIES 中包含了 JAVA 的庫,每個(gè)庫對(duì)應(yīng)其中一個(gè)子目錄。

在默認(rèn)的情況下,Android 編譯將生成 generic 目錄,如果選定產(chǎn)品還可以生成其他的目錄。

generic 包含了以下內(nèi)容:

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表示用四個(gè)線程編譯,4表示線程數(shù),讀者可根據(jù)自己機(jī)器的情況設(shè)置(如機(jī)器為單CPU雙核處理器,可設(shè)置為-j2或-j4,即該數(shù)為CPU內(nèi)核總數(shù)或內(nèi)核總數(shù)的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

運(yùn)行編譯成功的文件:

$ 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

錯(cuò)誤:

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 執(zhí)行該腳本,啟動(dòng) Android SDK Manager -> Tools

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

后,新建一個(gè)avd,然后再執(zhí)行emulator -avd my_avd -partition-size

512 便可正常

錯(cuò)誤:

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.

錯(cuò)誤: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會(huì)查找上一級(jí)目錄下的platforms目錄

將platforms 和add-ons copy到 out/host/linux-x86下面然后運(yùn)行 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 解壓到本地目錄。進(jìn)入tools 目錄,輸入下面的命令創(chuàng)建 AVD:

$ ./android create avd -t 1 -c 128M -n froyo -s HVGA ? ? ? ? ? //建立目標(biāo)機(jī)器 froyo

出現(xiàn)錯(cuò)誤: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

輸入下面的命令,啟動(dòng)模擬器:

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

三,編譯完成SDK 就要啟動(dòng)模擬器

Android list 查看可以用的 sdk 和 avd??發(fā)現(xiàn) 為空自己編譯的android sdk無法識(shí)別各版本platform的問題

進(jìn)入編譯結(jié)果目錄 out/host/linux-x86/sdk/android-sdk_eng.cmoaciopm_linux-x86/tools 發(fā)現(xiàn)android-2.3是存在的,那為什么SDKManager檢測(cè)不到呢?

SDKManager無法檢測(cè)到Installpackages的原因了,我所檢出的androidgingerbread源代碼編譯出的sdk目錄結(jié)構(gòu)與SDKManager檢測(cè)邏輯是不一致的。

調(diào)整: android在2.3對(duì)sdk目錄結(jié)構(gòu)進(jìn)行了調(diào)整,將platform下面的tools文件夾移動(dòng)到SDK根目錄下,命名為platform-

tools(里面包含了該platform的aapt和adb等工具。這樣,platform在各操作系統(tǒng)下都統(tǒng)一了,不需要再為不同操作系統(tǒng)發(fā)布不同的

platform,僅發(fā)布不同的platform-tools即可)。

可見gingerbreak代碼分支中sdkmanager的代碼不是“最新的”,沒有與編譯出來的sdk目錄結(jié)構(gòu)保持一致。

做了軟鏈接,騙過sdkmanager,重啟檢測(cè)一切正常

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

根據(jù)自己的路徑設(shè)置吧

啟動(dòng)虛擬機(jī)出現(xiàn)

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

啟動(dòng)編譯好的源碼(模擬器)

1)自己有一個(gè)可以運(yùn)行的 SDK庫,將編譯好的 SDK 版本拷貝到platforms 文件夾下面

總結(jié)

以上是生活随笔為你收集整理的android 编译主机,Android】源码编译 ---zzz的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。