Last active
May 10, 2022 13:58
-
-
Save joonjoonjoon/93f4a1c90267545e6258b8d7e2ce57bd to your computer and use it in GitHub Desktop.
Some scirpts that were helpful in building for Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
PROJPATH=~/git/inua/_Mirror/inua_android | |
#PROJPATH=~/git/inua/ | |
ANDROIDFILESPATH=~/git/inua/Automation/android | |
UNITYVERSION=$(grep "m_EditorVersion: " "$PROJPATH/ProjectSettings/ProjectVersion.txt" | cut -d " " -f2) | |
UNITYPATH="/Applications/Unity/Hub/Editor/$UNITYVERSION/Unity.app/Contents/MacOS/Unity" | |
BUILDPATH=$PROJPATH/Build/inua_android | |
ASSETBUNDLEPATH=$PROJPATH/AssetBundles | |
INUA_KEYSTORE_PATH=$ANDROIDFILESPATH/inua_arte_keystore.keystore | |
INUA_KEYALIAS_NAME="keyalias" | |
SECONDS=0 | |
prep() { | |
echo -e "😌 \033[1;38;5;214m PREP \033[0m" | |
# just to keep track of the version :) | |
echo "Unity version: $UNITYVERSION" | |
# exit when any command fails | |
set -e | |
# load passwords | |
source $ANDROIDFILESPATH/credentials.pass | |
# This is a good place to force-exclude files from compilation by adding ~ at the end. | |
# You just need to make sure to undo it, or to not commit it to GIT :) | |
# make sure steam files are excluded | |
# mv "$PROJPATH/Assets/Plugins/SteamWorks.NET" "$PROJPATH/Assets/Plugins/SteamWorks.NET~" | |
# mv "$PROJPATH/Assets/Plugins/SteamWorks.NET.meta" "$PROJPATH/Assets/Plugins/SteamWorks.NET.meta~" | |
# mv "$PROJPATH/Assets/Plugins/x86" "$PROJPATH/Assets/Plugins/x86~" | |
# mv "$PROJPATH/Assets/Plugins/x86.meta" "$PROJPATH/Assets/Plugins/x86.meta~" | |
# mv "$PROJPATH/Assets/Plugins/x86_64" "$PROJPATH/Assets/Plugins/x86_64~" | |
# mv "$PROJPATH/Assets/Plugins/x86_64.meta" "$PROJPATH/Assets/Plugins/x86_64.meta~" | |
} | |
clear_folder() { | |
echo -e "😧 \033[1;38;5;214m CLEAR BUILD FOLDER \033[0m" | |
rm -rf $BUILDPATH/* | |
} | |
build_unity_assetbundles() { | |
echo -e "😨 \033[1;38;5;214m BUILD UNITY ASSET BUNDLES \033[0m" | |
# clear out the AssetBundles folder | |
rm -rf $PROJPATH/AssetBundles/* | |
# If we use sym links, this file could get lost... | |
rm -rf $PROJPATH/Library/PlayAssetPackConfig.json | |
touch $PROJPATH/Library/PlayAssetPackConfig.json | |
cat $ANDROIDFILESPATH/PlayAssetPackConfig.json | sed -r 's|ASSETBUNDLEPATH|'$ASSETBUNDLEPATH'|g' >> $PROJPATH/Library/PlayAssetPackConfig.json | |
cat $PROJPATH/Library/PlayAssetPackConfig.json | |
mkdir -p $ASSETBUNDLEPATH | |
$UNITYPATH \ | |
-quit \ | |
-batchmode \ | |
-projectPath $PROJPATH \ | |
-executeMethod BuildScripts.BuildAndroidAssetBundle \ | |
-logfile "output/build_assetbundles_android.log" \ | |
-buildTarget Android \ | |
-assetbundlePath=$ASSETBUNDLEPATH | |
echo "(done)" | |
} | |
build_unity() { | |
echo -e "😰 \033[1;38;5;214m BUILD UNITY ANDROID \033[0m" | |
#empty cache | |
rm -rf $PROJPATH/Library/il2cpp_android_armeabi-v7a/* | |
rm -rf $PROJPATH/Library/il2cpp_android_arm64-v8a/* | |
rm -rf $PROJPATH/Library/Il2cppBuildCache/* | |
#rm -rf $PROJPATH/Library/il2cpp_android_armeabi-v7a/il2cpp_cache/libil2cpp/* | |
#empty build folder | |
rm -rf $BUILDPATH/* | |
mkdir -p $BUILDPATH | |
$UNITYPATH \ | |
-quit \ | |
-batchmode \ | |
-projectPath $PROJPATH \ | |
-executeMethod BuildScripts.BuildAndroid \ | |
-logfile "output/build_android.log" \ | |
-buildTarget Android \ | |
-outputPath=$BUILDPATH \ | |
-assetbundlePath=$ASSETBUNDLEPATH \ | |
-keystorePath=$INUA_KEYSTORE_PATH \ | |
-keystoreAliasPass=$INUA_KEYALIAS_PASS \ | |
-keystoreAliasName=$INUA_KEYALIAS_NAME \ | |
-keystorePass=$INUA_KEYSTORE_PASS | |
grep -i "buildscript" "output/build_android.log" || true | |
grep -i "Complete build size" "output/build_android.log" || true | |
grep -i "unable" "output/build_android.log" || true | |
grep -i "failed" "output/build_android.log" || true | |
grep -i "error" "output/build_android.log" || true | |
grep -i "Exception" "output/build_android.log" || true | |
grep -i "Build Succeeded" "output/build_android.log" || true | |
} | |
extract_apks() { | |
echo -e "😳 \033[1;38;5;214m EXTRACT APK \033[0m" | |
# this will generate an .apks file, for local installs | |
rm -f "output/inua.apks" | |
java -jar "$PROJPATH/Assets/GooglePlayPlugins/com.google.android.appbundle/Editor/Tools/bundletool-all.jar" build-apks --bundle="$PROJPATH/Build/inua_android/inua.aab" --output="output/inua.apks" --local-testing | |
} | |
install_apks_locally() { | |
echo -e "😵💫 \033[1;38;5;214m INSTALL APK ON DEVICE \033[0m" | |
# this will actually install it on device | |
java -jar "$PROJPATH/Assets/GooglePlayPlugins/com.google.android.appbundle/Editor/Tools/bundletool-all.jar" install-apks --apks="output/inua.apks" | |
} | |
open_manual_upload_windows() { | |
# you need to drag this file ... | |
open $BUILDPATH | |
# into this window... | |
open "https://play.google.com/console/u/0/developers/[URL]/tracks/internal-testing" | |
} | |
beep() { | |
duration=$SECONDS | |
echo "$(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed." | |
osascript -e "beep beep beep" | |
osascript -e 'display notification "Finished completely" with title "Building android"' | |
echo -e "✅ \033[1;38;5;76m DONE \033[0m" | |
} | |
prep | |
clear_folder | |
# build_unity_assetbundles | |
build_unity | |
# extract_apks | |
# install_apks_locally | |
open_manual_upload_windows | |
beep | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Linq; | |
using System.Text.RegularExpressions; | |
using Google.Android.AppBundle.Editor; | |
using UnityEditor; | |
using UnityEngine; | |
public class BuildScripts | |
{ | |
public const string APPID = "appid"; | |
static void BuildAndroid() | |
{ | |
Debug.Log("[buildscripts] Started Building Android"); | |
PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, APPID); | |
PlayerSettings.stripEngineCode = false; // might be necessary? | |
PlayerSettings.Android.keystoreName = GetArgumentValue("keystorePath"); | |
// Get Keystore credentials from file... | |
var keystorePass = GetArgumentValue("keystorePass"); | |
var keyaliasPass = GetArgumentValue("keystoreAliasPass"); | |
var keyaliasName = GetArgumentValue("keystoreAliasName"); | |
var assetBundlePath = GetArgumentValue("assetbundlePath"); | |
var outputPath = GetArgumentValue("outputPath"); | |
Debug.Log("[BuildScripts] Found keys! KSP:" + keystorePass + " KAP:" + keyaliasPass); | |
Debug.Log("[BuildScripts] Paths! " + assetBundlePath + " --- " + outputPath); | |
PlayerSettings.Android.useCustomKeystore = true; | |
PlayerSettings.Android.keystorePass = keystorePass; | |
PlayerSettings.Android.keyaliasName = keyaliasName; | |
PlayerSettings.Android.keyaliasPass = keyaliasPass; | |
// Build Android App Bundle! | |
var assetPackConfig = new AssetPackConfig(); | |
foreach(var bundleName in AssetDatabase.GetAllAssetBundleNames()) | |
{ | |
Debug.Log("[BuildAndroid] Adding Asset Bundle to Config: " + bundleName); | |
assetPackConfig.AddAssetBundle(assetBundlePath + "/" + bundleName, AssetPackDeliveryMode.InstallTime); | |
} | |
var buildPlayerOptions = AndroidBuildHelper.CreateBuildPlayerOptions(outputPath + "/inua.aab"); | |
buildPlayerOptions.scenes = new string[]{ | |
"Assets/_Scenes/Android_preload.unity", | |
"Assets/_Scenes/Android_loading.unity", | |
"Assets/_Scenes/MainMenu.unity" | |
}; | |
if (!Bundletool.BuildBundle(buildPlayerOptions, assetPackConfig)) | |
{ | |
Debug.LogError("[BuildScript] Asset Delivery build failed"); | |
return; | |
} | |
Debug.Log("[buildscripts] Finished Building Android"); | |
PlayerSettings.stripEngineCode = true; // might be necessary? | |
} | |
static string[] GetScenes() | |
{ | |
return EditorBuildSettings.scenes.Where(s=>s.enabled).Select(s=> s.path).ToArray(); | |
} | |
static void Build(BuildPlayerOptions options) | |
{ | |
var report = BuildPipeline.BuildPlayer(options); | |
if(report.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded) | |
{ | |
Debug.Log("[buildscripts] Build succeeded"); | |
EditorApplication.Exit( 0 ); | |
} | |
else | |
{ | |
Debug.Log("[buildscripts] Build failed"); | |
EditorApplication.Exit( 1 ); | |
} | |
} | |
static string GetArgumentValue(string argument) | |
{ | |
// gets values from the command line unity call | |
// inside build_ios.sh for example | |
var result = "[ARGUMENT NOT SET]"; | |
var args = Environment.GetCommandLineArgs().ToList(); | |
foreach(var arg in args) | |
{ | |
if(arg.Contains(argument)) | |
{ | |
result = arg.Split('=')[1]; | |
} | |
} | |
return result; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
export INUA_KEYSTORE_PASS='password' | |
export INUA_KEYALIAS_PASS='password' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"assetPacks":[],"targetedAssetPacks":[],"assetBundles":[{"name":"scene1","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/scene1","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"},{"name":"scene2","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/scene2","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"},{"name":"scene3","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/scene3","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"},{"name":"scene4","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/scene4","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"},{"name":"scene5","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/scene5","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"},{"name":"scene6","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/scene6","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"},{"name":"shared","assetBundles":[{"path":"/Users/gib/git/inua/_Mirror/inua_android/AssetBundles/shared","textureCompressionFormat":"Default"}],"deliveryMode":"InstallTime"}],"defaultTextureCompressionFormat":"Default"} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment