AndroidのNDKですが、普通にC/C++ソースをコンパイル、リンクするぐらいならWindowsでも問題無いのですが、オープンソース系を使ってライブラリを作成してからリンク等をする場合、ちょっと環境的に無理があります。

それでも、MacOSなら、それなりにビルドツールが揃っているのでなんとかなるのですが、Windowsとなると難しい側面が多いですよね。

じゃー、Linuxでやれば良いじゃんとなるのですが、Windows使ってる方が何かと効率が良い時もあるんですよね。

ということで、両立させる良い方法はというと、Windowsには、WSLがありますよね。

このWSLにAndroid用ビルド環境を構築しておき、この環境でライブラリをビルド出来るようにすれば便利です。


WSL環境

WSLは、ChatGPTにでも聞いて環境構築して下さいませ。

ChatGPTは、万能ですよ。

まず、WSLにてUbuntu環境を用意します。 他でも良いですが、Debian系が好きなので

それでは、構築です。

wslを起動して作業開始しましょう。VSCodeなんかを使えば楽ですよ。

 

1.java環境インストール

apt install openjdk-17-jdk
 
.bashrcに追記
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
 
JAVA環境が複数ある場合、以下のコマンドで確認して下さいね。
update-alternatives --config java

2.Android環境インストール

https://developer.android.com/studio#downloads
linux コマンドライン版の zip形式をダウンロードし、ホームへコピーする
 
unzip [android-sdk.zip]
mkdir -p ~/Android/Sdk/cmdline-tools
ちょっと、古いバージョンだと都合が悪いので、後の作業の為にリネームしときます。
mv cmdline-tools ~/Android/Sdk/cmdline-tools/latest.org
 
.bashrcに追記
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/cmdline-tools/latest.org/bin

 

3.Android開発環境を整える

sdkmanager --install "cmdline-tools;latest"
ここで、cmdline-toolsがだぶってしまうので、orgを削除
rm -rf ~/Android/Sdk/cmdline-tools/latest.org
 
sdkmanager --install "platform-tools"
 
.bashrcに追記
export PATH=$PATH:$ANDROID_HOME/platform-tools
 
ライセンスAgree
sdkmanager --licenses
 
パッケージリスト
sdkmanager --list
 
NDK  <- ここらへんは、バージョンを考慮して下さい
sdkmanager --install "ndk-bundle"
sdkmanager --install "ndk;24.0.8215888"   
sdkmanager --install "ndk;25.1.8937393" 
sdkmanager --install "ndk;26.1.10909125"
sdkmanager --install "cmake;3.18.1"
sdkmanager --install "cmake;3.22.1"
sdkmanager --install "build-tools;33.0.0"
sdkmanager --install "platforms;android-34"
 
パッケージ更新
sdkmanager --update

4.AndroidStudio側

 

基本は、AndroidStudio NDK で、openssl と libssh ビルド と同じです。

しかし、scratch.shを実行しても、正しく動作しませんよね。

なので、ラッパーのbatとshを作成します。opensslのサンプルです。

/---openssl-1.1.1n

 |--output  <- ここにインクルードとライブラリが出来上がります。

 |--build.sh

 |--wslscrach.bat

 |--wslscratch.sh

 

wslscrach.bat

wsl -d ubuntu ./wslscratch.sh
echo exit

 

wslscratch.sh

#!/bin/bash
 
SRCFOLDER=`pwd`
 
rm -rf output/*
 
rm -rf ~/openssl
cp -rp ../openssl ~/.
 
cd ~/openssl
./scratch.sh
 
cp -rp output/* ${SRCFOLDER}/output/

 

これで、wslscrach.batを実行することで、outputフォルダにscratch.shの結果が出力されます。

wslscratch.shで、カレントフォルダをコピーしてビルドしているんですが、直接ビルドすることも可能です。

しかし、WSLの仕様で、Windows側のファイルを直接操作すると、めちゃくちゃ遅くなります。

なので、一旦、Linux側へソース環境をコピーしてビルドするようにしています。

 

Joomla templates by a4joomla