Android sdk-29版本上使用 jni mkdir创建文件夹失败返回-1
+ compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.kxf.opencvandroiddemo"
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
std::string prefix = "/storage/emulated/0/aCardOCR/";
if (access(prefix.c_str(), 0) == -1){
//如果文件夹不存在
int code = mkdir(prefix.c_str(), S_IRWXU); //则创建
LOGE("%s 创建 %d", prefix.c_str(), code);
}
解决方法:sdk降回28,如下
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.kxf.bankcardocr"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
原因分析:可能是Android高版本的sdk对访问sdcard做了限制,由于时间原因,没有深入分析原因!