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


原创粉丝点击