지식메모



무료 편집 툴을 찾아보다가 다빈치 리졸브가 좋다길래 한번 써보았다.


문제는 높은 사양을 요구하는 프로그램이라 노트북에서 돌리기엔 버거웠고


또 중간에 응답없음으로 한번 꺼지면



위와 같은 메시지가 뜨면서 실행이 안된다....


대충 찾아보니 사양이 딸린것도 문제고 그래픽카드 문제도 있는거 같다.

지포스 gtx 950m 으로 연명중이긴 하다..


그래서 그냥 재부팅 했더니 또 잘된다


그냥 간단한 편집이나 해볼까하고 설치해봤는데 난관이 많다..



먼저 해볼려고 한 것은 편집영상중에 공중파영상인 경우 로고를 모자이크? 블러 처리를 하는 방법을 찾는 것이었다.



우선 다빈치 리졸브 설치하고 편집할 영상을 불러온다.

File > import Media 클릭



뭐 이런게 뜨는데 걍 돈 체인지 했다.

혹시 인코딩할 때 원본 동영상 프레임 인코딩을 원한다면 change로 해주면 된다





SBS 뉴스영상으로  SBS 쪽 로고만 블러처리 해보겠다.






영상을 끌어다 아래 타임라인에 드래그하여 갖다놓는다.






그런다음 아래 메뉴를 보면 color 메뉴가 있다 클릭









그럼 아래와 같이 






그럼 영상에 이런게 뜬다






사이즈를 조절하여 로고 쪽에 갖다놓자






그리고 아래에 보면 물방울 모양의 버튼을 클릭한다.







그런다음 Radius 를 위로 쭉 올린다. 영역 밖에서도 계속 올리면 수치가 증가한다.





그럼 영상에서 선택한 영역만 블러처리가 된다!!!





그럼 이제 인코딩만 해주면 끝난다.


처음 해보는거라 인코딩을 도대체 어디서 해야하는건지 몰랐다.


 Deliver 메뉴를 클릭





왼쪽 상단에 인코딩 옵션들이 있다.


유튜브도 있고 뭐 그런데 그런건 잘 모르겠고 


가장 대세 포맷인 mp4 확장자로 변경해준다.

코덱은 H.264로 저절로 되는데 안되면 저걸로 바꿔준다.




그런 다음 Add to Redner Queue를 클릭


그럼 저장경로가 나오고 경로 선택해주면


오른쪽에 큐가 쌓이고 Start Render 클릭하면 인코딩이 시작된다.


렌더링이라고 부르나 무튼 영상이 좀 빠르게 재생되면서 진행된다.



인코딩이 끝나면 생성된 동영상을 재생해본다. 

로고만 블러처리가 되었따!!


이 과정을 담은 동영상을 첨부















멋모르고 안드로이드 스튜디오를 업데이트 했더니 역시나 포풍에러가 발생...


진심 업데이트는 할게 못된다. 하지만 언젠가 해야할테니 매도 먼저 맞아보자는 생각이었지만 매는 마지막에 맞는게 낫다.


아래와 같은 에러를 내뿜는데   AAPT2 이놈이 뭔가 문제를 일으킨거 같았다.


해결링크 https://stackoverflow.com/questions/46988102/errorcom-android-tools-aapt2-aapt2exception-aapt2-error-check-logs-for-detail





Error:failed processing manifest.

Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

Error:Execution failed for task ':app:processDebugResources'.

> Failed to execute aapt



해결책은


프로젝트 내에 gradle.properties  파일을 연다.




거기에 이 코드를 추가해준다.

android.enableAapt2=false


그리고 Sync Now를 눌러준다.

그럼 다시 프로젝트가 돌아가면서 에러가 발생하지 않았다



업데이트는 정말 조심해야될 행동이다.



  1. ww 2018.01.29 17:04 신고

    ㅠㅠ 감사합니다.

  2. \ 2018.02.02 00:23 신고

    감사합니당 ㅜㅜㅜㅜ

  3. 1 2018.02.04 19:55 신고

    굿굿~ ~~

  4. 김준석 2018.02.08 11:30 신고

    이것으로 해결을 할수 있어도 다른 문제는 없나요?
    false로 둠으로서 AAPT2 를 이용 안하려는거 같은데, 이러면 AAPT1 이 후에 삭제가 될수도 있다는게 stackoverflow에 있는데, 문제가 전혀 없는지 궁금합니다.

    • yonoo88 2018.02.08 11:32 신고

      그부분까지는 제가 확인을 할 수가 없네요ㅜ. 일단 급한대로 해결한거라 추후에 문제생기면 그 때 다시 찾아보려구 합니다

  5. 한으 2018.02.16 13:08 신고

    첫 발걸음 떼다가 이게 자꾸 에러가 떠서 못 나가고 있었는데 덕분에 해결했습니다 감사합니다ㅠㅜ

    • yonoo88 2018.02.16 13:15 신고

      설 연휴에도 열일하시네요
      도움이 되었다니 다행입니다!

    • 한으 2018.02.16 14:21 신고

      근데 자바도 모르고 이해할만한 적당한 교재나 강좌도 찾지 못해서 힘이 드네요. 어떻게 시작하면 좋을까요?

    • yonoo88 2018.02.16 14:33 신고

      교재는 그냥 시중이 가장 인기있는 교재 하나 사서 하시면 될거에요. 요즘은 교재사면 인터넷강좌도 무료로 푸는게 많을거에요. 제일 좋은건 직접 만들어보면서 부딪히는게 좋은거 같아요

    • 한으 2018.02.17 21:01 신고

      조언 감사드립니다!

    • yonoo88 2018.02.17 21:03 신고

      저도 앱개발이 직업은 아닌지라 손 놓고 있네요..아직 많이 부족한데 의지가 제일 중요한거 같아요 파이팅 하세요!






Generate Signed APK 수행시 또 이상한 에러가 발생





생전 처음보는 에러가 코드가 아닌 xml 파일에서 발생하였다.

 Error:(449) Error: Found byte-order-mark in the middle of a file [ByteOrderMark]




에러부분으로 이동해보니



<item>Leadership</item>


?? 이게 전부다. 이상한 점이 전혀 없다.




또 원인을 찾아 정보의 바다 구글을 헤맸다.


찾아보니 ByteOrderMark = BOM 이란 자식이 포함되어있기 때문이란다.


그래서 이 BOM 이란 놈을 제거 해줘야 한다는데


구글에 나온 BOM 제거 방법을 해봐도 되지 않는다.


툴 깔아서 BOM 제거를 해도 똑같다.



참나 대체 왜 내가 하면 안되는거지



대체 뭐가 문제냐고!!!


자포자기로 저 부분을 한번 지우고 손수 하나하나 똑같이 다시 타이핑을 했다.


그리고 다시 빌드..



?!!!?!



뭐지 에러가 사라졌다.


정상적으로 apk가 생성되었다.


뭐 이따구가 다있지...



깃허브 커밋을 살펴 보았다.




?????


뭐가 다른거지???



어이가 털린다.




그래서 다시 에러가 난 상태로 돌려놓은뒤


 위 프로젝트를 다른 컴퓨터에서 import 해서 살펴보기로 했다.


검색하다보니 다른 컴퓨터에서는 되었다는 글을 보았기 때문이다.




그래서 import 후 똑같이 Generate Apk Signed를 실행했더니


똑같은 곳에서 똑같은 에러가 발생


그런데 이상한 점이 발견되었다.






보이는가 저 이상한 점들..


Leadership 앞에 점 하나가 있다.


다른 에러부분에도 보니 뒤에 점 2개가 있다.



저게 문제였나보다.


저걸 지워주니 에러가 사라졌다.



저게 BOM이라는 그 악성 에러였던걸까




추측으로는.. 점을 지움으로써 BOM이 사라진 것 같다.


에러가 계속 났었던건 눈에 보이지 않으니


<item>Leadership·</item>


이걸 계속 복붙하고 있었다. 그러니 보이지 않는 BOM인가 뭔가 저 점이 계속 복붙되고 있었던 것이다


그리고 구글 검색했을 때도 메모장에 붙여넣기 한 후 저장해서 다시 붙여넣으라는 방법도 있었는데 

같은 이유로 에러가 사라지지 않았던 것 같다.



그래서 직접 지우고 타이핑할 때 BOM이 지워진 것 같다.



그런데 왜!!


내 컴퓨터에서는 표시되지 않고 다른 컴퓨터에서는 표시가 된 걸까??


정말 짜증나는 코딩의 세계다



BOM에 대한 에러를 찾아보면 글이 상당히 많고 이게 뭔지도 다 나와있으니 더 이상 언급하기도 싫다.


내 시간을 통째로 빼앗아 가버렸으니..



혹시 이런 문제를 겪고 계신 분이 있으시다면 에러난 부분을 지우고 다시 타이핑해보시길 추천한다.


그래도 안되면 검색에서 나오는 해결법을 시도해보시는게 좋을 것 같다.





  1. 2017.09.18 17:20

    비밀댓글입니다





잘만되던 깃허브였는데 다른 깃허브 계정 만들어서 하려고 하니까 이런게 뜬다.



Push failed: Failed with error: fatal: unable to access 'https://github.com/.../.....git/': The requested URL returned error: 403



찾아보니 ssh 키 등록을 해야 한다고 하는데



뭔소린지..



참고로 안드로이드 스튜디오 깃허브 설정은 밑 링크를 따라함

http://itpangpang.xyz/164


remote 주소를 ssh 주소로 변경한다.


깃허브에서 ssh 주소를 복사

저장소 우측 clone or dowload 클릭 후 Use ssh 클릭하면 ssh 용 git@로 시작하는 주소가 나온다




해당 프로젝트 우클릭해서 git Bash Here를 클릭




git remote -v 를 입력하여 현재 주소를 확인 https 로 되어있으면 변경해야한다.


변경 명령어는

git remote set-url origin [ssh주소]



변경 후 다시 git remote -v를 해서 확인한다.




그리고 ssh 키 존재를 확인해야 한다.


아래 명령어를 따라한다.




ssh키가 없다면 생성한다. 본인 이메일 입력


ssh-keygen -t rss -b 4096 -C "test@test.com"



키 확인 후 vi 편집기에서 아래와 같이 복사한다.





깃허브 로그인 후 setting 진입 

아래와 같이 수행



그럼 ssh key완료 끝


이제 푸쉬를 해본다.





자주묻는 질문 목록

https://kr.battle.net/forums/ko/starcraft/topic/4564510049


링크


 [목차]


설치 및 실행관련 문제.

1. 설치 패치중 발생하는 문제.

2. 블리자드 앱에서 게임 실행 버튼이 보이지 않고 구매하기 창이 보이는 현상.

3. 게임 실행 버튼 클릭시 무반응 현상.

4. 고해상도 (2560X1440)에서 전체화면 옵션을 선택했어도 작게 보이는 현상.

5. 블리자드 앱에 스타크래프트가 보이지 않는 현상.

이용 중 문제

6. 게임 이용 중 접속 종료 현상 / 게임 시작 버튼 클릭 후 멈추거나 접속이 되지 않는 현상.

7. 방에 입장이 되지 않는 현상.

8. 매우 높은 APM에서 입력이 간혹 되지 않는 현상.

9. 게임 이용중 그래픽 카드 온도가 지나치게 높아지는 현상.

10. 리마스터를 구매했지만 저화질 버전으로 게임이 실행되는 현상.

11. 게임 실행시 데이터 읽기 오류가 발생합니다.

12. Mac 환경에서 메뉴로 진입시 멈추거나, 특정 기능 이용중 멈춤.

13. 게임내 접속 시도시 빈 로그인 창이 보이는 현상.

14. 사용자 지정 플레이 방 생성을 위해 Download 폴더로 이동시 튕기는 현상.





방 안들어가질 떄 문제해결

https://kr.battle.net/forums/ko/starcraft/topic/4564510049#post-8



블리자드 게임의 방화벽, 프록시, 라우터의 포트 설정

https://kr.battle.net/support/ko/article/7842










뜬금 apk 빌드하는데 이런 에러가 떴다.


Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;



검색해보니 메소드 6만5천줄 초과인가 뭔가해서 멀티덱스 를 추가해줘야되고 이런 답변들이 있었는데 해봐도 되지 않았다


그러다가 라이브러리?가 중복실행되는 케이스도 있따고 하여 그래들 파일에 라이브러리 코드랑 관련이 있어보이는걸 삭제했다.


디펜던시에


dependencies {

compile fileTree(include: ['*.jar'], dir: 'libs') //요놈을 지웠다

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'gun0912.ted:tedpermission:1.0.2'
testCompile 'junit:junit:4.12'
}



그랬더니 에러가 발생하지 않았다..






우선

글자 복사를 하기 위해 클립보드 코드를 작성한다.


ClipboardManager clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

ClipData clipData = ClipData.newPlainText("클립보드라벨명", "복사할 텍스트");

clipboardManager.setPrimaryClip(clipData);



그리고 해당 뷰의 글자를 터치한번으로 복사하고 싶다면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    TextView textView= (TextView) findViewById(R.id.text_view); //텍스트뷰 
    String id= textView.getText().toString(); // 텍스트뷰 글자 가져옴
    textView.tvId.setOnTouchListener(new View.OnTouchListener(){   //터치 이벤트 리스너 등록(누를때)
 
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            if(event.getAction()==MotionEvent.ACTION_DOWN){ //눌렀을 때 동작
                
                //클립보드 사용 코드
                ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                ClipData clipData = ClipData.newPlainText("ID",id); //클립보드에 ID라는 이름표로 id 값을 복사하여 저장
                clipboardManager.setPrimaryClip(clipData);
 
                //복사가 되었다면 토스트메시지 노출
                Toast.makeText(context,"ID가 복사되었습니다.",Toast.LENGTH_SHORT).show();
 
            }
 
           
            return true;
        }
    });
 
cs


이렇게 해주면 터치하면 텍스트뷰 안에 있는 글자가 클립보드에 복사된다.


혹시 

ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

여기서 에러가 나면 context 추가해준다.

context.getSystemService로 바꿔서 하면된다.


이걸 바탕으로 롱프레스 등에 응용하면 된다.








이건 또 뭔 말인지..


단지 그냥 버튼 누르면 액티비티 시작하게 하려고 했는데


이 동작과 관련된 모든 앱이 해제 또는 차단되었거나 설치되지 않았습니다


이게 토스트메시지로 뜨면서 되질 않는다.


구글 찾아봐도 다 토렌트 얘기하고 그러는데 영문 메시지로 검색해도 뭐가 뭔지 영..


그러다 네이버로 검색해보았떠니


http://blog.naver.com/mdroid_16/220903491982


이런 해결책이 있다고 한다 . 쓰일 함수 안에 intent를 넣어주었더니 해결되었다라..


그래서 시도해보았다.

처음 코드 상태가

이런 식으로 되어있어서 저 Intent it 코드를 OnTouchListener 안에 넣어보았다.


그랬더니 이런 에러가 뜬다.



에러메시지 검색해서 찾아보니

https://stackoverflow.com/questions/20241857/android-intent-cannot-resolve-constructor

여기서 해보라는데로 해보았다.



Intent it = new Intent(this, DBActivity.class); > Intent it = new Intent(v.getContext(), DBActivity.class); 로 수정

this > v.getContext()

이렇게 바꿔주었다.


그랬더니 된다.

다행이다.









인텐트로 다른 액티비티를 시작하고자 했는데 에러가 발생

startActivity(it); //에러 발생


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// input your code herepublic class AlwaysTopServiceTouch extends Service {
    private View mView;
    private WindowManager mManager;
    private WindowManager.LayoutParams mParams;
 
    private float mTouchX, mTouchY;
    private int mViewX, mViewY;
 
    private boolean isMove = false;
    Intent it = new Intent(this, DBActivity.class);
 
 
 
    private OnTouchListener mViewTouchListener = new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
 
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    isMove = false;
 
                    mTouchX = event.getRawX();
                    mTouchY = event.getRawY();
                    mViewX = mParams.x;
                    mViewY = mParams.y;
 
                    break;
 
                case MotionEvent.ACTION_UP:
                    if (!isMove) {
//                        Toast.makeText(getApplicationContext(), "???",
//                                Toast.LENGTH_SHORT).show();
                        startActivity(it); //에러 발생
                    }
 
cs

에러 코드는

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?


플래그 어쩌구 저쩌구 FLAG_ACTIVITY_NEW_TASK  이게 요구된다는데

확인결과

서비스는 태스크가 없기 때문에 액티비티를 시작하려면 new task 플래그를 줘야 한다고 한다.


그래서 코드수정

startActivity(it) 를

startActivity(it.addFlags(FLAG_ACTIVITY_NEW_TASK));

위와 같이 수정하니 에러가 발생하지 않았다.




개발자분 블로그 글 참고

http://gun0912.tistory.com/61

깃허브 주소

https://github.com/ParkSangGwon/TedPermission


오버레이 권한 얻기위해서 검색해보다가 TedPermission 이라는 라이브러리를 알게되었다.

한국개발자분이신거 같은데 정말 편하게 만들어 놓으신듯 하다.


블로그 설명에 보면 그래들에 한줄 추가하고

OnCreate에 PermissionListener 코드 추가하고

권한체크 시작 코드 넣으니까 끝났다.


엄청 간편했다.

권한은 권한체크 코드에서

.setPermissions(Manifest.permission.READ_CONTACTS)

요 부분에서 Manifest.permission.각자 필요한 권한 코드만 변경해주면 된다.

권한 목록들 안드로이드 개발자페이지 참고

https://developer.android.com/reference/android/Manifest.permission.html


도움이 되었다면 개발자분 깃허브에 가서

https://github.com/ParkSangGwon/TedPermission

요 버튼을 눌러주자


+ Recent posts

티스토리 툴바