こるだのさえずり

技術関係、創作関係。

【Cocos2d-x】.bash_profileを上書きしてしまった話【SDKBOX】

私はMacで開発してるのですが、
ホームディレクトリにある環境変数ファイル「.bash_profile」を
誤って上書きしてしまいました。

誤って上書き。
すごく嫌な響きですよね。ほんと。死にたい。

そもそもなぜそんな事をしてしまったかと言うと・・・

SDKBOXのプラグインをインポートしたビルドは、Android Studioでは起動できないようなのです。
なので、cocos compile コマンドで、Androidコンパイルをして、apkを生成していました。

ですが、わりと時間掛かるんですよね。
さらに、AVD(エミュレータ)にapkをインストールするのも、手動またはadb install コマンドでしなければならないのです。

普通にCocos2d-x使ってる人たちにとっては当たり前かもしれませんが、かなり手間だと感じました。

そこで、シェルスクリプトとは言わずとも、aliasコマンドとか使って自動化できないかな?と考えました。

しかし・・・。数年コマンドライン(windows)とかターミナル(mac)触ってなかった上に、ちょっと気持ちが浮ついていたのかもしれません。
まだ.bash_profile存在しないのかな?と思って、
空の.bash_profileを生成してしまいました。

いやー、かなり焦りました。
頭があまりに混乱していて、とりあえず散歩に出ました。

.bash_profileは隠しファイルなので、とりあえず隠しファイルを表示する方法を探しました。

defaults write com.apple.finder AppleShowAllFiles TRUE

ターミナルで上記のコマンドを実行することで、
Finderで隠しファイルの表示をtrueにできます。

次に

killall Finder

これで、Finderを強制終了させて、再起動させます。
(Finderは終了すると自動的に再起動します)

すると・・・

f:id:boemusan:20161005024424p:plain

なんと、backupファイルがあるではありませんか!!

どういうタイミングなのかは不明ですが、自動的にバックアップファイルが作られていたようです。


バックアップを.bash_profileにコピーして、

source ~/.bash_profile

で.bash_profileを読込みました。

早速、cocos コマンドを試してみると、
使えました!

いやー良かった。一件落着。めでたしめでたし。
そう思いながらsdkboxコマンドを実行してみると・・・

  • bash: sdkbox: command not found

(´・ω・`)


バックアップは完全ではなかったようです・・・。
バックアップのタイミングは謎です。
そもそもバックアップファイル5つだけっていうのも少ないですし。

じゃあsdkboxを再インストールしようと思って、実行してみたのですが・・・

SDKBox installer have been installed

(´・ω・`)・・・

sdkboxのコマンドを再度試してみるも、やはり無効。
どうやら、既にインストールされていると認識して、環境変数とか直してくれたりも無いようです。
そりゃそうですよね・・・

ということでSDKBOXのインストール場所を探してみたのですが・・・
無い!
Finderで探しても、それらしきフォルダが見つからない。
ググってみても、同じような人は居ない。そりゃそうだ・・・

手動で探すこと30分・・・
ありました。
f:id:boemusan:20161005025733p:plain

普通にホームディレクトリにありました。
隠しファイルは、Finderの検索では見つからないようです。
ということで、この.sdkboxフォルダをまるごと消して、
再インストール。

f:id:boemusan:20161005030029p:plain
無事、SDKBOXも復活しました!


下手に自動化とか考えて、環境変数ファイル触るんじゃなかったと、後悔しております。
と言いつつこの後、懲りずにaliasを作りまくってました。

なんとか、コンパイル〜インストールと、それらの通知までをほぼ自動で行えるようにしました。

f:id:boemusan:20161005030730p:plain

まず、setaliasコマンドで、.bashrcをviで開いて、その後に.bash_profileで.bashrcを再読込というaliasを作りました。
このsetaliasで他のaliasも追加していくわけです。

そして、現在のCCのプロジェクトの名前(フォルダ名)とビルド先のフォルダ名を予め設定しておいて、
auto_debug TaskEstimate-debug.apk という感じで自動的にコンパイル、インストールするようにしました。

aliasで設定しているのは、あくまでコマンド扱いなので、
「TaskEstimate-debug.apk」を「appname-debg.apk」というように設定できないので、これが限界でしょうか。


シェルスプリクトやAppleScriptAutoMatorならもちろん可能でしょうが、
勉強不足で、なかなか・・・。
シェルスプリクトも興味はありますが、今度また、AutoMatorを勉強してみたいですね。