Like, do you mean "the minsdkversion at runtime" or "the minsdkversion of the runtime?"
Conversation
Hey so, I really appreciate your help on this and I'm sorry about all these minor questions… I do have one more question.
Is _chk something that would appear on all functions, or only socket functions such as sendto?
2
Replying to
It's for all functions in libc handling buffers. There are fortified versions that are automatically used to add buffer overflow checks based on compile-time sizes. sendto is an issue because of this API mismatch because the code to fortify it was added for API 26.
1
Replying to
Okay, that's extremely interesting.
But this does still imply that if I could compile out the socket code, I'd sidestep this issue?
(I'm not sure I *can* get rid of it because maybe it uses sockets for IPC, but I legitimately don't want my audio subsystem talking to TCP/IP!)
1
Replying to
You should really just get __ANDROID_API__ actually set to 23 (if minSdkVersion is 23). It's not the only thing that's going to break. It's also possible the compiler/linker use stuff that's not available for lower API levels, etc. since higher API levels are a diff target.
2
Replying to
I think you had the right idea setting that CMake variable to API 23. I just think it's not really intended to build Java and that may not work properly? So probably set it to 23 and then deal with fixing how it builds Java.
2
Replying to
Sorry, there are many knobs to twiddle and I've been performing many tests rapidly this entire time (it's just each test is slow because it's a full clean build…)
1
So to summarize:
API 21: This is an "old" value I used when I was trying to support Oculus Go. This failed to build, Android error.
API 23: This is the recommended value. This built. It does seem to still lead to the sendto_chk error.
API 26: Value I was using at start of day.
1
1
When I did API 23, I was able to verify (by use of #error) that on at least one C file in the "problem" project it was using __ANDROID_API__=23.
What I have *not* tested yet (am testing now) is all 3 of:
- Use Android SDK vended cmake
- Specify CMAKE_BUILD_TYPE=release
- API 23
2
Replying to
It sounds like it must not be using __ANDROID_API__=23 in the files that are going wrong though.
Great news. With ALL FOUR of 1. Use Android SDK vended CMake 2. Use API 23 3. Build as release 4. Build libpd as static, I have managed to get to where the process launches and then commits a conventional segfault. I know how to debug those. Thanks for the help :)
1

