링크: https://teamnova0410-dev.tistory.com/2

 

[안드로이드 스튜디오] error: Cannot resolve symbol R - 해결법

# 사용중인 안드로이드 스튜디오 버전 : 3.1.2 Cannot resolve symbol R 문제는, 특히 안드로이드를 개발한지 얼마 안된 사람들이 많이 겪는 문제중 하나다. 일단 이건, "R.java" 파일에 무슨 문제가 생겼단

teamnova0410-dev.tistory.com

 

이거 보고 해결했구요 

잘도는 프로젝트를 복사해서 다른 폴더에 넣고 돌릴때 발생하더군요

 

 

 

File -> invalidate caches 메뉴로 가면 캐시 지울 수 있습니다.

이런메뉴가 있는지 초짜가 어떻게 알겠냐고 구굴에게 묻고 싶군요 ㅠㅠ

 

android java R. error


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




안드로이드 + 자바로 했습니다.

튜터리얼은 이거구요: https://developer.android.com/guide/webapps/webview?hl=ko

 

WebView에서 웹 앱 빌드  |  Android 개발자  |  Android Developers

WebView에서 웹 앱 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경

developer.android.com

 

제가만들 앱은 웹페이지 하나만 달랑 있는것입니다.

이걸로 안드로이드기능도 쓰고 웹페이지로 컨텐츠 개발도하려구요

 

그럴려면 둘이 통신을 해야하는데 이방법의 튜터리얼을 찾았습니다.

 

주의점 몇개만 남겨둡니다.

 

첫번째

웹에서 호출할 함수는 이렇게 쓰는데요

 @JavascriptInterface
        public void showToast(String toast) {
            Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
        }

@JavascriptInterfac <-- 이거 들어가야합니다.

 

두번째

addJavascriptInterface 함수는 loadUrl 전에 호출합니다.

왠지 페이지 로드하고 add 해야할꺼 같은데 그렇치 않습니다.

 

세번째

android-17 이상해서 하라는데 이게 문제될 사람은 잘 없을꺼 같군요

 

 

추가로 App 에서 web 함수를 호출하려면 

            webview.evaluateJavascript("abc(`def`);"
                    , new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String s) {
                            Log.d("myapp", "onReceiveValue: " + s);
                        }
                    });

이런식으로 스트링 하나 리턴 받는 코드구요

자바스크립트 쪽은

<script type="text/javascript">
      function abc(v) {
        return "abc" + v;
      }
</script>

이런식으로 찼습니다. 리턴값을 멋지게 오브젝트로 받을까 했는데...

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상: https://www.youtube.com/watch?v=rk41rBXq3zQ

 

Future async await 

Stream yield

를 알려주는 영상입니다.

제가본거 중엔 제일 잘 설명한거 같군요

 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




ts 파일 빌드에서 js 파일을 만들다보니 검색을하면 두군데서 표시되는군요

js 파일을 검색 결과는 필요 없으니 제외해야하는데 이제 방법을 알았습니다.

 

검색어를 file ignore 이런식으로 했더니 exclude 라고 알려주더군요

exclude 는 들어올수 없게 하다 라는 뜻인거 같습니다.

 

 

ctrl + shift + f 로 검색하면 이런 창이 나옵니다.

여기에 [...] 버튼 누르면 제일 아레에 제외할 파일 이라고 있습니다.

*.js 를 쓰면 js 파일이 제외합니다.

*.js,*.php 이렇게 두개 이상을 제외할 수도 있습니다.

 

 

더 전문가적인 방법으로는 vscode 의 파일리스트에서 안보이게 제외하는 방법입니다.

vs 코드에서 안보이기 때문에 당연히 검색에서도 안나올꺼 같군요

내가 어떤걸 설정했는지 기억 못한다면 본인탓 입니다.

파일 -> 기본설정 에 가시면 이런 창을 열 수 있습니다.

여기에 쓰시면 폴더도 제외할 수 있고 파일도 제외할 수 있고 기타 등등입니다.

/dist 폴더 제외하니 좋군요

 

 

참고: https://bobbyhadz.com/blog/exclude-folders-from-search-in-vscode


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




vue 에서 쓸때는 자동이라 상관이 없었는데

티스토리 블로그를 꾸밀때는 미리 컴파일된 css 가 필요하군요

이 영상을 보고 따라해볼 생각입니다.

영상: https://www.youtube.com/watch?v=JZPjhB-btBQ 

 

잘되야 할텐데


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상: https://www.youtube.com/watch?v=IeXZo-JXJjc 

 

c# 만큼이나 명확해서 좋다고 하던데 쓰는동안 제대로 못쓰고 있었군요

이 강좌를 보고 여러가지를 제한해 봤더니 꽤 안심이 되었습니다.

 

js 는 정말 아무거나 넣을 수 있어서 빠르게 코깅이 가능하긴한데

프로젝트가 커지다보면 이상한 값이 들어가면 왜 들어갔는지 찾기가 너무 힘들었는데 이부분은 좋았습니다.

 

keyof

let 변수 = keyof  인터페이스명 

인터페이스의 키값이 아닌건 사용할 수 없게됩니다.

키명으로 접근할때 엉뚱한 키로 접근하는걸 막을 수 있겠군요

 

Partial<>

let 변수 : Partial<인터베이스명> = { ~~ }

인터베이스의 모든값을 체울 필요가 없어집니다.

빠르게 변수 만들고 싶은데 필수요소가 없다고 에러나는걸 피할 수 있습니다.

(이러면 제한하는게 아니구나)

 

Required<>

이번엔 Partial 과 반대로 모든 변수명을 채워야 변수를 생성할 수 있습니다.

변수 추가되면 난리나도록 제한 하는 용도입니다.

(이걸 원했습니다.)

 

Readonly<>

변수 만들고난뒤 맴버변수를 고칠 수 없게됩니다.

let a : Readonly<User> = { name:"a"};

a.name = "b"; <-- 불가

 

Record<키, 변수>

키와 변수명을 자유롭게 쓸 수 없게 제한합니다.

정해진것 만 쓸 수있게 제한 합니다.

 

Pick<인터베이스명, 키값>

인터페이스 중에 원하는 키만  입력받아 객체를 만듭니다.

Partial 보다는 조건이 조금 더 있군요

 

Omit<인터페이스명, 키값>

Pick 랑은 반대입니다. 키값에 있는건 안쓰도록 제한합니다.

 

Nonnullable<타입>

undefined, null, void 가 들어갈 수 없게 만들어줍니다.

이런거 제한하면 함수리턴값 많이 고쳐야하던데 ...

 

시간은 다 돈이죠 적당히 제한해봅니다.

 

 

 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




# 코드
import threading, time

def proc(res):
    print("start", res)
    time.sleep(3)
    print("end")

t = threading.Thread(target=proc, args=("abc"))
t.start()

# 결과
PS C:\project\unity\MyQuant\python> python3 .\pg.py
Exception in thread Thread-1 (proc):
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
TypeError: proc() takes 1 positional argument but 3 were given

간단한 코드인에 요런 에러가 발생합니다.

이 문제는 왜 발생하냐면요

t = threading.Thread(target=proc, args=("abc"))
 
부분이 문제입니다.

한개만 넣으면 정상적으로 처지가 되지 않나봅니다.

t = threading.Thread(target=proc, args=("abc", )) 

이런식으로 , 콤마가 필요합니다. 배열로 들어가야하나봅니다.

즐 코딩

 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




준비중


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,