【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は終了すると自動的に再起動します)
すると・・・
なんと、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分・・・
ありました。
普通にホームディレクトリにありました。
隠しファイルは、Finderの検索では見つからないようです。
ということで、この.sdkboxフォルダをまるごと消して、
再インストール。
無事、SDKBOXも復活しました!
下手に自動化とか考えて、環境変数ファイル触るんじゃなかったと、後悔しております。
と言いつつこの後、懲りずにaliasを作りまくってました。
なんとか、コンパイル〜インストールと、それらの通知までをほぼ自動で行えるようにしました。
まず、setaliasコマンドで、.bashrcをviで開いて、その後に.bash_profileで.bashrcを再読込というaliasを作りました。
このsetaliasで他のaliasも追加していくわけです。
そして、現在のCCのプロジェクトの名前(フォルダ名)とビルド先のフォルダ名を予め設定しておいて、
auto_debug TaskEstimate-debug.apk という感じで自動的にコンパイル、インストールするようにしました。
aliasで設定しているのは、あくまでコマンド扱いなので、
「TaskEstimate-debug.apk」を「appname-debg.apk」というように設定できないので、これが限界でしょうか。
シェルスプリクトやAppleScript、AutoMatorならもちろん可能でしょうが、
勉強不足で、なかなか・・・。
シェルスプリクトも興味はありますが、今度また、AutoMatorを勉強してみたいですね。