0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ADX2のツールからobbを作る

Posted at

#はじめに
Oculusのアプリで、極端に大きなapkだと分割してストアに上げないといけないのですが、
ADX2のデータは、Unityの標準のobb(APKの拡張ファイル)ではストリーム再生ができないので、
Android Studioにあるjobbなるツールでまとめる必要がある。

このobbを作成し、さらにOculusの実機へpushするのが手間なので、スクリプト1回実行して済ませるようなものを作ってみました。

#この記事の対象

  • ADX2でjobbでobbを作りたい人
  • ADX2のスクリプトで外部プロセスを呼びたい人

#環境
Craft 3.45.00

#jobb

jobbは以下

これを使えばよいのですが、バグがあるっぽく別途

のfat32を使う必要がある。

#adb
adbもAndroid Studioに入っている。

Android studio
JDK
などインストールや、
adb,jobbのパスなど環境変数の設定などが必要かも。

#スクリプト
subprocessで2つ実行しています。
失敗したときの処理があまりないので、変な時は手動で中断してください。

パスやデバイスIDなども適宜書き換えてください。

MDS_MakeObb.py
# --Description:[tatmos][Build]adx2フォルダをObbファイルにまとめる
import sys
import os
import cri.atomcraft.debug as acdebug
import subprocess
import cri.atomcraft.view as acview

# まとめるフォルダ
srcPath = "C:/MyDearest/github/MDSoundPreview/Assets/StreamingAssets/adx2/"
# 出力フォルダ
outPath = "C:/MyDearest/"
# 出力するObbファイル名
outputFileName = "ADX2.obb"
# アプリのビルドバージョン
appBuildVersion = 1
# アプリのPackageName
appPackageName = "com.MyDearest.MDSoundPreview"

# 転送先のデバイスID : adb devicesなどで調べる
deviceId = "XXXXXXXXXXXXXX"

if not os.path.exists(srcPath):
	acdebug.log("srcPath がありません。")
	sys.exit()

# jobb
cmd1 = "jobb.bat"
cmd2 = "-d \"{0}\"".format(srcPath);
cmd3 = "-o \"{0}\"".format(outPath + outputFileName);
cmd4 = "-pn \"{0}\"".format(appPackageName);
cmd5 = "-pv {0}".format(appBuildVersion);

acdebug.log([cmd1 + " " + cmd2 + " " + cmd3 + " " + cmd4 + " " + cmd5])
message = subprocess.check_output(cmd1 + " " + cmd2 + " " + cmd3 + " " + cmd4 + " " + cmd5)
acdebug.log(message.decode().strip())

message = "続いて転送します"
button_name_list = ["続ける", "キャンセル"]
result = acview.show_dialog(message, button_name_list)
if result [ "data" ][ "button_name" ] == "キャンセル" or result [ "data" ][ "button_index" ] == "-1":
	sys.exit()

# push
cmd1 = "adb"
cmd2 = "-s {0}".format(deviceId);
cmd3 = "push {0}".format(outPath + outputFileName);
cmd4 = "/storage/emulated/0/Android/obb/{0}/{1}".format(appPackageName,outputFileName);

acdebug.log([cmd1 + " " + cmd2 + " " + cmd3 + " " + cmd4])
message = subprocess.check_output(cmd1 + " " + cmd2 + " " + cmd3 + " " + cmd4)
message2 = message.decode().strip().split("\r\n")
for m in message2:
	if not str(m).startswith("["):
		acdebug.log(m)

#ログ抑制
image.png

check_outputで帰ってくるメッセージに進捗的なものが含まれていて、
これをログ出力するとADX2が重くなるので、分割しつつ、不要な進捗は表示しないようにしています。

.py
check_output
message2 = message.decode().strip().split("\r\n")
for m in message2:
	if not str(m).startswith("["):
		acdebug.log(m)

おわりに

adbコマンドも叩けるので、少し応用すれば、
サウンドデータ差し替えて、転送して、実行して、実機で確認
とかがなるべく手間なくできる環境が作れるかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?