いさぽん.COM「つくる」に挑戦中

ゲーム系プログラマによる特に方針のないブログ。技術系とカレー、ラーメンネタ多めだったはずが、最近はダイエットネタ多め。

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