Skip to content

Instantly share code, notes, and snippets.

@thilong
Last active May 12, 2021 11:17
Show Gist options
  • Save thilong/8f25e16f5c97d5f02309e562a994024a to your computer and use it in GitHub Desktop.
Save thilong/8f25e16f5c97d5f02309e562a994024a to your computer and use it in GitHub Desktop.
emu-ex-plus-alpha 在 WSL 中编译方法
# https://github.com/Rakashazi/emu-ex-plus-alpha
#1. WSL中安装 ubuntu 20.04, 但make无法使用文件内的相对路径,所以需要手动添加include
# 如: imagine/bundle/all/src/boost/android-armv7.mk :
# ../../ -> include ../../
#2. gradle无法识别相对路径,每个模拟器代码需要做如下变更:
# 如: GBA.emu/res/android/proguard.cfg内:
# ../../../EmuFramewor -> @<imagine.path>/../EmuFramework
#目录跳转
if [[ $0 =~ ^\/.* ]]
then
script=$0
else
script=$(pwd)/$0
fi
script_path=${script%/*}
# install once
sudo apt-get update
sudo apt-get install -y zip
sudo apt-get install -y autoconf
sudo apt-get install -y automake
sudo apt-get install -y autopoint
sudo apt-get install -y bash
sudo apt-get install -y clang
sudo apt-get install -y file
sudo apt-get install -y gawk
sudo apt-get install -y gettext
sudo apt-get install -y git
sudo apt-get install -y libtool
sudo apt-get install -y libtool-bin
sudo apt-get install -y llvm
sudo apt-get install -y make
sudo apt-get install -y openjdk-8-jdk
sudo apt-get install -y pkg-config
sudo apt-get install -y unzip
mkdir imagine-sdk
mkdir EX-Emulators
export WORKSPACE="${script_path}"
export ANDROID_HOME=/mnt/d/Library/Android/SDK-linux
export ANDROID_NDK_PATH=/mnt/d/Library/Android/SDK-linux/ndk/linux-android-ndk-r22
export PATH=${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/cmdline-tools/latest:${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}
export EMUFRAMEWORK_PATH="${script_path}/EmuFramework"
export IMAGINE_PATH="${script_path}/imagine"
export IMAGINE_SDK_PATH="${script_path}/imagine-sdk"
echo y | sdkmanager "cmake;3.10.2.4988404"
echo y | sdkmanager "build-tools;29.0.2"
echo y | sdkmanager "platforms;android-29"
cd ${ANDROID_HOME}/ndk
wget -q https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip
unzip -qq ./android-ndk-r22-linux-x86_64.zip
cd $WORKSPACE
cp -f .github/workflows/01-change-signing-to-debug.patch imagine/make/gradle/app/
cd $WORKSPACE/imagine/make/gradle/app/
patch -p 1 -i 01-change-signing-to-debug.patch
rm 01-change-signing-to-debug.patch
cd $WORKSPACE
cp -f .github/workflows/02-change-bundle-to-apk.patch imagine/make/shortcut/meta-builds/
cd $WORKSPACE/imagine/make/shortcut/meta-builds
patch -p 1 -i 02-change-bundle-to-apk.patch
rm 02-change-bundle-to-apk.patch
# Remove /tmp/imagine_bundle if you want to clean imagine built files.
cd $WORKSPACE/imagine/bundle/all
chmod +x ./makeAll-android.sh
./makeAll-android.sh install
cd $IMAGINE_PATH
make -f $IMAGINE_PATH/android-release.mk install V=1 -j2
cd ${IMAGINE_PATH}/EmuFramework
make -f $EMUFRAMEWORK_PATH/android-release.mk config -j2
make -f $EMUFRAMEWORK_PATH/android-release.mk install V=1 -j2
# set gradle key store here.
rm ~/.gradle/gradle.properties
echo "ANDROID_KEY_ALIAS=cert" >> ~/.gradle/gradle.properties
echo "ANDROID_KEY_PASSWORD=cg123abc" >> ~/.gradle/gradle.properties
echo "ANDROID_KEY_STORE=${WORKSPACE}/CERT.keystore" >> ~/.gradle/gradle.properties
echo "ANDROID_KEY_STORE_PASSWORD=cg123abc" >> ~/.gradle/gradle.properties
# emulators
cd $WORKSPACE
sh build_emu.sh
# build_emu.sh的内容:
#mkdir $WORKSPACE/Libs
#mkdir $WORKSPACE/Libs/arm64-v8a
#mkdir $WORKSPACE/Libs/armeabi-v7a
#mkdir $WORKSPACE/Libs/x86
#mkdir $WORKSPACE/Libs/x86_64
#for emu in "GBA" "GBC" "MD" "MSX" "NEO" "NES" "NGP" "PCE" ; do
#
# cd $WORKSPACE/${emu}.emu
# make -f android-release.mk V=1 -j2
# cp target/android-release/src/main/jniLibs/arm64-v8a/libmain.so $WORKSPACE/Libs/arm64-v8a/lib${emu}main.so
# cp target/android-release/src/main/jniLibs/armeabi-v7a/libmain.so $WORKSPACE/Libs/armeabi-v7a/lib${emu}main.so
# cp target/android-release/src/main/jniLibs/x86/libmain.so $WORKSPACE/Libs/x86/lib${emu}main.so
# cp target/android-release/src/main/jniLibs/x86_64/libmain.so $WORKSPACE/Libs/x86_64/lib${emu}main.so
#done
#cd $WORKSPACE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment