Android源码编译步骤总结
来源:互联网 发布:51单片机助手破解版u币 编辑:程序博客网 时间:2024/05/23 23:14
源码编译是为了更好的相应设备。定制自己的Android系统;
编译的大致过程和需要的工具环境;
1.首先准备一套源码编译环境(我用的公司服务器上的编译环境),安装ttermpro.exe(服务器编译工具),WinSCP将编译的源码导入到服务器的工具。如果你的android项目有类库的话,要先编译类库,然后,将编译好的类库放到项目的libs文件夹下编译;
2.打开ttermpro,登录服务器,下面直接命令行了:
//进入目录
app@device2012:~$ cd /home
app@device2012:/home$ cd is/
AndroidTV/ .subversion/
app@device2012:/home$ cd is/AndroidTV/
froyo-amlogic/ isbox_30/ isBox-e2/ .svn/
gingerbread_ysten/ isbox-a10/ isBox-x2/
app@device2012:/home$ cd is/AndroidTV/isBox-e2/
.svn/ xinmei/
app@device2012:/home$ cd is/AndroidTV/isBox-e2/xinmei/
sdk4.0-v12/ .svn/ tools/
app@device2012:/home$ cd is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/
android4.0/ lichee/ .svn/
//在这个目录下编译,source在当前bash环境下读取并执行FileName中的命令
app@device2012:/home$ cd is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0/
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0$ source build/envsetup.sh
including device/moto/stingray/vendorsetup.sh
including device/moto/wingray/vendorsetup.sh
including device/samsung/crespo4g/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/samsung/toro/vendorsetup.sh
including device/samsung/tuna/vendorsetup.sh
including device/softwinner/apollo-mele/vendorsetup.sh
including device/softwinner/apollo-newmi-mmc/vendorsetup.sh
including device/softwinner/apollo-newmi/vendorsetup.sh
including device/softwinner/apollo-tvdevb/vendorsetup.sh
including device/softwinner/common/vendorsetup.sh
including device/softwinner/crane-evb-v12r/vendorsetup.sh
including device/softwinner/crane-evb/vendorsetup.sh
including device/softwinner/crane-m1003h6/vendorsetup.sh
including device/softwinner/elite-evb/vendorsetup.sh
including device/softwinner/nuclear-12-evb/vendorsetup.sh
including device/softwinner/nuclear-evb/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0$ lunch 13
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.4
TARGET_PRODUCT=apollo_newmi
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=IMM76D
============================================
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0$ cd exte rnal/lixp
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0/external /lixp$ cd ymby/
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0/external /lixp/ymby$ mm -B
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.4
TARGET_PRODUCT=apollo_newmi
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=IMM76D
============================================
No private recovery resources for TARGET_DEVICE apollo-newmi
make: Entering directory `/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4 .0'
target Prebuilt: Mtpi (out/target/common/obj/JAVA_LIBRARIES/libfang_intermediate s/classes.jar)
target Prebuilt: Mtpi (out/target/common/obj/JAVA_LIBRARIES/libfang_intermediate s/javalib.jar)
target Prebuilt: Mtpi (out/target/common/obj/JAVA_LIBRARIES/libfang1_intermediat es/classes.jar)
target Prebuilt: Mtpi (out/target/common/obj/JAVA_LIBRARIES/libfang1_intermediat es/javalib.jar)
target Prebuilt: Mtpi (out/target/common/obj/JAVA_LIBRARIES/libfang2_intermediat es/classes.jar)
target Prebuilt: Mtpi (out/target/common/obj/JAVA_LIBRARIES/libfang2_intermediat es/javalib.jar)
target Java: Mtpi (out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/class es)
Note: external/lixp/ymby/src/com/ysten/android/mtpi/protocol/dlna/cling/dms/Http Server.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Copying: out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/classes-jarjar. jar
Copying: out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/emma_out/lib/cl asses-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/classes.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/noproguard.clas ses.jar
target Dex: Mtpi
Copying: out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/noproguard.clas ses.dex
target Jar: Mtpi (out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/javali b.jar)
'out/target/common/obj/JAVA_LIBRARIES/Mtpi_intermediates/classes.dex' as 'class es.dex'...
Install: external/lixp/ymby/Mtpi.jar
target Prebuilt: libfang (out/target/product/apollo-newmi/obj/JAVA_LIBRARIES/lib fang_intermediates/javalib.jar)
target Prebuilt: libfang1 (out/target/product/apollo-newmi/obj/JAVA_LIBRARIES/li bfang1_intermediates/javalib.jar)
target Prebuilt: libfang2 (out/target/product/apollo-newmi/obj/JAVA_LIBRARIES/li bfang2_intermediates/javalib.jar)
target thumb C++: libiSScreenSnap <= external/lixp/ymby/jni/ScreenShot.cpp
external/lixp/ymby/jni/ScreenShot.cpp: In member function 'bool ScreenShot::shot (const char*)':
external/lixp/ymby/jni/ScreenShot.cpp:46: error: no matching function for call t o 'android::ISurfaceComposer::captureScreen(int, android::sp<android::IMemoryHea p>*, uint32_t*, uint32_t*, android::PixelFormat*, int, int)'
frameworks/base/include/surfaceflinger/ISurfaceComposer.h:121: note: candidates are: virtual android::status_t android::ISurfaceComposer::captureScreen(android: :DisplayID, android::sp<android::IMemoryHeap>*, uint32_t*, uint32_t*, android::P ixelFormat*, uint32_t, uint32_t, uint32_t, uint32_t)
make: *** [out/target/product/apollo-newmi/obj/SHARED_LIBRARIES/libiSScreenSnap_ intermediates/ScreenShot.o] Error 1
make: Leaving directory `/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4. 0'
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0/external /lixp/ymby$
//vi 进入
app@device2012:/home/is/AndroidTV/isBox-e2/xinmei/sdk4.0-v12/android4.0/external/lixp/ymby$ vi jni/ScreenShot.cpp
#include "ScreenShot.h"
#include <utils/Log.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <binder/IServiceManager.h>
#include <binder/IMemory.h>
#include <surfaceflinger/ISurfaceComposer.h>
#include <SkImageEncoder.h>
#include <SkBitmap.h>
using namespace android;
ScreenShot::ScreenShot()
{
LOGD("%s[%d]: %s: start\n", __FILE__, __LINE__, __FUNCTION__);
LOGD("%s[%d]: %s: end\n", __FILE__, __LINE__, __FUNCTION__);
}
ScreenShot::~ScreenShot()
{
LOGD("%s[%d]: %s: start\n", __FILE__, __LINE__, __FUNCTION__);
LOGD("%s[%d]: %s: end\n", __FILE__, __LINE__, __FUNCTION__);
}
bool ScreenShot::shot(const char* path)
{
LOGD("%s[%d]: %s: start\n", __FILE__, __LINE__, __FUNCTION__);
bool result = false;
#if
if (path != NULL)
{
const String16 name("SurfaceFlinger");
sp<ISurfaceComposer> composer;
getService(name, &composer);
sp<IMemoryHeap> heap;
uint32_t w, h;
PixelFormat f;
status_t err = composer->captureScreen(0, &heap, &w, &h, &f, 0, 0);
if (err != NO_ERROR) {
fprintf(stderr, "screen capture failed: %s\n", strerror(-err));
return result;
}
LOGD("%s[%d]: %s: screen capture success: w=%u, h=%u, pixels=%p\n", __FILE__, __LINE__, __FUNCTION__, w, h, heap->getBase());
#if 0
printf("saving file as PNG in %s ...\n", path);
SkBitmap b;
b.setConfig(SkBitmap::kARGB_8888_Config, w, h);
b.setPixels(heap->getBase());
SkImageEncoder::EncodeFile(path, b,
SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality);
#else
LOGD("%s[%d]: %s: saving file as jpeg in %s\n", __FILE__, __LINE__, __FUNCTION__, path);
SkBitmap b;
b.setConfig(SkBitmap::kARGB_8888_Config, w, h);
b.setPixels(heap->getBase());
SkImageEncoder::EncodeFile(path, b,
SkImageEncoder::kJPEG_Type, SkImageEncoder::kDefaultQuality);
#endif
result = true;
}
LOGD("%s[%d]: %s: end\n", __FILE__, __LINE__, __FUNCTION__);
#endif
return result;
}
"jni/ScreenShot.cpp" 80L, 2126C written
3.核心编译步骤,第一次比较麻烦点,以后就好了;
#source build/envsetup.sh
#lunch 13 (即 apollo_newmi-eng)
略过此命令:
#extract-bsp
mm-b
#make
- Android源码编译步骤总结
- Android源码编译步骤
- Android源码编译步骤
- Android源码编译和APP编译步骤
- Android源码编译总结
- 编译Android源码总结
- 【Android】编译Android源码的简明步骤
- Linux下编译android源码的步骤
- Linux下编译android源码的步骤
- 编译Android源码前的一个步骤
- android 源码单步编译步骤
- ubuntu10.10编译android源码步骤
- ANDROID源码编译开发总结
- Android源码编译整理总结
- ANDROID源码编译开发总结 .
- android源码编译错误总结
- Android源码编译整理总结
- 编译 Android 源码问题总结
- QLineEdit只输入字母和数字
- CBitmapButton
- 消息调度
- Hibernate从入门到精通(一)JDBC简介 .
- USB学习
- Android源码编译步骤总结
- NOIP 2011 普及组 第3题 瑞士轮
- c#多重继承
- 数组赋值练习,求数组当中的最大值
- 关于python学习路线
- Oracle数据库建某字段全文全文检索
- Windows下安装androguard
- 数据挖掘之处理分类自变量与处理时间变量
- linux head命令