구글 플레이 스토어 오류? 업데이트 버튼이 안 뜰 경우.
체감상 해결됐던 플레이 스토어에서 앱 업데이트 버튼이 안 뜨는 오류 고치는 방법에 대해 설명드리겠습니다.
(생략하실 분들은 맨 밑을 봐주세요!)
* 주의 : 이 모든 것은 개인적인 추측과 체감상 해결방법에 대한 내용이므로, 100% 확신이 있는 것은 아니며, 다만 비슷한 오류가 있는 분들에게 도움이 되고자 합니다.
* 누구 때문에 생길 수 있을까?
개발사(퍼블리셔), 구글(스토어) 등
* 어떤 경우에 이러한 문제가 생길 것인가?(오직 작성자의 개인적인 추측으로만 이루어져 있습니다.)
스토어에서 업데이트 버튼이 안 뜰 경우 왜 그럴까 생각해보았습니다.
많은 분들이 플레이 스토어에 등록하는 개발사에 모든 책임을 씌우지만, 아닐 경우도 존재한다는 것이죠.
앱에서 업데이트하고, 서버에 업데이트 버전 올려놨는데, 플레이 스토어에서 업로드가 안 됐을 때(검수 시간 등으로 인한 지연) 버전이 일치하지 않을 수 있겠죠.
-> 이런 경우 업데이트 이후 접속하면 됩니다. (지금까지 한두번 빼고는 본 적이 없는 문제죠)
혹은 기존에 스토어를 켜놓아서 제대로 인식을 못 했을 수 있죠.
-> 이런 경우 스토어를 완전히 종료한 후 실행하면 됩니다.
최근 자주 생기는 문제는, 해당 기기의 스토어에서 앱이 업데이트 됐는지 인식을 못 하더라구요~
-> 구글 플레이 서비스 or Google Play 서비스에서 모든 데이터 삭제 후 구글 플레이를 실행해보세요!
이렇게 하면, 서버 정보를 다시 읽어오는 것인지, 바로 업데이트 버튼이 보이더라구요!
이밖에 해보진 않았지만, 구글 플레이 서비스가 아닌 구글 플레이 스토어의 데이터를 삭제 후 하면 된다고도 합니다.
* 요약 : 글 작성자의 추천 방법 순서
1. 한번 완전히 종료 후 실행. 백그라운드에서도 완전히 꺼준다.
(대부분 여기서 해결 됨)
2. 해당 앱과 구글 플레이 스토어를 종료한 후 "Google Play 서비스"(기기별로 한글 혹은 영어일 수 있습니다.) 앱의 모든 데이터 삭제를 누른 후 다시 실행.
(여기까지 온 경우 해결 안 된 경우는 못 봤습니다.)
이 글이 많은 분들께 도움이 됐으면 좋겠네요.
'프로그래밍 > 공통' 카테고리의 다른 글
[C++/C#] 생성자 호출 및 형변환 제어(explicit) 그리고 [RequireComponent(typeof(A))] (0) | 2016.01.27 |
---|---|
[공통] virtual과 abstract의 차이 (0) | 2015.12.21 |
오버라이딩 / 오버로딩 (0) | 2015.02.02 |
[java/linux] 라즈베리파이 마크 서버 열기.
1. sudo apt update
2. sudo apt full-upgrade
최신 버전으로 라즈베리파이 업데이트.
3. sudo reboot
업뎃 후 재부팅
4. mkdir -v ~/폴더명
마크 서버 세팅 폴더 생성
5. cd 폴더명
6. 자바 설치(마크 1.17 버전 이상 설치 시 자바 1.16 버전 이상 필요함)
7. 자바 패스 등록
자바 세팅
8. wget 으로 마크 서버 다운
9. nogui로 한번 실행
10. sudo nano eula.txt 실행 후 false -> true 수정
(소프트웨어 사용 동의)
11. nogui 없이 실행.
12. 마크 포트 25565 (or 설정 바꿨다면, 바꾼 포트) 포트 포워딩
자세한 글들은 구글링 후 동영상 참고 바랍니다.
다만 이번 설치 시 몇 가지 개인적으로 수정했던 부분을 말씀드리는데, 안 되면 그 부분들 참고하시길 바랍니다.
주의사항 1.
마크 1.17 버전 이상의 서버는 자바 1.16 버전 이상 설치해야 실행 가능합니다.
따라서, 다른 글을 참고하여 진행 시 자바 설치 부분은 많은 글들에 있는 8 버전이나 11 버전이 아닌 16 버전 이상을 설치하시길 바랍니다.
주의사항 2.
wget으로 github에서 자바 설치 시 404 not found 에러가 뜨더군요.
깃허브에서 직접 설치하시길 추천드립니다(저는 그렇게 해서 해결했습니다)
주의사항 3.
/world/session.lock: already locked (possibly by other Minecraft instance?)
session.lock 관련 에러가 뜰 경우. world 폴더에 보면 session.lock 파일이 있는데, 그것만 지우고 다시 실행시켜봅니다.
이미 session.lock이 있다고 에러뜨길래 지우고 다시 서버를 실행했더니 잘 되네요.
'프로그래밍 > Java' 카테고리의 다른 글
[Java] gen 폴더 R.java 파일이 없을 경우 (main cannot be resolved or is not a field) (0) | 2015.07.20 |
---|---|
[Java] Android Studio / Android SDK 다운로드 (0) | 2015.05.21 |
[Java] JDK 설치 (0) | 2015.05.21 |
[Java] 자바 환경변수 설정 (0) | 2015.05.21 |
아파치 톰캣 에러 (0) | 2015.02.25 |
[Unity3D/C#] CSVReader (엑셀 파일 리더기)
비주얼 같은 경우 NuGet 솔루션 패키지 관리에서 다운 받아서 사용했습니다.
(유니티에서 보자면... 에셋 스토어 - 무료 패키지 같은 느낌... 이랄까요!)
https://hungry2s.tistory.com/204?category=526895
그런데 유니티에서는 어떻게 써야 할지 찾아보았습니다.
유니티는 직접 코딩하거나 라이브러리를 다운 받아서(혹은 만들거나) 사용하고자 했는데, 더 쉬운 자료가 있네요.
굳이 힘들게 할 필요 없으니 이용해볼까 합니다.
이 엑셀 리드의 메커니즘은.
1. 엑셀 파일을 실행 후 다른 이름으로 저장 - csv(쉼표로 분리)로 저장 시 csv 파일로 저장이 됩니다.
2. csv 파일은 엑셀 파일의 각 열을 쉼표로 분리하여 저장합니다.
3. 저장된 데이터를 split(쉼표)로 잘라서 사용. - 끝 -
엑셀의 1행에는 header(머리말)이 들어가도록 돼 있어서, 보기도 쉽네요.
(리더기는 2행 1열부터 읽음)
엑셀 리드 코딩은 간단합니다.
구글링 합시다.
출처 : https://github.com/tikonen/blog/tree/master/csvreader
(2014년 9월 13일 자 글)
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class CSVReader
{
static string SPLIT_RE = @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))";
static string LINE_SPLIT_RE = @"\r\n|\n\r|\n|\r";
static char[] TRIM_CHARS = { '\"' };
public static List<Dictionary<string, object>> Read(string file)
{
var list = new List<Dictionary<string, object>>();
TextAsset data = Resources.Load (file) as TextAsset;
var lines = Regex.Split (data.text, LINE_SPLIT_RE);
if(lines.Length <= 1) return list;
var header = Regex.Split(lines[0], SPLIT_RE);
for(var i=1; i < lines.Length; i++) {
var values = Regex.Split(lines[i], SPLIT_RE);
if(values.Length == 0 ||values[0] == "") continue;
var entry = new Dictionary<string, object>();
for(var j=0; j < header.Length && j < values.Length; j++ ) {
string value = values[j];
value = value.TrimStart(TRIM_CHARS).TrimEnd(TRIM_CHARS).Replace("\\", "");
object finalvalue = value;
int n;
float f;
if(int.TryParse(value, out n)) {
finalvalue = n;
} else if (float.TryParse(value, out f)) {
finalvalue = f;
}
entry[header[j]] = finalvalue;
}
list.Add (entry);
}
return list;
}
}
그리고 필요한 곳에서
List<Dictionary<string, object>> 변수명 = CSVReader.Read("파일명(확장자x)");
선언 후 데이터를 사용하면 된다.
for(int i=0; i<data_dialog.Count; i++)
{
Debug.Log("i : " + i + " [ " + 변수명[i]["damage"].ToString() + " ] " + " [ " + data_dialog[i]["hp"].ToString() + " ] ");
}
(ex) i : 1 [ 1 ] [ 1 ]
이런 식으로 출력된다.
다만, 필요에 따라 수정이 필요할 듯하다.
* 파일 경로 *
- 기본적으로 Resources.Load를 사용하기 때문에 Resources 폴더에 있는 csv를 사용하는 장점이자 단점이 있다.
서버나 다른 경로에서 읽어오기 위해서 stream으로 변경해서 사용하는 게 더 활용도가 높을 듯.
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D-php] JSON Parsing error (array type) (0) | 2021.04.20 |
---|---|
[Unity3D/펌] 쉐이도 강좌 - 기초 (0) | 2016.07.08 |
[Unity3D]Rejected because no crossdomain.xml policy file was found (0) | 2015.12.24 |
[Unity3D/FacebookAPI] Unable to verify assembly data; you must provide an authorization key when loading this assembly. (0) | 2015.08.26 |
[Unity3D] 드로우 콜 (Draw Call)에 관하여 (0) | 2015.08.19 |
[Unity3D-php] JSON Parsing error (array type)
php -> unity로 배열 값을 보낼 때, json_encode를 이용해서 보낼 시, unity에서 받은 값으로 바로 JsonUtility로 파싱 할 수 없다.
이는 php와 unity에서 json 파싱하는 형태가 다르기 때문이다.
잘못 파싱할 경우 뜨는 에러&문제와 함께 방법을 알아보자.
JsonUtility.FromJson 할 경우
1. NullReferenceException: Object reference not set to an instance of an object
2. ArgumentException: JSON must represent an object type.
3. 에러는 없고 변수에 값이 안 들어가거나(array type인데 Debug.Log로 Length 찍어보면 0이 나옴)
위와 같은 다양한 오류를 볼 수 있다.
그러면 다시 한번 파싱을 제대로 했는지 확인해야 한다.(어딘가 잘못 짰으니, 에러가 뜨는 거겠죠)
1번과 2번 문제의 경우, 파싱 에러 - 앞에 "Items" 값을 추가해야 된다.
_value = "{\"Items\":" + _value + "}";
// retrun value
// [{"key1":"A","key2":"B"},{"key1":"C","key2":"D"}]
// need type for translate to json
// {"Items":[{"key1":"A","key2":"B"},{"key1":"C","key2":"D"}]}
_value = "{\"Items\":" + _value + "}";
php에서 json_encode로 값을 보낼 경우, 윗 줄과 같이 오는데, unity에서 JsonUtility.FromJson을 사용하기 위해선 밑의 형태로 바꿔줘야 한다.(array type)
꼭 "Items" 값이 들어가야 하며, 그래도 위와 같은 에러가 뜰 경우 Debug로 괄호나 역슬러시, 큰따옴표 등 값이 제대로 들어갔는지 확인!
3번 문제의 경우, Serializable 선언을 확인해주자.
FromJson의 type의 class를 Serializable 선언해주자.
using System; // Serializable
[Serializable]
public class KeyClass
{
public string key1;
public string key2;
}
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D/C#] CSVReader (엑셀 파일 리더기) (0) | 2021.07.24 |
---|---|
[Unity3D/펌] 쉐이도 강좌 - 기초 (0) | 2016.07.08 |
[Unity3D]Rejected because no crossdomain.xml policy file was found (0) | 2015.12.24 |
[Unity3D/FacebookAPI] Unable to verify assembly data; you must provide an authorization key when loading this assembly. (0) | 2015.08.26 |
[Unity3D] 드로우 콜 (Draw Call)에 관하여 (0) | 2015.08.19 |
[phpmyadmin] count(): Parameter must be an array or an object that implements Countable
phpmyadmin 에러가 많이 보입니다 ㅜ_ㅜ
라즈베리파이4에서 phpmyadmin을 설치했는데, 설치가 꼬인건지, 설정파일 에러가 많이 보입니다.(설치를 잘못 했나봅니다)
이번 에러 역시 기본 설정파일에 오타(?)가 있어서 생기는 문제.
오류 해결 후 참고한 블로그 링크를 첨부합니다.
onlyfor-me-blog.tistory.com/275
해결방법
1. 설정 파일을 연다.
2. 괄호가 잘못 얽혀있는 부분 수정 후 저장.
3. 파일 저장 후 아파치 재시작.
'프로그래밍 > 모르는것들!!' 카테고리의 다른 글
[phpmyadmin] Create a database named 'phpmyadmin' and setup the phpMyAdmin configuration storage there. (0) | 2021.04.01 |
---|---|
[vnc] timed out waiting for a response from the computer (0) | 2021.03.31 |
[c#] element not interactable: element has zero size (0) | 2020.11.13 |
[c#] stale element reference: element is not attached to the page document (0) | 2020.11.13 |
[C#/Excel] 80040154 에러 (0) | 2020.11.09 |
[phpmyadmin] Create a database named 'phpmyadmin' and setup the phpMyAdmin configuration storage there.
Create a database named 'phpmyadmin' and setup the phpMyAdmin configuration storage there.
라즈비안4에 phpmyadmin 설치 후 로그인 시 에러 발생.
Create 버튼을 눌러 phpmyadmin 설정 db를 추가해주면 된다.
* 추가 에러 발생
You do not have necessary privileges to create a database named 'phpmyadmin'. You may go to 'Operations' tab of any database to set up the phpMyAdmin configuration storage there.
Create 하이퍼링크 버튼을 클릭했는데, 만약 위와 같은 에러가 뜰 경우, 현재 권한이 없는 상황이기 때문에, 리눅스 관리자 계정으로 로그인 하던지, 현재 계정의 권한을 관리자와 같이 올려주어야 한다.
'프로그래밍 > 모르는것들!!' 카테고리의 다른 글
[phpmyadmin] count(): Parameter must be an array or an object that implements Countable (0) | 2021.04.07 |
---|---|
[vnc] timed out waiting for a response from the computer (0) | 2021.03.31 |
[c#] element not interactable: element has zero size (0) | 2020.11.13 |
[c#] stale element reference: element is not attached to the page document (0) | 2020.11.13 |
[C#/Excel] 80040154 에러 (0) | 2020.11.09 |
[라즈비안4] phpmyadmin 설치 간략 설명
1. sudo apt install phpmyadmin
- phpmyadmin 설치 명령어.
2. sudo ln -s /usr/share/phpmyadmin /var/www/html
- phpmyadmin과 apache의 경로가 다르기 때문에, phpmyadmin 설치 후 연결해주어야 한다.(ln)
* 주의 *
phpmyadmin 설치 후 실행했는데
The mbstring extension is missing. Please check your PHP configuration.
접속 시 위와 같은 에러가 뜰 경우
sudo apt-get install phpmyadmin php-mbstring php-gettext
sudo service apache2 restart
명령어를 통해 설치 및 아파치 재시작을 해주면 해결된다.
'프로그래밍 > php' 카테고리의 다른 글
[MySQL] select 안에 select. (0) | 2019.12.08 |
---|---|
[APMSetup] 외부접근 허용시키기! (0) | 2015.06.18 |
[APM] 설치 (0) | 2015.06.18 |
parent.document.getElementById / 적용 안되는 경우 (0) | 2015.01.10 |
Warning: implode() [function.implode]: Invalid arguments passed in xxx on line xx (0) | 2014.07.25 |
[vnc] timed out waiting for a response from the computer
vnc로 라즈베리파이에 접근하려고 한다.
그런데 오랜 대기시간이 걸리며, 위와 같은 에러가 뜬다.
대부분 time out이 뜰 경우, 외부접근을 못한다는 뜻이다.
하지만 나와 같은 경우는 외부접근은 되는데, vnc가 안되는 상황.
이 상황 일 경우, 컴이 꺼져있거나, 라즈베리파이에서 접근 허용이 안 날 경우
방화벽이 막은 상황이었다.
방화벽을 해제하거나 vnc 포트(내부포트 5900)을 방화벽에서 예외처리를 해주어야 한다.
sudo ufw allow 내부포트
ex) sudo ufw allow 5900
'프로그래밍 > 모르는것들!!' 카테고리의 다른 글
[c# / 셀레니움] 웹크롤링
초간단 설명
1. NuGet패키지에서 셀레니움 추가.
2. 사용할 웹 브라우저 드라이버를 NuGet에서 추가.
- (필자는 크롬 사용함. 검색 결과가 많음 -> 구글링에 많은 데이터가 돌아다님.)
3. 크롤링 할 페이지에 가서 F12 - DevTools에서 cs를 확인 후 자기가 접근할 데이터의 태그를 확인.
4. 접근할 데이터의 태그를 가지고 데이터 접근 및 키 입력(버튼 클릭, 아이디 혹은 검색어 입력 등)
** Visual Studio 2019 버전 기준 설명입니다. **
1. 프로젝트를 실행한 후 NuGet 솔루션을 켭니다.
(도구 탭 - NuGet 패키지 관리자 - 솔루션용 NuGet 패키지 관리)
2. NuGet 솔루션 창에서 Excel을 검색하여 현재 패키지에 추가해줍니다.
* 셀레니움 - 웹 드라이버와, 브라우저 드라이버를 설치해준다.
3. 셀레니움을 사용하기 위하여 using 선언.
using OpenQA.Selenium;
using Open.Selenium.Chrome;
var driverService = ChromeDriverService.CreateDefaultService(); // 크롬 드라이버 서비스를 기본값으로 설정.
var options = new ChromeOptions(); // 크롬 옵션 설정
using (IWebDriver driver = new ChromeDriver(driverService, options)) // 생성자가 많음. 정의부분 가서 확인 후 필요한 방식대로 사용하면 됨.
{
driver.Url = "http://www.naver.com"; // 브라우저 실행. 접근 할 웹페이지의 url 입력.
var searchTextBox = driver.FindElement(By.XPath("접근 할 버튼 혹은 검색창의 XPath"));
}
* xpath 확인법.
해당 웹페이지로 접속 후 F12를 누른다.
우측에 생기는 DevTool에서 위쪽 Elements 탭 왼쪽으로 두칸에 있는 네모+화살표 모양을 클릭한다.(단축키 컨트롤+쉬프트+C)
버튼을 클릭한 후 Elements창에서 열리는 해당 속성 태그를 우클릭 후 Copy - Copy XPath를 클릭한다.
필요에 따라 XPath 외 다른 방식을 이용해도 된다.
By.XPath 외에도 By.ClassName이나 By.TagName 메소드도 있음.
.Click() 이나 .SendKeys나 .Clear() 는 셀레니움 홈페이지(?) 참조.
'프로그래밍 > C#' 카테고리의 다른 글
[c#/Excel] 엑셀 리더 (0) | 2020.12.06 |
---|---|
[Unity3D/C#] Server returned an error: 500 STOR (0) | 2020.01.08 |
[C#] 배열과 List의 차이 (0) | 2016.02.03 |
[C/C#] C언어와 C#언어의 차이 / 기타 ++ (0) | 2015.12.21 |
[C#] 부모클래스의 생성자 호출 (0) | 2015.12.19 |
[c#/Excel] 엑셀 리더
초간단 설명.
1. NuGet 패키지로 Excel 패키지 추가.
2. using Excel = ""; // 엑셀 파일 접근
3. path클래스로 바탕화면 혹은 실행파일 기준 경로 설정 (파일 생성은 파일 스트림 검색)
4. 해당 파일 접근 후 시트 설정
5. 데이터 read or write
** Visual Studio 2019 버전 기준 설명입니다. **
1. 프로젝트를 실행한 후 NuGet 솔루션을 켭니다.
(도구 탭 - NuGet 패키지 관리자 - 솔루션용 NuGet 패키지 관리)
2. NuGet 솔루션 창에서 Excel을 검색하여 현재 패키지에 추가해줍니다.
3. Excel을 사용하기 위하여 상단에 using 선언.
using Excel = Microsoft.Office.Interop.Excel;
4. Excel 파일 접근 및 사용.
string path = Path.Combine("엑셀 파일 경로", "엑셀 파일명(확장자 포함)");
Excel.Application excelApp = new Excel.Application(); // 컴퓨터에 엑셀이 없을 경우 에러.
Excel.Workbook workBook = excelApp.Workbooks.Open(path);
Excel.Worksheet workSheet = workBook.Worksheets.get_Item(1) as Excel.Worksheet; // 엑셀 1번째 워크시트 가져오기
Excel.Range range = workSheet.UsedRange; // 사용 중인 셀 영역을 가져오기
string value = (string)(range.Cells[1, 1] as Excel.Range).Value2; // 오픈한 엑셀 파일의 워크시트에서 1행 1열 값을 가져온다.
* 반대로 저장도 가능하며, 메모리 해제를 해주지 않으면, 계속 엑셀이 실행 중임.
* 시트는 숫자로 하면 n번째 시트를 인식하며, 문자열을 통해 시트 이름을 찾을 수 있다.
* 경로는 Path클래스가 아닌 직접 string으로 입력해줘도 된다.
'프로그래밍 > C#' 카테고리의 다른 글
[c# / 셀레니움] 웹크롤링 (0) | 2020.12.06 |
---|---|
[Unity3D/C#] Server returned an error: 500 STOR (0) | 2020.01.08 |
[C#] 배열과 List의 차이 (0) | 2016.02.03 |
[C/C#] C언어와 C#언어의 차이 / 기타 ++ (0) | 2015.12.21 |
[C#] 부모클래스의 생성자 호출 (0) | 2015.12.19 |