Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

アプリ画面を開いて、下記の画面が表示されていれば成功です。

...

Pythonモジュールを改変する

SQLiteのコンパイルを実施できました。

次のチュートリアルとして、任意の外部ライブラリを利用する方法を説明します。

ここでは例として、前項で作成したサンプルアプリ「sqlite_app」にPycurlの外部ライブラリを読み込んでみます。

ソースコードをダウンロードする

PyCurlとOpenSSLのソースコードを以下URLからダウンロードしてください。

このチュートリアルでは、pycurl 7.45.2、OpenSSL 1.1.1 を使用します。

ダウンロードするバージョンは、使用する機能に合わせて選択してください。

pycurl 7.45.2

https://files.pythonhosted.org/packages/a8/af/24d3acfa76b867dbd8f1166853c18eefc890fc5da03a48672b38ea77ddae/pycurl-7.45.2.tar.gz

OpenSSL 1.1.1

https://github.com/openssl/openssl/archive/OpenSSL_1_1_1i.tar.gz

ダウンロードしたファイルは、${SDK_DIR}/external/build/sample/docker/docker_volumeディレクトリに配置してください。

コンパイル手順ファイルを更新する

${SDK_DIR}/external/build/sample/docker/docker_volume/module_compile.shファイルに、コンパイル手順を記載します。

下記の内容をコピーしてください。

Code Block
#!/bin/sh -x

HOME_PATH=/home/docker

OPENSSL_ARCHIVES=openssl-OpenSSL_1_1_1i.tar.gz
OPENSSL_DIR=openssl-OpenSSL_1_1_1i

PYCURL_ARCHIVES=pycurl-7.45.2.tar.gz
PYCURL_DIR=pycurl-7.45.2

apt update
apt install libcurl4-openssl-dev libssl-dev

cd ${HOME_PATH}
tar zxf ${OPENSSL_ARCHIVES}
cd ${OPENSSL_DIR}
./Configure linux-aarch64
make

export PYCURL_SSL_LIBRARY=openssl
export CPPFLAGS=-I${HOME_PATH}/${OPENSSL_DIR}/include/openssl
export LDFLAGS=-L${HOME_PATH}/${OPENSSL_DIR}

## for pycurl
cd ${HOME_PATH}
tar zxf ${PYCURL_ARCHIVES}
cd ${PYCURL_DIR}
python3.7 setup.py --with-openssl --openssl-dir=${HOME_PATH}/${OPENSSL_DIR} build

コンパイルする

Dockerを用いてsqliteモジュールとPythonモジュールをコンパイルします。

${SDK_DIR}/external/build/sample/docker ディレクトリでDockerを実行してください。

Code Block
$ docker run --rm -it --name aarch64-ubuntu -v `pwd`/docker_volume:/home/docker compile/ubuntu-rel:0.1

${SDK_DIR}/external/build/sample/docker/docker_volumeにコンパイル済みモジュールが作成されます。

AdamAppに配置する

作成されたモジュールを、AdamAppで使用できるように配置します。

チュートリアルではsrc/adamapp-py/sqlite_appを例とします。

PyCurlを配置する

PyCurlライブラリは以下のディレクトリにインストールされています。

${SDK_DIR}/external/build/sample/docker/docker_volume/pycurl-7.45.2/build/lib.linux-aarch64-3.7

pycurl.cpython-37m-aarch64-linux-gnu.so

上記ファイルを、AdamAppソースディレクトリにコピーしてください。

${SDK_DIR}/src/adamapp-py/sqlite_app/python/site-packages

Code Block
$ cp -R ${SDK_DIR}/external/build/sample/docker/docker_volume/pycurl-7.45.2/build/lib.linux-aarch64-3.7/pycurl.cpython-37m-aarch64-linux-gnu.so ${SDK_DIR}/src/adamapp-py/sqlite_app/python/site-packages

コピー後のディレクトリ構成は以下のようになります。

${SDK_DIR}/src/adamapp-py/sqlite_app/python/site-packages/pycurl.cpython-37m-aarch64-linux-gnu.so

サンプルアプリをビルドする

サンプルアプリ「sqlite_app」をビルドして、カメラにインストールします。

ビルド方法はSDK同梱のドキュメント「AdamAppDevelopmentManualForIpro_Vx_xx.pdf」の「How to develop AdamApp」を参照してください。

アプリ画面を開いて、下記の画面が表示されていれば成功です。

...

失敗した場合はアプリ画面にアプリ起動失敗を示すメッセージが表示されます。

今後はメッセージ内容やデバッグツールなどを用いて問題を解決し、アプリを作成してください。

チュートリアルは以上となります。