PhoneGap を エミュレータで確認する(Genymotionで起動)
ビルドしてみたものの、PhoneGap Developer App では動いた所が動かないので 何はともあれデバッグ環境の確保…。
こちらの記事を参考にさせて頂きました。
Cordovaを使って、Androidの実機実行するまで – Qiita
Genymotion を使用することにしました。
Android Studio も既に入っていますが重すぎるので…
目次
インストール
Genymotion For Fun – Free Android Emulator (For Personal Use)
※ Genymotion はアカウント登録が必要です。
Google Nexus 4 5.0.5 にしてみました。
インストールも起動も早いです。
PhoneGap アプリ起動
アプリのディレクトリに移動し、
1 |
cd /PATH/AppDirectory |
起動…
1 |
phonegap run android |
エラー
(インストール後の追記)
この後、エラーが次々出て解消にすごく時間がかかりました。
数年前にインストールしたきりの、古い Android Studio (1.4)のまま進めてしまったからかもしれません。(Android Studio 入っているから大丈夫、位の認識で気にしていなかった)
以下のエラー解消はメモ的に記載していきました。
Error: spawn EACCES
1 2 3 4 5 6 7 8 |
[phonegap] executing 'cordova platform add --save android ' ... [phonegap] completed 'cordova platform add --save android --no-telemetry' [phonegap] executing 'cordova run android ' ... ANDROID_HOME=/Users/xxxxx/Library/Android/sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home Error: spawn EACCES |
下記の記事を参考にさせて頂き、解消しました。
cordova run android コマンドで 「Error: spawn EACCES」が発生した時の解決方法 – *いしのなかにいる*
–verbose を追加して、どこでエラーが出ているか確認
1 |
phonegap run android --verbose |
ここでした
1 2 3 4 |
Running command: "/Applications/Android Studio.app/Contents/gradle/gradle-2.4/bin/gradle" -p /Users/xxxxx/Documents/PhoneGap/SpacePhoto/platforms/android wrapper -b /Users/xxxxx/Documents/PhoneGap/SpacePhoto/platforms/android/wrapper.gradle Error: spawn EACCES |
実行権限を与えます。
1 |
chmod +x /Applications/Android\ Studio.app/Contents/gradle/gradle-2.4/bin/gradle |
再び起動…
1 |
phonegap run android --verbose |
Android SDK の ライセンスエラー
さっきの所は通過したけど、またなんか色々エラー出ました orz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Checking the license for package Android SDK Platform 26 in /Users/xxxxx/Library/Android/sdk/licenses Warning: License for package Android SDK Platform 26 not accepted. FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'android'. > You have not accepted the license agreements of the following SDK components: [Android SDK Platform 26]. Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager. Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED (以下略) |
Android Studio の SDK Manager で色々アップデートして、Android Studio が古い事に気づき アップデート… それでもダメだった。
どうも、license ディレクトリにライセンスコードが有るらしいけど、そもそもそのようなディレクトリが無い。
このページが参考になりました…(google翻訳駆使)
android – Automatically accept all SDK licences – Stack Overflow
- 他にも何箇所かで見つかった、n8933bad161af4178b1185d1a37fbf41ea5269c55 というライセンスを追加する方法じゃダメだった
- ./sdkmanager –licenses も出来なかった
私の環境でやっと出来たのは、
下記コマンドを実行
1 2 |
cd $ANDROID_HOME/tools/bin ./sdkmanager --update |
Accept? (y/N): y と聞かれるので y で進む。(2回出てきた)
2回目終わるまでが結構時間かかる。
下記のファイルが作成された
Library/Android/sdk/licenses/android-sdk-license
Library/Android/sdk/licenses/intel-android-extra-license
※ 上記の前に$ANDROID_HOME のパスを通した
1 |
vi ~/.bash_profile |
下記を記述
1 |
export ANDROID_HOME=$HOME/Library/Android/sdk |
ターミナルを再起動して確認
1 2 |
$ANDROID_HOME -bash: /Users/xxxxx/Library/Android/sdk: is a directory |
android-versions モジュールのエラー
再び
1 |
phonegap run android |
さくせすふるきたーっ
1 2 3 4 5 6 7 8 9 10 11 12 13 |
・・・ (略) BUILD SUCCESSFUL Total time: 1 mins 15.182 secs Built the following apk(s): /Users/xxxxx/Documents/PhoneGap/SpacePhoto/platforms/android/build/outputs/apk/android-debug.apk ANDROID_HOME=/Users/xxxxx/Library/Android/sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home Error: Cannot find module 'android-versions' |
と思ったら最後になんかエラー・・・
下記ページを参考に、
Ionic – Error: Cannot find module ‘android-versions’ – Stack Overflow
android-versions モジュールのインストール
1 |
npm install android-versions --save |
ビルド成功!!
再び・・・
1 |
phonegap run android |
・・・
1 2 |
[phonegap] executing 'cordova run android ' ... [phonegap] completed 'cordova run android --no-telemetry' |
Genymotion 上で起動されました
長い旅路だった・・・