728x90
반응형

오랜만에 RN 수정사항이 들어와서 프로젝트를 clone 하고 yarn 으로 모듈을 설치 한후 

 

yarn android 로 사뿐히 앱을 실행해보니

 

에러가 나왔다.

접근권한때문에 나오는 에러기때문에

 

 chmod 755 android/gradlew

명령어를 clone받은 프로젝트 루트에서 한번 입력해주고 다시 yarn android로 프로젝트 실행!

728x90
반응형
728x90
반응형

이번에 안드로이드 os가 업데이트 되면서, 기존에 잘 돌아가던, QR리더기쪽에 문제가 생겼다.

 

회사에 있는 기기의 os를 업데이트하며 테스트를 진행해봤는데, 아무 문제가 없었는데, 지속적으로 특정 유저에게서 문제가 발생한다는

 

QA팀의 연락을 받았다.

 

기기명과 os버전을 받고나서 테스트를 해보려고했는데, 회사에 없는 기기였다.

 

https://developer.samsung.com/remote-test-lab

 

Samsung Developers

The world runs on you.

developer.samsung.com

으로 들어가서 해당 기기를 대여했다.

 

접속하면

 

이 탭에서

 

대여할 기기를 선택해서 대여하면된다.

 

기기의 문제가 아니라, 안드로이드 sdk api 레벨에 따른 문제로 밝혀졌다.

728x90
반응형
728x90
반응형

앱내에서 사용하는 Webview로 이루어진 공지사항 / 개인정보처리방침 / 이용약관 등에서

타 부서에서 네트워크가 없을때, 에러코드가 나오는 것이 보기 안좋다고 404 에러 페이지를 제작해달라고했다.

web.setWebViewClient(new CustomWebViewClient(){
    @Override
    public void onReceivedError(WebView view, int errorcode, String description, String failingUrl) {
        if(errorcode == 404){
            web.loadUrl("file:///android_asset/html/error404.html");
        }else {
            web.loadUrl("file:///android_asset/html/errorElse.html");
        }
    }
});

해당 코드로, asset 폴더안에 html 폴더를 만들고(선택사항), html 파일을 퍼블리셔분에게 받아서

error가 나왔을때, 웹뷰에서 해당 html을 보여주는 식으로 작성해서 문제를 해결했다.

현재 웹뷰에서 데이터를 주고받는 것이 아니라, 404말고는 나올 에러가 없지만, error code에따라 분기처리 해놓았다.

728x90
반응형
728x90
반응형

앱내에서 SEND action을 통해 데이터 정보를 공유할때

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);

로 시작하는 intent 에서 에레가 발생했다.

 

정확한 위치는

shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share using"));

에서 에러가 났는데, 해당 에러 내용은 

 

E/DatabaseUtils: Writing exception to parcel
    java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvider uri content://프로젝트이름.FileProvider/파일경로 from pid=28663, uid=1000 requires the provider be exported, or grantUriPermission()
        at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:835)
        at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:695)
        at android.content.ContentProvider$Transport.query(ContentProvider.java:234)
        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
        at android.os.Binder.execTransactInternal(Binder.java:1179)
        at android.os.Binder.execTransact(Binder.java:1143)

 

였다. 

 

 provider be exported, or grantUriPermission() 로 stack over flow를 검색해보고 나왔던

 

manifest provider 에 exported=true 옵션과

grantUriPermission()를 모두 해도 같은 에러가 나왔다.

 

결국 

shareIntent.setClipData(ClipData.newRawUri("", uri));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share using"));

 

 setClipdata를 넣어서 에러 해결

728x90
반응형
728x90
반응형

안드로이드 앱 release 빌드를 하면서 처음 겪어본 에러였다.

 

1.0.1 버전부터 현재 2.2.4버전인데, 구글 플레이 스토어에 베포를 하려고 Generate Signed Bundle / APK 를 실행했더니,

잘되던 빌드가 되지않아서 살짝 당황했다.

 

에러 내용은 다음과 같다. 

Lint found fatal errors while assembling a release target.

Fix the issues identified by lint, or create a baseline to see only new errors:
```
android {
    lint {
        baseline = file("lint-baseline.xml")
    }
}
```

For more details, see https://developer.android.com/studio/write/lint#snapshot

 

린트 검사로 코드 개선  |  Android 스튜디오  |  Android Developers

테스트를 빌드하여 앱이 기능적 요구사항을 충족하는지 확인하는 것 외에도 린트를 통해 코드를 실행하여 코드에 구조적 문제가 없는지 확인하는 것이 중요합니다.

developer.android.com

 

해당 내용을 인터넷을 통해 찾아보니, string.xml 에서 값들이 제대로 명시되지 않았을때, 나오는 경우가 있다고한다.

 

현재 서비스하고있는 앱은 16개언어로 다국어 처리가 되어있는데,

 

%s %d 와 \n 등을 제대로 xml에 적용시키지않는 문제에서 발생했다.

 

\ n 등과 %s 등을 제대로 수정하고나서 다시 빌드해보니 해결되었다.

 

728x90
반응형

+ Recent posts