Android 開発で細々変更があったので自分用まとめ
文章をあれこれ書くより見たほうが早いので要点だけ。
app_dummy() が deperecated
android_main() から app_dummy() を呼び出していると
Calls to app_dummy are no longer necessary. See https://github.com/android-ndk/ndk/issues/381.
と警告が出ます。
解決方法
Android.mk を使っているなら
LOCAL_EXPORT_LDFLAGS := -u ANativeActivity_onCreate
CMakeLists.txt を使っているなら
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
もしくは
set_property(TARGET 共有ライブラリ名 APPEND_STRING PROPERTY LINK_FLAGS " -u ANativeActivity_onCreate")
を追加。前者のほうがプロジェクトごとに設定を変える必要がないので楽。
簡単な解説
リンク時に、呼び出されていない関数を削除する(strip機能)があるのだけど、それをごまかすために空の関数 app_dummy() というのを呼んでいました。 が、コンパイラ(というかリンカ)が頭がよくなって、誤魔化しがきかなくなったので、ANativeActivity_onCreate() という関数は消さないようにという指示をリンカに与えるようにしましょう。
という話。
${ANDROID_SDK}/android create project が無い
Android SDK の android create project が無くなった。IDEでプロジェクトを作成しろということらしい。 なんという改悪!自動化できないではないか!
というわけで自分でプロジェクトを生成する。
解決方法
gradle は Android Studio に入っているのでそれを使うか、Gradle 本家から持ってくる。 何か事故った時にAndroid Studioは入れておいたほうが良いかと思う⇒Android Studioはインストールしてある。という前提でAndroid Studio のものを使ってみます。
gradle を持ってくる
${ANDROID_STUDIO_HOME}\plugins\android\lib\templates\gradle\wrapper
gradle のバージョンを変更する
にgradle一式があるのでこれを自分のプロジェクトディレクトリにコピーします。 gradle/wrapper/gradle-wrapper.properties をテキストエディタで開きdistributionUrlの行のバージョン部分を変更します。 最新版を gradle の公式ページで確認しても良いのですが、ビルドすると「x.y以上にしてくれ」と言われるので、指示に合わせます。
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
build.gradle を作る
あとは ${ANDROID_STUDIO_HOME}\plugins\android\lib\templates\gradle-project のテンプレートを適当にコピー……といきたいのですが、これだと面倒なのでテンプレートを用意しました。
https://www.axfc.net/u/3821523.zip
key=create