---
# System prepended metadata

title: 'Android build 環境步驟,使用 python for android'

---

Android build 環境步驟,使用 python for android
---
[檔案位置](https://drive.google.com/drive/folders/1AkQsk3eyHIhI2PUR0a-CXoetMGrPNUMB?usp=share_link)

1.下載 [Android SDK](https://developer.android.com/studio/index.html)
![スクリーンショット 2023-07-18 午後9.26.16.png](https://i.imgur.com/yv42I69.png)
解壓縮後得到 cmdline-tools 資料夾,將資料夾名稱改成 Android_SDK (以下用 path_to_Android_SDK 代表指到此資料夾的路徑)

- 執行下列命令安裝 sdk
```
path_to_Android_SDK/bin/sdkmanager  "platforms;android-27" --sdk_root=path_to_Android_SDK
```
-  執行下列命令安裝 build_tools
```
path_to_Android_SDK/bin/sdkmanager  "build-tools;28.0.2" --sdk_root=path_to_Android_SDK
```

2. 下載 [Android NDK](https://developer.android.com/ndk/downloads?hl=zh-tw)
![スクリーンショット 2023-07-18 午後9.41.25.png](https://i.imgur.com/RZAo90u.png)
開啟下載好的 dmg 檔後開啟,右鍵選擇"顯示內容"(show package contents)
![スクリーンショット 2023-07-18 午後9.43.38.png](https://i.imgur.com/31H15d5.png)
把 NDK 資料夾複製出來,改名為Android_NDK
![Screen Shot 2023-07-18 at 9.52.00 PM.png](https://i.imgur.com/cMfl9IE.png)
3.設定環境變數(下面的路徑和版本改成自己電腦的)
```
# Adjust the paths!
export ANDROIDSDK="$HOME/Documents/android-sdk-27"
export ANDROIDNDK="$HOME/Documents/android-ndk-r25b"
export ANDROIDAPI="27"  # Target API version of your application
export NDKAPI="21"  # Minimum supported API version of your application
export ANDROIDNDKVER="r10e"  # Version of the NDK you installed
```

3. 使用 [參考](https://medium.com/@k1992313/python-for-android-踩雷心得-f07ac9c106ac)
```
p4a apk --private ./ \
    --requirements=python3,kivy \
    --bootstrap=sdl2 \
    --arch=arm64-v8a \
    --pakage=example.hello --name="HelloKivy" \
    --dist_name=testHelloKivy \
    --ndk_dir=$ANDROIDNDK --sdk_dir=$ANDROIDSDK\
    --release
```
重要的幾項參數
- ndk_dir, sdk_dir分別指向android ndk和sdk的位置，其中sdk可用sdkmanager安裝特定版本的SDK，而NDK請到android的官網尋找適當的版本。此例是使用SDK29, NDK 17c編譯而成。
- requirements為需要打包的套件，我所知目前支援的套件有numpy, matplotlib, cryptography, usb4a, pyjnius，pyserial尚待確認。
- arch 為設定目標平台
- release為是否釋出之版本
執行完成後，會在當下目錄產生APK檔，即可安裝入android系統內。

```
p4a apk --private /Users/2020mac01/Documents/測量與空間資訊_project/xml_parser練習/kivy_測試_android/basic_apk_資料夾/ \
--package=org.test.myapp \
--name "MY CAMERA" \
--version 0.1 \
--bootstrap=sdl2 \
--requirements=python3,kivy,openssl,android,pyjnius,plyer,pillow,bs4,requests,urllib3,idna,chardet,lxml,sdl2,pyobjus,tqdm,oscpy \
--sdk_dir=/Users/2020mac01/Documents/Android_project/ANDROID_SDK/ \
--ndk_dir=/Users/2020mac01/Documents/Android_project/ANDROID_NDK/ \
--arch=arm64-v8a \
--arch=armeabi-v7a \
--permission android.permission.READ_EXTERNAL_STORAGE \
--permission android.permission.WRITE_EXTERNAL_STORAGE  \
--permission android.permission.CAMERA \
--permission android.permission.INTERNET \
--service=Autopredictor:myservice.py 

```