AndroidでAndroidアプリ(DXライブラリ使用)を開発する
概要
Android 端末上に、Android ネイティブ向けのビルド環境を構築し、DXライブラリ Android版を使って Android ネイティブ向けのアプリを作成するまでの手順を、詳細を省いて説明します。
手元の開発環境を GitHub にアップロードしています。適宜使ってください。
筆者のまともに使える Android 環境がエミュレータしかないので、実機では通用しない可能性が非常に高いと思われます。
以下は少し前に、DXライブラリ Android 版を使ったアプリ開発 on Termux を試したものです。
AndroidでAndroidアプリ(DXライブラリ使用)を開発してみたのです#Android #DXライブラリ #termux pic.twitter.com/vCCEV16pcs
— かめのこにょこにょこ (@kamenoko_dev) October 27, 2020
検証環境
項目名 | |
---|---|
端末 | Android Emulator |
OS | Android 11 |
CPU Architecture | x86_64 |
Termux のインストール
Google Play または F-Droid1 から termux をインストールしてください。
必要なパッケージのインストール
pkg install curl build-essential aapt openssl-tool apksigner
# それと適当なテキストエディタ
pkg install vim
DXライブラリ Android版のダウンロードと解凍
curl -o DxLib.zip https://dxlib.xsrv.jp/DxLib/DxLib_Android3_22a.zip
unzip DxLib.zip
なお、Zip ファイルの文字エンコードの違いゆえにファイル名の文字化けが起きます。
この記事 を参考に、DXライブラリ本体に含まれるフォルダのうち、その名前に Android
を含むフォルダを適当な名前にリネームすることをお勧めします。
ソースファイルを書く
Android版の注意点 (Windows版にあってAndroid版にない関数、ファイルパッケージングの制約など) に気を付けながら適当に書いてください。
#include <DxLib.h>
int android_main() {
if (DxLib_Init() == -1) {
return 0;
}
while (ProcessMessage() == 0) {
ClearDrawScreen();
DrawBox(0, 0, 300, 300, GetColor(255, 0, 0), TRUE);
ScreenFlip();
}
DxLib_End();
}
ビルドスクリプトの記述
依存ライブラリが非常に多いのと、ライブラリ同士の依存関係に注意が必要です。
clang -o libmain.so --shared --fPIC \
Main.cpp \
-I<DXライブラリへのパス>/<アーキテクチャ> \
-L<DXライブラリへのパス>/<アーキテクチャ> \
-landroid -lGLESv1_CM -lEGL -lstdc++ -lGLESv2 -lOpenSLES \
-lm -lDxLib -lDxUseCLib -ljpeg -lpng -lzlib -ltiff \
-ltheora_static -lvorbis_static -lvorbisfile_static -logg_static \
-lbullet -lopus -llog -ldl
# TODO: CMakeFile を使いたい
AndroidManifest.xml の記述
知識がないので、android/ndk-samples をほぼそのまま使用
パッケージングスクリプトの記述
cp libmain.so lib/<アーキテクチャ>
cp $PREFIX/lib/libc++_shared.so lib/<アーキテクチャ>
aapt package -M AndroidManifest.xml -F app.apk -f
aapt add app.apk lib/<アーキテクチャ>/libmain.so
aapt add app.apk lib/<アーキテクチャ>/libc++_shared.so
APK 署名の準備
keytool
が termux では使えそうにないので、OpenSSL を使って手動生成 しました。
openssl genrsa -3 -out key.pem 2048
openssl req -new -x509 -key key.pem -out key.x509.pem -days 10000 -subj '/'
openssl pkcs8 -in key.pem -topk8 -outform DER -out key.pk8 -nocrypt
APK への署名
apksigner sign --key key.pk8 --cert key.x509.pem app.apk
作った APK のインストール
手元の環境では、ファイルアプリから Termux が公開するストレージを開いて、それから .apk をタップしてインストールできました。
環境によっては、SDカードのダウンロードに移したり、提供元不明のアプリのインストールを許可したりする必要があると思われます。
あとがき
これが筆者のはじめての Android ネイティブアプリ作成であり、あちらこちらにバッドノウハウがちりばめられていると思います。
それと、手順が煩雑すぎるくせに、単一アーキテクチャにしか対応できないなど、どう考えても手軽とはいきません。
しかし、Android上でAndroidネイティブアプリを手軽に制作できる環境の潜在需要は、おそらく非常に大きいと考えている故、
私より強いAndroidエンジニアがこの記事を踏み台にしていくことを望んでいたりします。
-
Android SDK 29 以降の SELinux の W^X ポリシーの強化と、Google Play が受け付けるアプリの最低 SDK バージョンの引き上げのため、Play Store 版の機能更新ができない状況になっています。詳細は Termux and Android 10 を確認してください。 ↩
Author And Source
この問題について(AndroidでAndroidアプリ(DXライブラリ使用)を開発する), 我々は、より多くの情報をここで見つけました https://qiita.com/nokotan/items/4e96de17f4ea78c42f8c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .