안드로이드 폰에 관한 질문입니다.

lalupo20의 이미지

요즘 폰꼠을 만들겠다고 ndk로 개발중인데..

폰에 변경사항이 생기면 재부팅 후에 적용됩니다.

예를 들어서 코드 상에서 mkdir() 함수를 이용해서 폴더를 생성하면

생성되지 않았다가

재부팅하면 생깁니다.

다른 것들도 전부 그러네요. 파일도 쓰면 재부팅해야 생겨있습니다.

이거 원래 이런건가요?

이 폰 루팅된 폰인데 그래서 그런건가요?

자바로는 안해봐서 자바는 어떨지 모르겠네요.

shint의 이미지

찾아서 정리 해봤습니다. ㅇ_ㅇ;;
- 책 예제 보면 있을거 같은데요. 도서관이나 사이트에서 예제를 얻기도 합니다.
- 같은 폴더 / SD Card 폴더 / 메니페스트 권한 인가 하면. 루팅 안해도 될거 같은 느낌이 듭니다.
- 폴더 경로와 슬래시를 주의 하라는거 같습니다.
- fopen(filePath, "a+") 함수를 사용하기 전에 파일을 만들어야합니다. 또는 fopen(filePath, "a")
- C 언어 JNI 를 사용하는 방법도 있는거 같습니다.

mkdir andriod ndk 로 구글 검색

NDK로 안드로이드 앱에 폴더 생성 실패
https://translate.googleusercontent.com/translate_c?depth=1&hl=ko&ie=UTF8&prev=_t&rurl=translate.google.co.kr&sl=en&sp=nmt4&tl=ko&u=https://stackoverflow.com/questions/37687581/fail-to-create-a-folder-in-android-app-with-ndk&xid=17259,15700002,15700023,15700124,15700149,15700186,15700191,15700201&usg=ALkJrhgnBjFzL3xwyDs2F6lWXSVy7MM-LQ

메니페스트 권한

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

쓰기 가능한 경로

String config_path=m_context.getApplicationContext().getFilesDir().toString(); 

Android NDK 쓰기 파일
https://translate.googleusercontent.com/translate_c?depth=1&hl=ko&ie=UTF8&prev=_t&rurl=translate.google.co.kr&sl=en&sp=nmt4&tl=ko&u=https://stackoverflow.com/questions/4731314/android-ndk-write-file&xid=17259,15700002,15700023,15700124,15700149,15700186,15700191,15700201&usg=ALkJrhityp9c_UjpJFw1VgbkwehjaInMUw

data/data/<Your_package_name_usually com.android.appName>/files/<your_filename>
 
getFilesDir()
 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

SD CARD 사용

getExternalStorageDirectory(); //usually : /sdcard/<your_filename>

JNI C 언어

//Inside your java activity
File f = this.getApplicationContext().getFilesDir(); 
LibLoader.setupArchiveDir(f.toString());
 
//Inside your JNI wrapper
JNIEXPORT bool JNICALL Java_com_android_appName_LibLoader_setupArchiveDir(JNIEnv * env, jobject obj, jstring dir)
{
        const char* temp = env->GetStringUTFChars(dir, NULL);
    std::string stringDir(temp);
 
        // Will be receive as a std::string inside C++ code 
    MyNativeObjectInC++->SetupArchiveDir(stringDir);
}

One must create the file before using fopen(filePath, "a+") function. Or use fopen(filePath, "a")
fopen(filePath, "a+") 함수를 사용하기 전에 파일을 만들어야합니다. 또는 fopen(filePath, "a")

//
Android 7.0 동작 변경 사항
https://developer.android.com/about/versions/nougat/android-7.0-changes?hl=ko

SD Card에 폴더 생성하기
http://berabue.tistory.com/11

File.mkdir() and mkdirs() are creating file instead of directory
https://stackoverflow.com/questions/13953744/file-mkdir-and-mkdirs-are-creating-file-instead-of-directory

final File newFile = new File("/mnt/sdcard/test");
newFile.mkdir();
 
new File(FileName.substring(0,FileName.lastIndexOf("/"))).mkdirs();
 
String rootPath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/test/";
            File file=new File(rootPath);
if(!file.exists()){
file.mkdirs();
}
 
public final static String APP_PATH_SD_CARD = "/Test";
 
String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + APP_PATH_SD_CARD;
 
try {
    File dir = new File(fullPath);
    if (!dir.exists()) {
         dir.mkdirs();
    }
}
catch(Exception e){
    Log.w("creating file error", e.toString());
}

File
https://developer.android.com/reference/java/io/File

[Android] NDK와 C++ 언어로 개발 Android / 프로그래밍
https://blog.naver.com/ryuvsken/90982917

[android] [NDK] NDK 프로그램 Android / Java
https://blackzaket.blog.me/80119079694

안드로이드 마쉬멜로우 버전 이상에서 권한처리하기.
https://toepic.fail/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%A7%88%EC%89%AC%EB%A9%9C%EB%A1%9C%EC%9A%B0-%EB%B2%84%EC%A0%84-%EC%9D%B4%EC%83%81%EC%97%90%EC%84%9C-%EA%B6%8C%ED%95%9C%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0-95527b99aafb

AndroidManifest.xml
 
<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="fail.toepic.blink">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <application
 
해당 권한이 현재 허용 되어 있는가를 확인 하는 함수는 checkSelfPermission(String permission) 함수를 이용하여 체크
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
    Log.v(TAG,"Permission is granted");
    return true;
}
 
해당 함수는 주어진 권한을 체크하여 해당 퍼미션이 허용 되어있는지 (PackageManager.PERMISSION_GRANTED) 허용되어 있지 않은지 (PackageManager.PERMISSION_DENIED) 반환 합니다.
체크 결과 퍼미션이 허용 되어 있지 않다면. 유저에게 허용 해 달라고 팝업 메시지를 보내야 합니다.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

[안드로이드/android] 외부 저장소(External Storage) PART1 :: 앱해피
http://apphappy.tistory.com/71

안드로이드 6.0 Marshmallow 권한 획득하기 API 사용하기
http://thdev.net/634

WRITE_EXTERNAL_STORAGE not working on lollipop even though it's set in the manifest
https://stackoverflow.com/questions/41552251/write-external-storage-not-working-on-lollipop-even-though-its-set-in-the-manif

Conflicting android.permission.WRITE_EXTERNAL_STORAGE permissions #100
https://github.com/bitstadium/HockeySDK-Cordova/issues/100

안드로이드 NDK - 네이버 북
https://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C+NDK

한빛 미디어 - 안드로이드 검색 (부록/예제소스)
http://www.hanbit.co.kr/search/search_list.html?keyword_str=%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C

에이콘 출판사 - 안드로이드 검색 (부록/예제소스)
http://www.acornpub.co.kr/search?q=%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C

제이펍 출판사 - 안드로이드 검색
http://jpub.tistory.com/search/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C

위키북스 출판사 - 안드로이드 검색 (부록/예제소스)
http://wikibook.co.kr/?s=%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C

안드로이드 펍 - 개발자 사이트
https://www.androidpub.com/

안드로이드 폰 - 개발자 커뮤니티
https://cafe.naver.com/aphone

안드로이드 사용자 모임 카페
https://cafe.naver.com/androiders

샤오미 스토리 카페
https://cafe.naver.com/xst/

안드로이드 교육과정
http://blog.naver.com/hoyeon0721/20122674751
https://blog.naver.com/manyjijon/120104320036

타이젠 카페
https://cafe.naver.com/happy88car

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

lalupo20의 이미지

많은 도움이 되었습니다.