ActionScript」カテゴリーアーカイブ

MacにFlash Builderをインストールする

Mac Mojave(10.14.3)にFlash Builderを再インストールしたら起動しなくなってしまったので、その復旧作業をメモしておきます。

理由としてはJavaのバージョンの違いで、Flash BuilderがJava6を前提としているのに対してウチのMacはJava8なので、Flash BuilderがJava8で動くように設定を変えてやる必要があるという次第です。

こんなもん数年前から問題が報告されていて、その対応も修正パッチを当てる程度で終わることなのに、ずーっと放置されている。
Adobeという企業のやる気の無さというかFlash Builderに対する「サポート終了」感は正直ひどい。
フリーウェアならそれでも構わないけど、未だに安くない値段で販売しているくせに放置なんだぜ。

さて。
作業としては 昔作った Adobe AIR のアプリをメンテしようとしたら、リリースビルドが出来ずに苦労した件 – inosyanのブログ の「Javaのバージョンをあげる」に書かれている通りでOKです。
こうした情報はリンク先が消滅すると失われてしまうので、保険の意味で自分のブログに残しておこうというのが今回の目的です。

まずは環境変数JAVA_HOMEを設定します。
~/.bash_profileに

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Home

を追加、もしくは記述変更。
“jdk1.8.0_xx.jdk”は使用中のJavaのバージョンに対応するので、

java -version

で調べて、それに応じた記述を行う。

次に、先ほどのJAVA_HOMEに以下のフォルダを作成。 /Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Home/bundle/Libraries
ここにシンボリックリンクを作る。

sudo ln -s \
/Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Home/jre/lib/server/libjvm.dylib \
/Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Home/bundle/Libraries/libserver.dylib

それから、
/Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Info.plist
の<key>JVMCapabilities<key>を探し

<key>JVMCapabilities</key>
<array>
    <string>JNI</string>
    <string>BundledApp</string>
    <string>CommandLine</string>
</array>

と書き換える。
これでJavaの方の設定は終わり。
次はFlash Builder本体の設定を書き換える。
/Applications/Adobe Flash Builder 4.7/Adobe Flash Builder 4.7.app を右クリックで「パッケージの内容を表示」。
Contents/MacOS/Adobe Flash Builder 4.7.ini をテキストエディタ等で開いて、最後に以下を追加

-Djava.library.path=../../../eclipse/plugins/com.adobe.flexide.nativelibs_4.7.0.349722/os/macosx/:../../../eclipse/plugins/com.adobe.flexide.amt_4.7.0.349722/os/macosx/:../../../eclipse/plugins/com.adobe.flexbuilder.utils.osnative_4.7.0.349722/os/macosx/

あとはPCを再起動すればOKです。

追記

以上でFlash Builderは起動したものの、「プロジェクトのプロパティ > Flex ビルドのパッケージ化」を開こうとする、もしくは「リリースビルドの書き出し」ボタンをクリックするとアプリが落ちる。

解決策は https://discuss.as3lang.org/t/solution-to-flash-builder-4-7-crash-on-mac-os-10-13-high-sierra/1163 にありますが

  1. http://download.adobe.com/pub/adobe/flashplayer/fb.zip をダウンロード
  2. 解凍して得られる2つのjarファイルを “/Applications/Adobe Flash Builder 4.7/eclipse/plugins/” にコピー(もしすでにファイルがあっても上書きする)

これで直りました。

さらに追記

特にエラーがあるというわけではないのにビルドに失敗するようになった(Flash Builderを再起動するとビルドに成功する)ので調べたところ、”/Applications/Adobe Flash Builder 4.7/Adobe Flash Builder 4.7.app/Contents/MacOS/Adobe Flash Builder 4.7.ini” に以下を追加することで直りました。

-Djava.util.Arrays.useLegacyMergeSort=true

Animate CC を始めてみよう #2

前回の続き

ぼくが今Adobe AIRに対して感じている魅力のひとつに挙げたいことは、アプリのメンテナンスが楽だということです。

スマホアプリ界では、スマホのOSバージョンアップに合わせてアプリを最新のSDKでビルドし直さなければならないことがたびたびあります。
こんなとき、たとえば今メインで使っているionicなんかでは、プログラムはまったく変えていないのにいざビルドしようと思ったらエラーが大量に発生してビルドできない!ということがよく起こります。
これは勢いのある若いフレームワークによくあることで、こうしたフレームワークは日々刻々と進化するのはいいのですが、それについていくための修正がこちらにも求められます。

たとえば3年も5年も前に作ったアプリなんて、よほど人気があるとか思い入れがない限り、今さらメンテナンスするのは正直面倒くさいわけで。
それでも「再ビルドして終わり」くらいの労力ならしょうがないやるか・・・と思ったら、わけのわからないビルドエラーがずらりと出てきてうわー面倒臭い・・・ええい、もうストアから削除しちゃえ!てなことになりがちです。

その点Adobe AIRでは、こうした苦労はほとんどしたことがありません。
フレームワークとしての仕様はずいぶん昔に固まっているので、数年前のプログラムであっても普通にそのままビルドできるんじゃないでしょうか。
悪く言えば「枯れている」ということになるのですが、毎度毎度のビルドエラーに悩まされることを思えば、これは大きな魅力だと思います。

Adobe AIRの特徴として、ビルド作業がSDKによってほぼ100%ブラックボックス化されています。
他のフレームワークだと最終段階はXcodeやAndroid Studioでビルドできる/しなければならない・・・のですが、Adobe AIRにはこれがありません。
ビルドエラーが発生したからXcodeやAndroid Studioを立ち上げてエラーの修正を試みる・・・みたいなことをやる必要はありませんし、逆にやりたくても出来ません。
すべてSDK任せ。
もしビルドエラーが発生した場合には、SDKが修正されるのをひたすら待つほかありません。

SDKの不具合を自分で修正できない不自由さやリスクはあるものの、難しいことなしにビルドが通るというのは非常に大きな魅力だと言えるでしょう。

続く

Flash Builder で iOS シミュレーターでデバッグする

Mac の Flash Builder 4.7 で iOS シミュレーターでデバッグしようとして「起動しない」みたいな時は、

「システム環境設定 > セキュリティとプライバシー > アクセシビリティ」のプライバシーの項目にある Flash Builder に許可を与えてやるといい。

・・・最近ちょっとぼくの中の Adobe AIR 熱が上がってきた。

ActionScriptでPNG, JPEGの生成

今さら気づいたのだけど、ActionScript で BitmapData から PNG や JPEG を生成するときは BitmapData の encode メソッドを使えばよかったのか。
ずっと PNGEncoder や JPEGEncoder を使っていたのだけど、処理が遅いなぁと思っていたのだ。
BitmapData.encoder を使ったら、めっちゃ早かった。
知らんかった・・・。