Build kodi

From bibbleWiki
Jump to navigation Jump to search

Building Kodi on Android

Create Linux Directories

Create Linux ROOT Directory (KODI_LINUX_ROOT)

 export KODI_LINUX_ROOT=$HOME/dev/KODI_LINUX_ROOT
 mkdir  -p KODI_LINUX_ROOT
 cd $KODI_LINUX_ROOT

Create Linux Build Directory (KODI_LINUX_BUILD)

 export KODI_LINUX_BUILD=$KODI_LINUX_ROOT/KODI_LINUX_BUILD
 mkdir $KODI_LINUX_BUILD
 cd $KODI_LINUX_BUILD

Create Linux Source Directory (KODI_LINUX_SOURCE)

 export KODI_LINUX_SOURCE=$KODI_LINUX_ROOT/kodi
 // mkdir  -p KODI_LINUX_ROOT

Get Source

cd $KODI_LINUX_ROOT
 git clone https://github.com/bibble235/xbmc kodi
 // Get the source and add Kodi's nightly PPA to grab dependencies<br>
 // git clone https://github.com/xbmc/xbmc kodi
 // sudo add-apt-repository -s ppa:team-xbmc/xbmc-nightly

Build Linux Kodi

Prepare to Build

 sudo apt build-dep kodi
 sudo apt install ccache

Configure Linux Kodi

 cd $KODI_LINUX_BUILD
 cmake ../kodi  -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local -DAPP_RENDER_SYSTEM=gl
 cmake --build . -j$(getconf _NPROCESSORS_ONLN)

Build Linux Kodi Addons

 cd $KODI_LINUX_SOURCE
 make -j$(getconf _NPROCESSORS_ONLN) -C tools/depends/target/binary-addons PREFIX=/usr/local

VS Code

Setting

{
    "cmake.sourceDirectory": "${env:KODI_LINUX_SOURCE}",
    "cmake.buildDirectory": "${env:KODI_LINUX_BUILD}",
    "cmake.generator": "Unix Makefiles",
    "cmake.configureArgs": [
        "-DCMAKE_BUILD_TYPE=Debug", 
        "-DCMAKE_INSTALL_PREFIX=/usr/local", 
        "-DAPP_RENDER_SYSTEM=gl"
    ],
    "cmake.buildArgs": [
        "."
    ]
}

Launch Settings

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${env:KODI_LINUX_BUILD}/kodi.bin",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

Building Kodi on Android

Create Android Directories

Create Android ROOT (KODI_ANDROID_ROOT) Directory

export KODI_ANDROID_ROOT=$HOME/dev/KODI_ANDROID_ROOT
mkdir -p $KODI_ANDROID_ROOT
cd $KODI_ANDROID_ROOT

Create Android Build Directory (KODI_ANDROID_BUILD)

 export KODI_BUILD_DIR=$KODI_ANDROID_ROOT/KODI_ANDROID_BUILD
 mkdir -p $KODI_BUILD_DIR

Create Android Build Directory (KODI_ANDROID_SOURCE)

We do not need to make this directory as git does this

 export KODI_ANDROID_SOURCE=$KODI_ANDROID_ROOT/kodi
 #mkdir -p $KODI_ANDROID_SOURCE

Create Android directory (KODI_ANDROID)

 export KODI_ANDROID=$HOME/dev/Android_Standalone
 mkdir -p $KODI_ANDROID

Create Android SDK directory (KODI_SDK)

 export KODI_SDK=$KODI_ANDROID/cmdline-tools
 mkdir -p $KODI_SDK

Create Android NDK directory (KODI_NDK)

 export KODI_NDK=$KODI_ANDROID/android-ndk-r20b
 mkdir -p $KODI_NDK

Prerequisites

Ubunty (20.1)

sudo apt install autoconf build-essential curl default-jdk gawk git gperf lib32stdc++6 lib32z1 lib32z1-dev libcurl4-openssl-dev unzip zlib1g-dev

Get SDK Command Tools and NDK

I used the following

 wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
 wget https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip

Extract the zip files

 unzip $KODI_ANDROID_ROOT/Downloads/commandlinetools-linux-6858069_latest.zip -d $KODI_ANDROID
 unzip $KODI_ANDROID_ROOT/Downloads/android-ndk-r20b-linux-x86_64.zip -d $KODI_ANDROID

Accept Licenses (And Get SDK Bits)

 cd $KODI_SDK/bin
 ./sdkmanager --licenses --sdk_root=$KODI_SDK
 ./sdkmanager platform-tools --sdk_root=$KODI_SDK
 ./sdkmanager "platforms;android-28" --sdk_root=$KODI_SDK
 ./sdkmanager "build-tools;28.0.3" --sdk_root=$KODI_SDK

Create a key to sign

I found this already existed. Hopefully will update if this proves to be a problem

 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

Get Source

cd $KODI_LINUX_ROOT
 git clone https://github.com/bibble235/xbmc kodi
 // Get the source and add Kodi's nightly PPA to grab dependencies<br>
 // git clone https://github.com/xbmc/xbmc kodi
 // sudo add-apt-repository -s ppa:team-xbmc/xbmc-nightly

Configure

 cd $KODI_ANDROID_SOURCE/tools/depends
 ./bootstrap
 ./configure --with-tarballs=$KODI_ANDROID_SOURCE/xbmc-tarballs --host=arm-linux-androideabi --with-sdk-path=$KODI_SDK --with-ndk-path=$KODI_NDK --prefix=$KODI_ANDROID_SOURCE/xbmc-depends

Build Android Kodi

Build tools and dependencies

 make -j$(getconf _NPROCESSORS_ONLN) BUILD_DIR=$KODI_BUILD_DIR

Build Android Kodi Binary Addons

 cd $KODI_ANDROID_SOURCE
 make -C tools/depends/target/cmakebuildsys BUILD_DIR=$KODI_BUILD_DIR

Build Android Kodi

 make -C tools/depends/target/cmakebuildsys BUILD_DIR=$KODI_BUILD_DIR
 cd $KODI_BUILD_DIR
 make -j$(getconf _NPROCESSORS_ONLN) BUILD_DIR=$KODI_BUILD_DIR

Package Android Kodi

This will run gradle and create the Apk

 make apk

Stuff to Delete




Change to Android NDK tools directory

cd $KODI_ROOT/android-tools/android-ndk-r18b/build/tools


Set up toolchain

./make-standalone-toolchain.sh --install-dir=$KODI_ROOT/android-tools/arm-linux-androideabi-vanilla/android-21 --platform=android-21 --toolchain=arm-linux-androideabi


Clone Kodi's current master branch

cd $KODI_ROOT
git clone https://github.com/xbmc/xbmc kodi


Prepare to configure build

cd $KODI_ROOT/kodi/tools/depends
./bootstrap


Configure build for arm Kodi 17

./configure --with-tarballs=$KODI_ROOT/android-tools/xbmc-tarballs --with-ndk-api=24 --host=arm-linux-androideabi --with-sdk=android-26  --with-sdk-path=$KODI_ROOT/android-tools/android-sdk-linux --with-ndk=$KODI_ROOT/android-tools/android-ndk-r18b --with-toolchain=$KODI_ROOT/android-tools/arm-linux-androideabi-vanilla/android-24 --prefix=$KODI_ROOT/android-tools/xbmc-depends

Configure build for arm Kodi 18

./configure --with-tarballs=$KODI_ROOT/android-tools/xbmc-tarballs --with-ndk-api=24 --host=arm-linux-androideabi --with-sdk-path=$KODI_ROOT/android-tools/android-sdk-linux --with-ndk-path=$KODI_ROOT/android-tools/android-ndk-r18b --with-toolchain=$KODI_ROOT/android-tools/arm-linux-androideabi-vanilla/android-24 --prefix=$KODI_ROOT/android-tools/xbmc-depends


Build tools and dependencies

make -j$(getconf _NPROCESSORS_ONLN)


For Kodi 17 on Bionic code will need to be fixed see Kodi Krypton Fixes

Build all add-ons
cd $KODI_ROOT/kodi

make -j$(getconf _NPROCESSORS_ONLN) -C tools/depends/target/binary-addons


Build Kodi
Configure CMake build:

cd $KODI_ROOT/kodi
make -C tools/depends/target/cmakebuildsys


Build Kodi

cd $KODI_ROOT/kodi/build
make -j$(getconf _NPROCESSORS_ONLN)


Create package

make apk

Building Amended PVR IPTV Simple Plugin Linux

cd $KODI_ROOT
git clone https://github.com/bibble235/pvr.iptvsimple
cd pvr.iptvsimple && mkdir build && cd build
cmake -DADDONS_TO_BUILD=pvr.iptvsimple -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../xbmc/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons
make

Building Amended PVR IPTV Simple Plugin Android

cd $KODI_ROOT
git clone https://github.com/bibble235/pvr.iptvsimple
cd pvr.iptvsimple && mkdir build && cd build
cmake -DADDONS_TO_BUILD=pvr.iptvsimple -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../kodi/addons -DPACKAGE_ZIP=1 \
-DCMAKE_TOOLCHAIN_FILE=$KODI_ROOT/Android/kodi/tools/depends/target/binary-addons/arm-linux-androideabi-21-debug/build/depends/share/Toolchain_binaddons.cmake \ 
../../kodi/cmake/addons
make