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做了限制,由於時間原因,沒有深入分析原因!