I am using a packge name "iop-python" for my kivy app. It is not present inside the pythonforandroid for compilation so i code a recipe for it. But I am having issue in writing the recipe. iop-python package git repo link: https://github.com/BukiOffor/hydra-python-api/tree/main I am having to compile this package using pythonforandroid I am having to compile this iop-python using pythonforandroid so it will run on android Recipe code import os from pythonforandroid.recipe import PythonRecipe from pythonforandroid.toolchain import shprint import sh from os.path import join class HydraPythonApiRecipe(PythonRecipe): version = 'main' url = 'https://github.com/BukiOffor/hydra-python-api/archive/main.tar.gz' # Define dependencies for building the Python package depends = ['python3', 'setuptools', 'wheel', 'rust'] # Define Python-specific dependencies python_depends = ['maturin', 'tomli'] def build_arch(self, arch): super().build_arch(arch) # Ensure setuptools is installed shprint(sh.pip3, 'install', 'setuptools') # Set up Rust toolchain for the specific target architecture rust_target = 'armv7-linux-androideabi' if 'armeabi' in arch.arch else arch.arch shprint(sh.rustup, 'target', 'add', rust_target) # Define the build directory based on architecture build_dir = self.get_build_dir(arch.arch) # Run maturin to build the Python wheel using Rust # Ensure you're using the correct target for cross-compilation env = self.get_recipe_env(arch) # Get the appropriate environment shprint(sh.maturin, 'build', '--release', '--target', rust_target, '--out-dir', build_dir, _env=env) # Install the resulting wheel wheel_path = join(build_dir, f'hydra_python_api-{self.version}-py3-none-any.whl') # Update to match your wheel name pattern shprint(sh.pip3, 'install', wheel_path) def get_recipe_env(self, arch): """ Set up the build environment for the architecture, including Rust flags. """ env = super().get_recipe_env(arch) # Set Rust-related environment variables for cross-compilation rust_target = 'armv7-linux-androideabi' if 'armeabi' in arch.arch else arch.arch env['CARGO_BUILD_TARGET'] = rust_target env['RUSTFLAGS'] = '--sysroot={}'.format(self.ctx.ndk_sysroot(arch)) return env def install_dependencies(self): """ Ensure all Python dependencies are installed from requirements.txt. This should be called before building. """ shprint(sh.pip3, 'install', '-r', 'requirements.txt') # Register the recipe recipe = HydraPythonApiRecipe() Continue reading...