zoukankan      html  css  js  c++  java
  • 分享下自己编译 XBMC 的过程(zhuan)

    刷YunOS赢魅族MX3
    首先要感谢下网上其他网友的经验,没有这些经验有的问题还是不太好解决~

    先介绍下编译环境,操作系统是 CentOS 6.5 64位 (最小桌面版本安装,除了最基本的组件外,类似 java 什么的都没有安装),系统是在 vmware 虚拟机上安装的,virutalbox 也安装过,不过相对于 vmware 在多线程编译时,virutalbox 似乎不能完全用到 CPU 资源。官方 github 上的文档说明是基于 ubuntu 的,和 CentOS 还是有些差别的,主要是一些包的名称和用法不太一样。正是基于这些差别,所以才把 CentoOS 上的编译过程和大家分享一下。另外,本说明是通过 git 直接获取最新源码,来进行编译的,和官方的每日构建版本差不多,只不过加入了天猫魔盒硬解相关的编译参数。

    下面开始逐步介绍下如何进行编译,其实主要步骤还是参照上面提到的官方编译文档,只是有些地方遇到问题,把如何解决的介绍下,类似一些切换编译目录什么的,如果没有说清楚还需要参照官方文档来对照下。

    1、安装编译需要的环境支持:

    yum install git curl autoconf unzip zip gawk gperf cmake gcc gcc-c++

    2、因为是 64 位的 CentOS,所以还需要安装 32 位支持,官方文档上介绍的方式是 ubuntu 特有的,不适用于 CentOS


    yum install glibc-2.12-1.80.el6.i686

    yum install libstdc++-4.4.6-4.el6.i686

    yum install zlib-1.2.3-29.el6.i686
    注:如果编译过程中提示某些 .so 文件有问题,可以通过 yum whatprovides 来查找对应的安装包,如上述三个包其实就是通过这种方式找到的
    yum whatprovides */ld-linux.so.2
    yum whatprovides libstdc++.so.6
    yum whatprovides libz.so.1

    3、由于官方文档中说明需要使用 android api 版本是 14,gcc 版本是 4.8,CentOS 6.5 提供的 gcc 版本是 4.4 的,所以需要手动编译下最新版本的 gcc,我这里用到的是 4.8.2 版本的,编译过程参考的是这篇文章:http://blog.csdn.net/yanxiangtianji/article/details/12782839

    4、从 oracle 下载 1.6 版本的 JDK 并安装,配置 .bashrc,这里只演示下大概的操作
    chmod 755 jdk-6u41-linux-x64.bin
    ./jdk-6u41-linux-x64.bin


    进入当前登录用户的 HOME 目录,我使用 root 登录的
    cd ~
    vim .bashrc
    JAVA_HOME=写入上面 jdk 的安装路径
    export JAVA_HOME
    export $PATH=$PATH:$JAVA_HOME/bin

    5、下载并安装 android sdk
    wget http://dl.google.com/android/android-sdk_r22.3-linux.tgz
    tar zxvf android-sdk_r22.3-linux.tgz
    cd android-sdk-linux/tools
    ./android update sdk -u -t android-14,platform-tool
    这里有点和官网文档不一样,官网上的命令会下载所有 android 的 api 相关的包,下载量相当大,网速不佳的情况下非常耗时,所以这里精简了一下。使用这种方式下载的 platform-tools 是 r19 版本的,而实际上编译到最后会执行类似的命令 /home/android/android-sdk-linux/platform-tools/aapt p -f -I /home/android/android-sdk-linux//platforms/android-14/android.jar -S tmp/res/ -M xbmc/AndroidManifest.xml -F images/xbmcapp-debug-skeleton.apk -J xbmc/src。也就是要在 platform-tools 中运行命令 aapt。上述安装的 platform-tools 的版本是 r19,仅仅有 adb 等工具,相比于 r14 版本,少了很多东西,所以需要用 r14 版本的进行替换。r14 版本下载地址为 http://dl-ssl.google.com/android/repository/platform-tools_r14-linux.zip,下载完成后解压缩到 /home/android/android-sdk-linux/ 即可。

    6、下载并安装 ndk
    当前的 XBMC 源码必须使用 android-ndk-r9 版本的 NDK,r9b 不行,后面会报错。参考:http://forum.xbmc.org/showthread.php?tid=177292。下载完成解压缩后,执行
    ./make-standalone-toolchain.sh --ndk-dir=../../ --install-dir=/home/android/arm-linux-androideabi-4.8-vanilla/android-14 --platform=android-14 --toolchain=arm-linux-androideabi-4.8 --system=linux-x86_64

    7、生成签名密钥,参考官方文档

    8、到这里 XBMC 需要的环境基本准备完毕,根据官方文档通过 git 下载源码后,开始编译 XBMC
    先加入天猫魔盒平台需要的编译参数,在/xbmc-android/tools/depends/target/xbmc/Makefile 中加入
    CONFIGURE += --enable-codec=amcodec
    CONFIGURE += --enable-player=amlplayer
    MakeFile 文件修改完成后,执行配置
    ./configure --with-tarballs=/home/android/xbmc-tarballs --host=arm-linux-androideabi --with-sdk-path=/home/android/android-sdk-linux/ --with-ndk=/home/android/android-ndk-r9 --with-toolchain=/home/android/arm-linux-androideabi-4.8-vanilla/android-14/ --prefix=/home/android/xbmc-depends
    此处注意 --with-toolchain 必须与第 6 步中的 --install-dir 一致,否则会报 pcre-8.33 编译错误

    9、make -j20,make -C 成功后输出:
    ————————
    XBMC Configuration:
    ————————
    git Rev.: 20131217-4da7cfb
    Shared lib Yes
    Debugging: Yes
    Profiling: No
    Optimization: Yes
    SWIG Available: Yes
    JRE Available: Yes
    Doxygen Available: No
    Crosscomp.: Yes
    Native Root: /home/android/xbmc-depends/x86_64-linux-gnu-native
    target ARCH: arm
    target CPU: cortex-a9
    OpenGLES: Yes
    ALSA: No
    DBUS: No
    VDPAU: No
    VAAPI: No
    CrystalHD: No
    VTBDecoder: No
    OpenMax: No
    Joystick: No
    XRandR: No
    Waveform: Yes
    Spectrum: Yes
    GOOM: No
    RSXS: Yes
    FishBMC: No
    ProjectM: No
    Skin Touched: Yes
    X11: No
    Wayland: No
    Bluray: Yes
    TexturePacker:Yes
    MID Support: No
    ccache: No
    ALSA Support: No
    PulseAudio: No
    HAL Support: No
    DVDCSS: Yes
    Google Test Framework Configured: No
    Avahi: No
    mDNSEmbedded: Yes
    Non-free: Yes
    ASAP Codec: No
    MySQL: Yes
    Webserver: Yes
    libssh support: Yes
    libRTMP support: Yes
    libsmbclient support: Yes
    libnfs client support:Yes
    libafpclient support: Yes
    AirPlay support: Yes
    AirTunes support (libshairplay): Yes
    UPnP support: Yes
    Optical drive: No
    libudev support: No
    libusb support: Yes
    libcec support: Yes
    libmp3lame support: Yes
    libvorbisenc support: Yes
    libcap support: No
    additional players: Yes, amlplayer
    additional codecs: Yes, amcodec
    External FFmpeg: No
    PVR add-ons: No
    prefix: /home/android/xbmc-depends/arm-linux-androideabi-android-14

    10、执行
    make
    make apk
    编译完成。

    经测试编译后的 apk 是可以在天猫魔盒上使用的,不过 XBMC 上显示的分辨率是 1280×720,root 以后,也是如此。参考小米上网友的方案,通过 rootexplorer 修改 /system/build.prop 里面的缩放和宽高参数,XBMC 是可以识别到 1920×1080 的,但此时整个盒子系统的 UI 就很不正常了。

    2013-12-25 更新
    经过测试,正确 root 后虽然 XBMC 里面仍然显示分辨率是 1280×720,不过已经可以自动全屏显示了。用的 root 工具是坛子里面提供的一键 root 工具,里面用的是 kingroot,所以理论上 kingroot 可以直接 root。
    看有网友想要个编译好的版本,上传到了百度上,需要的自己下吧:http://pan.baidu.com/s/1jGLVOz0

  • 相关阅读:
    xcode多target管理不同的环境(pod多target配置)
    OC与swift混编 #import "项目名-Swift.h"失效问题
    令人困惑的strtotime
    krpano 学习第一天
    git 全量同步分支
    MYSQL 什么时候用单列索引?什么使用用联合索引?
    _blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} pip
    Mac php 装imagick扩展 菜鸟教程
    git仓库搬家
    文章简介 字符串截取
  • 原文地址:https://www.cnblogs.com/fireflyxml/p/3992137.html
Copyright © 2011-2022 走看看