kivy / kivy/python-for-android

When building python3.14 user should be forced to upgrade to ndk_target_24 and api_target_24 instead of throwing an error that is not understood.

オープン
#3,257 コメント 0 件 リアクション 2 件 担当者 0 名 GitHub で見る
need-analysis
主要言語
Python
スター
8.9k
フォーク
2k
平均マージ
12時間 20分
マージ済み PR(30日)
9

説明

I got this error while building python3.14
```c
/home/kengo/PycharmProjects/parkkly/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/arm64-v8a__ndk_target_23/python3/Python/remote_debugging.c:48:19: error: call to undeclared function 'pwritev'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
48 | written = pwritev(handle->memfd, local, 1, offset);
| ^
```

After some research I discovered that:
> This means the compiler encountered a call to pwritev() but couldn't find its prototype.
In modern C (C99+), calling undeclared functions is no longer allowed.

And it could be fixed by patching `Python/remote_debugging.c` to include
```c
#include
```
Which I think should be a good option to still support lower android versions.

But then again I discovered that:
> Android NDK only supports pwritev() from API level 24 (Android 7.0, Nougat) and above.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Python/remote_debugging.c から始め、ndk_target_23 と api_target_23 を使って python3.14 のビルドを再現します。python-for-android がこれらのターゲット設定を処理している箇所を追跡します。完了条件は、ビルドが説明のない pwritev() エラーを出力するのではなく、ndk_target_24 と api_target_24 を明確に要求することです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
android, python
領域
build-system, mobile
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。