레이블이 android인 게시물을 표시합니다. 모든 게시물 표시
레이블이 android인 게시물을 표시합니다. 모든 게시물 표시

2024년 6월 7일 금요일

Android 신버전 gradle 빌드 에러(Naver Maps SDK)

시간이 좀 된 프로젝트를 빌드하려 했더니 나베르 API 부분에서 에러 발생

Certificate for <navercorp.bintray.com> doesn't match any of the subject alternative names: [*.jfrog.io, *.int.jfrog.io, jfrog.io, *.pe.jfrog.io]


아래 답변보고 해결함. 역시 누군가 먼저 고생을..

https://developers.naver.com/forum/posts/30884


https://navercorp.bintray.com/maps 주소를

https://naver.jfrog.io/artifactory/maven/

로 변경


API나 저장소 주소같은 걸 바꿔버리면 좀 치명적이지 않나..

deprecation warning같은 걸 띄워주는 유예기간을 주긴 하겠지만 그래도

2019년 7월 3일 수요일

안드로이드 서비스의 스레드 안에서 토스트 띄우기

안드로이드 서비스의 스레드 안에서 토스트를 띄워야할 상황이 있다.
하지만 토스트함수의 직접호출이 안되고
서비스 내에는 runOnUiThread() 도 사용 불가하기 때문에 다음과 같이 대체함수를 만들어 호출한다.


1. 서비스 클래스 안에서 멤버 변수 선언
Handler handler;    // for toast UI


2. OnCreate() 내부에서 초기화
handler = new Handler();

3. 함수 추가
private void _runOnUiThread(Runnable runnable) {
    handler.post(runnable);
}


4. 우리가 원하는 토스트 띄우기
  (3.에서 선언한 함수를 불러오기)
_runOnUiThread(new Runnable() {
    public void run() {
        Toast.makeText(getApplicationContext(),
                       "TOAST MESSAGE TEXT",
                       Toast.LENGTH_LONG).show();
   }
});


2019년 2월 11일 월요일

Java 10 keytool error

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v -storepass android
Android앱과 firebase 연동과정에서 SHA1 hash값을 얻기 위해 위와 같이 입력하였다.

그러자 나오는 java 관련 에러메시지

keytool error: java.lang.Exception: Only one command is allowed: both -exportcert and -list were specified


-exportcert와 -list 명령어가 겹친다는 것 같다.

검색해보니 명령어 순서를 바꾸거나 줄이거나 해서 해결 가능하다.

[해결책]

명령를 아래와 같이 바꾼다.
Mac OS이기 때문에 홈 디렉토리는 ~로 표기

keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore


storepass는 직접입력: android

*Winodws 환경도 debug.keystore가 있는 디렉토리(홈 경로) 표기만 차이있을 뿐 Windows에서도 같은 방법으로 해결.

2018년 9월 11일 화요일

안드로이드 스튜디오 프로젝트 소스코드 용량 줄이는 법


안드로이드 앱 프로젝트를 백업하거나 소스코드를 복사해서 전달할 일이 있을 때
통째로 복사하면 용량이 소스코드에 비해서 많이 크다.

build 폴더를 삭제하면 빌드할 때 생성한 파일을 모두 삭제하면서 용량을 줄일 수 있다.

(build폴더는 app 폴더 밑에 위치하고 있음)

2018년 2월 6일 화요일

Android에서 xml만으로 가로선 그리기

1dp 두께의 선긋기 예제

xml layout파일 상에 다음과 같은 태그를 삽입한다.

<View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#AA333333" />


두께를 변경하려면 layout_height 속성을 바꾼다.
색상을 변경하려면 background 속성을 바꾸면 된다.

2018년 1월 25일 목요일

Android에서 간단하게 웹페이지(웹브라우저) 띄우기 - Intent 이용

Intent를 이용한 간편한 방법. WebView를 이용한 방법은 아니다.
실행하면 단말기의 기본 브라우저로 웹페이지를 띄운다.

Intent intentWeb = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com"));
startActivity(intentWeb);


2017년 10월 10일 화요일

Android Studio에서 Sherlock 라이브러리 사용 시 No such field error

참고 사이트
1. 문제 해결 https://stackoverflow.com/a/3960442

2. 라이브러리 모듈 추가하기 https://bonoogi.postype.com/post/1295

이클립스시절 오래된 프로젝트를 가져와서 Firebase 기반으로 바꿔서 컴파일만 하는데도 다음과 같은 오류가 나면서 되지 않았다. 오류는 Actionbar Sherlock UI 라이브러리에서 발생하였음.

java.lang.NoSuchFieldError: No instance field mFragments of type

해결법을 요약하자면 aar형태의 라이브러리 대신 java 소스코드를 프로젝트에 추가하고
Watson.java에서 mFragments 변수 대신 새로 멤버 변수를 선언(FragmentManagerImpl)해서 바꿔준다.
AmimatorProxy.java 에서는 FloatMath를 Math로 바꿔야 한다. (import는 java.lang.Math이다.)

자세한 내용은 1번 링크의 답변을 참조할 것.

다운받은 라이브러리는 압축을 풀고 2번 링크를 참조하여 추가한다. (Import Module)
성공하면 아래 그림과 같은 프로젝트 창을 볼 수 있다


gradle에서 설정 바꾸기
기존 설정은 dependencies { ... }  에서
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
로 되어있을 것이다

프로젝트 내에서 모듈로 추가했으니 이렇게 바꿔준다.
compile project(':actionbarsherlock')


Clean Project하고 다시 빌드하여 해결완료.

2017년 3월 7일 화요일

Android Studio - release mode에서만 발생하는 오류

기존의 이클립스 프로젝트 코드를 안드로이드 스튜디오로 옮겨왔다.

디버그 모드로 동작도 잘 되었으나
업로드를 위해 Generate signed APK를 하면 오류 발생

Error: This class should provide a default constructor (a public constructor with no arguments) [Instantiatable]


코드상에는 문제가 없고 Eclipse - AS 마이그레이션 과정에서 꼬인 것으로 보고
Lint설정으로 해결

app 수준의 build.gladle에서 아래 옵션 추가 (android { ... } 블럭 내부에 포함됨)



lintOptions {
    abortOnError false
}

[주의] 정말로 코드에 문제가 없을 때만 쓸 것

2017년 2월 6일 월요일

Android Google Play App에서 개인정보처리방침 제공하기



안드로이드 앱에서 사용자의 개인정보 또는 기기정보나 민감한 권한을 요구할경우 사용자에게 개인정보처리방침(개인정보취급방침)을 별도로 제공해야 한다.
이제 이런 개인정보처리방침에 대해 제공안하면 위반으로 보고 플레이스토어에서 앱이 삭제되거나 스토어에서 노출이 제한되는 조치를 받을 수 있다. (Google Play팀에서 메일을 보내 옴)

참고 링크 1:
https://play.google.com/about/privacy-security/personal-sensitive/


[조치 방법]

(1) 개인정보처리방침 약관 문서를 직접 html로 만들어서 웹서버에 올린다.
     *약관 생성 도구: https://www.privacy.go.kr/
   - 호스팅 받는 서버가 없다면 블로그를 통해 올린다.
   - 꼭 개인정보 사용 때문이 아니라 stand-alone으로 동작하는 앱이라도 주요 권한(구글에서 말하는 민감한/위험한 권한) 때문에 제공해야 할 수가 있다. 이 때는 사용하는 권한별로 그 사유를 명시해 주면 된다.
     e.g. android.permission.CAMERA : 앱에서 사진촬영 기능을 사용하기 위해 카메라 접근 권한이 필요합니다.

(2) Play App 등록정보 페이지의 "개인정보처리방침" 링크를 기재하는 입력란에 (1)에서 만든 URL을 넣는다.

(3) 앱 내에서도 링크를 통해 개인정보처리방침의 웹페이지가 열리도록 버튼 또는 하이퍼링크를 추가한다.
  - 정답이 없다. 알아서 만들어 추가해야 한다.
  - 버튼 클릭 시 Intent로 웹브라우저가 뜨면서 (1)에서 만든 페이지로 연결하면 된다.
  - 앱에 환경설정 View가 있으면 이곳에 버튼이나 링크로 추가해 주는것이 무난하다.

참고 링크 2:
https://support.google.com/googleplay/android-developer/answer/113469#privacy


참고 링크 3: KISA에서 만든 개인정보보호 기본개념잡기 좋은 사이트
https://www.i-privacy.kr/
 

2016년 10월 31일 월요일

2016년 7월 1일 금요일

Android Studio - New Project - Minimum SDK

Android Studio에서 프로젝트 생성 시

Minimum SDK Version을 4.0.x 대로 하고 싶은데 4.0과 4.0.3 중 어떤 걸로 선택할지 모르겠을 때는 4.0.3 (API 15)으로 하면 된다.