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 ```