1、安装jdk6

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer

2、安装必需的ubuntu安装包

sudo apt-get install build-essential default-jdk git-core curl autoconf \
unzip zip zlib1g-dev gawk gperf cmake

3、安装android SDK

a. 进入下载页面http://dl.google.com/android/android-sdk_r14-linux.tgz下载android-sdk_r14-linux.tgz到目录/opt

b. 解压android-sdk_r14-linux.tgz到/opt/android-sdk-linux/

c. 下载android sdk 离线包android-14_r03.zip,并解压到/opt/android-sdk-linux/platforms/android-14

d. 下载离线包platform-tools_r14-linux.zip,并解压到/opt/android-sdk-linux/platform-tools

4、安装android NDK

进入下载页面dl.google.com/android/ndk/android-ndk-r8e-linux-x86.tar.bz2下载android-ndk-r8e-linux-x86.tar.bz2到目录/opt/android-ndk-r8e

5、安装android工具链For XBMC

cd /opt/android-ndk-r8e
ls platforms
cd build/tools
./make-standalone-toolchain.sh --ndk-dir=../../ \
--install-dir=../../../android-toolchain/android-14 --platform=android-14 \
--toolchain=arm-linux-androideabi-4.7

6、创建一个debug key 来签名debug apk

keytool -genkey -keystore ~/.android/debug.keystore -v -alias androiddebugkey -dname "CN=Android Debug,O=Android,C=US" -keypass android -storepass android -keyalg RSA -keysize 2048 -validity 10000

7、获取XBMC源码

cd $HOME
git clone git://github.com/xbmc/xbmc.git xbmc-android
cd xbmc-android
git submodule update --init addons/skin.touched

8、编译XBMC依赖库

cd $HOME/xbmc-android/tools/depends
./bootstrap
./configure --with-toolchain=/opt/android-toolchain/android-14 --prefix=/opt/xbmc-deps --host=arm-linux-androideabi --with-sdk-path=/opt/android-sdk-linux --with-ndk=/opt/android-ndk-r8e --with-sdk=android-14 --with-tarballs=/tmp/xbmc-android
make -j 20

9、编译XBMC源码

cd $HOME/xbmc-android
make -C tools/depends/target/xbmc
make
make apk

10、安装生成的xbmc apk包到android设备

cd $HOME/xbmc-android
adb devices
adb -s 02efd7ab install -r ./xbmcapp-armeabi-v7a-debug.apk

注:02efd7ab 是设备id,可通过adb devices命令获得

11、安装完成后,运行XBMC

很郁闷的发现在小米1(android2.3.5)设备上运行XBMC,直接异常退出!

啊啊啊啊啊啊啊啊啊啊啊 郁闷啊。。。。。。。。

12、运行命令 adb -s 02efd7ab logcat 截取系统log查看XBMC异常原因,发现loadLibrary出错

以下是截取的log信息:

W/Parcel ( 421): Attempt to read object from Parcel 0x45532dc8 at offset 200 that is not in the object list
I/ActivityManager( 211): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.xbmc.xbmc/.Splash bnds=[125,241][245,376] } from pid 348
D/PhoneWindow( 348): couldn't save which view has focus because the focused view com.android.launcher2.CellScreen@4050cee0 has no id.
I/ActivityManager( 211): Start proc org.xbmc.xbmc for activity org.xbmc.xbmc/.Splash: pid=966 uid=10061 gids={1015, 3003}
I/WindowManager( 211): Setting rotation to 1, animFlags=1
I/ActivityManager( 211): Config changed: { scale=1.0 fontSize=2 themeChanged=0 themeChangedFlags=0 imsi=460/0 loc=zh_CN touch=3 keys=1/1/2 nav=1/1 orien=2 layout=34 uiMode=17 seq=5}
E/MP-Decision( 255): UP Nw:2.700000 Tw:180 rq:17.476190 seq:205.000000
E/ThermalDaemon( 256): Maximum CPU[1] frequency 1512000 KHz
W/dalvikvm( 966): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/xbmc/xbmc/Splash;
W/dalvikvm( 966): Class init failed in newInstance call (Lorg/xbmc/xbmc/Splash;)
W/dalvikvm( 966): threadid=1: thread exiting with uncaught exception (group=0x40015568)
E/AndroidRuntime( 966): FATAL EXCEPTION: main
E/AndroidRuntime( 966): java.lang.ExceptionInInitializerError
E/AndroidRuntime( 966): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 966): at java.lang.Class.newInstance(Class.java:1409)
E/AndroidRuntime( 966): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
E/AndroidRuntime( 966): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1578)
E/AndroidRuntime( 966): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1680)
E/AndroidRuntime( 966): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/AndroidRuntime( 966): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
E/AndroidRuntime( 966): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 966): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 966): at android.app.ActivityThread.main(ActivityThread.java:3703)
E/AndroidRuntime( 966): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 966): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 966): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
E/AndroidRuntime( 966): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
E/AndroidRuntime( 966): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 966): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]: 141 cannot locate '_ZN7android8OMXCodec6CreateERKNS_2spINS_4IOMXEEERKNS1_INS_8MetaDataEEEbRKNS1_INS_11MediaSourceEEEPKcjRKNS1_I13ANativeWindowEE'...
E/AndroidRuntime( 966):
E/AndroidRuntime( 966): at java.lang.Runtime.loadLibrary(Runtime.java:434)
E/AndroidRuntime( 966): at java.lang.System.loadLibrary(System.java:554)
E/AndroidRuntime( 966): at org.xbmc.xbmc.Splash.<clinit>(Splash.java:36)
E/AndroidRuntime( 966): ... 15 more
W/ActivityManager( 211): Force finishing activity org.xbmc.xbmc/.Splash
E/InputDispatcher( 211): channel 'StatusBarView (server)' ~ Consumer closed input channel or an error occurred. events=0x8
E/InputDispatcher( 211): channel 'StatusBarView (server)' ~ Channel is unrecoverably broken and will be disposed!
I/WindowManager( 211): Setting rotation to 0, animFlags=1
I/ActivityManager( 211): Config changed: { scale=1.0 fontSize=2 themeChanged=0 themeChangedFlags=0 imsi=460/0 loc=zh_CN touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=6}
W/ActivityManager( 211): Activity pause timeout for HistoryRecord{40926570 org.xbmc.xbmc/.Splash}
E/MP-Decision( 255): DOWN Ns:2.100000 Ts:270 rq:1.100000 seq:317.000000

13、到目前为止,还没有找到解决办法,如果哪位网友已经在android设备上成功编译运行了XBMC,希望能给我指点一下,谢谢!

注:可以在csdn上给我留言或者email给我:manshilingkai@163.com


更多相关文章

  1. Pycharm安装PyQt5的详细教程
  2. Android(安卓)flutter Json转Dart Model类
  3. Android(安卓)代码监控apk安装,卸载,替换
  4. Android(安卓)代码监控apk安装,卸载,替换
  5. Android(安卓)studio Dialog 弹出式对话框
  6. 简单实现Android获取已安装APP清单列表显示
  7. android 访问SQLite
  8. android安装配置
  9. android版本兼容问题总结

随机推荐

  1. 【android系统问题】呼叫状态变化
  2. android 开机启动广播 BOOT_COMPLETED
  3. Android Framework层如何截获按键消息
  4. Android 珍藏(一)
  5. Android左右滑动实现Activity切换类 (整
  6. Android Shader应用开发之霓虹闪烁文字效
  7. Android camera 竖直拍照 获取竖直方向照
  8. Android实现扩展Menu的方法
  9. Android 依赖注入
  10. 判断页面是在移动端还是PC端打开的