前回の続き。
https://mruby.tnantoka.com/entry/2020/12/03/223044
次は実機で動かしたい。
有言実行。
有言実行は野望達成には逆効果だそうですが。
https://www.ted.com/talks/derek_sivers_keep_your_goals_to_yourself/transcript?language=ja
mrubyのbuild
Emulatorとはアーキテクチャが違うので、custom_build_config.rbに追記します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
api = 29
MRuby::CrossBuild.new('android_arm64-v8a') do |conf|
conf.toolchain :android, arch: 'arm64-v8a', platform: "android-#{api}"
Dir.glob("#{root}/mrbgems/mruby-*/mrbgem.rake") do |x|
g = File.basename File.dirname x
conf.gem :core => g unless g =~ /^mruby-(test|bin-.*)$/
end
conf.cc do |cc|
cc.defines << "__ANDROID_API__=#{api}"
cc.flags << "--sysroot=#{ENV['ANDROID_NDK_HOME']}/sysroot"
end
end
buildします。
1
2
3
4
$ cp -r ~/Library/Android/sdk/ndk/21.1.6352462/sysroot/usr/include/android ~/Library/Android/sdk/ndk/21.1.6352462/platforms/android-29/arch-arm64/usr/include
$ cd mruby-2.1.2
$ rake MRUBY_CONFIG=../custom_build_config.rb ANDROID_NDK_HOME=~/Library/Android/sdk/ndk/21.1.6352462/
これでPixel 5で動くlibmruby.aができました。
実機で実行
libruby.aをコピーします。 この手順も前回とほぼ同じです。
1
2
3
$ cd ..
$ mkdir -p app/src/main/cpp/imported-lib/arm64-v8a/
$ cp mruby-2.1.2/build/android_arm64-v8a/lib/libmruby.a app/src/main/cpp/imported-lib/arm64-v8a/
あとは実行するだけです。 実機での実行方法は公式サイトに書いてあります。
https://developer.android.com/training/basics/firstapp/running-app?hl=ja
結果は…
動きました!
せっかくなので何か作ってみたいけど、まずはAndroidアプリの作り方を勉強しないと…。