지식메모/안드로이드 Android

반응형



Android Studio 에서 서명된 apk를 생성하려고 했더니 이런 에러가 떴다.


Error:(24) Error: "none" is not translated in "en" [MissingTranslation]

(*어느 언어냐에 따라 "en" "vi" "th" 등등 다르게 나타남)


보니까 다국어에서 문제가 생겼는데 프로젝트는 이클립스에서는 문제가 없었던 거였다.



그래서 찾아보니 안드로이드 스튜디오에서는 string.xml 이 모두 같아야 한다고 한다.


즉 위 에러를 보면


<string name="none">none</string>


이 코드가 "vi"에서 번역되지 않았다고 뜬다. 베트남어에서 none 항목이 없다는 것이다.


현재 다국어 구조가



이렇게 한국,영어,대만,베트남 4개로 되어있는데


베트남의 string.xml 에만


<string name="none">none</string>


이 항목이 번역되지 않았다는 것이다.



이 문제를 해결하려면


values-vi 의 strings.xml 로 들어가


<string name="none">none</string>


이걸 추가해준 뒤 다시 서명된 apk를 생성하면 해결된다.



반응형
반응형



프로젝트 내에 libs 폴더를 만들고 안에 라이브러리 파일은 넣은 후 우클릭

Add as Library 클릭





나오는 창에서 app을 선택 후 ok 하면 추가된다.





반응형
반응형


고난의 연속.. Eclipse에서 Android Studio로 넘어오려고 애쓰는데 스트레스만 받고 있었다.

이클립스에 있던 프로젝트를 import 해도 계속 에러에러에러... 

결국 그냥 안드로이드 스튜디오에서 새 프로젝트만들고 거기다 붙여넣어 보는 식으로 어찌어찌 해결하다가 갑자기 왠 아웃오브메모리???


대략 이런 에러가 발생


Error:UNEXPECTED TOP-LEVEL ERROR:


Error:java.lang.OutOfMemoryError: GC overhead limit exceeded


:app:transformClassesWithDexForDebug FAILED


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.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_05\bin\java.exe'' finished with non-zero exit value 3


버틸 수가 없었다. 내 한계에 부딪히는듯 했다.

찾아보니 build.gradle 파일에서 defaultConfig 에 multiDexEnabled true를 추가해주래서 했는데 해결이 되지 않았고

질문 게시판에 올려보았는다 친철한 분께서 다음과 같은 제안을 해주셨다.

build.gradle 파일에 android 내부에 다음 코드를 넣어보세요


dexOptions {

  jumboMode true

  javaMaxHeapSize "4g"



바로 적용해보았더니 오오오오 아웃오브메모리 에러가 사라졌다.

감동적인 순간이었다. 앱이 실행이 되다니..

아래와 같이 적용했다.


 



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
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
 
    defaultConfig {
        applicationId "패키지네임"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
//dexOptions 추가
    dexOptions {
        jumboMode true
        javaMaxHeapSize "4g"
    }
}
cs




물론 이게 100% 해결책이 아닐 수 있다. 언제나 그랬듯이 남의 해결책이 나의 해결책이 되진 않기 때문에..


여기까지 오기에 많은 에러가 있었는데 그 에러들이 어떻게 해결되었는지는 모르고 어찌어찌 넘어왔다.

 

그 에러들 해결방법도 다시 찾아봐야겠다.





반응형

Android Studio auto import

2016. 6. 1. 18:18
반응형

http://answerofgod.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4-Auto-import

반응형
반응형




사전환경셋팅이 되어있어야 한다.

java 와 Android sdk가 설치되어 있어야 하고 환경변수도 설정되어 있어야한다.



http://recorder.robotium.com/downloads/re-sign.jar



re-sign.jar



위 링크에서 re-sign.jar 파일을 받아서 실행한다.


그럼 아래와 같은 창이 뜨고 여기다 재서명할 apk를 끌어다 놓으면 된다.






이런 창이 뜬다면 zipalign 파일이 없다는 것이므로 해당파일을 ~~sdk/tools 폴더에 붙여넣어준다.




zipalign 파일은 sdk 가 설치된 폴더에 보면 build-tools 라는 폴더가 있는데 

들어가서 아무 폴더에서 쉽게 찾아볼 수 있다.



zipalign.exe



재서명이 끝나면 아마 apk 명 끝에 -debug라고 붙은 apk가 생성되었을 것이다.

(또는 직접 정해준 파일명으로)


이 apk 를 사용하면 끝이다.


이렇게 간단한 방법이 있었다니..






반응형
반응형




Android Run 시 아래와 같은 에러가 났을 경우


[2016-02-15 11:25:55 - Dex Loader] Unable to execute dex: Multiple dex files define

[2016-02-15 11:25:55 - Test] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define


android-support-v7-appcompat 프로젝트가 Library 에 추가 되었는지 확인해본다.


해당 프로젝트 우클릭 - Properties - Android 탭 하단에서 볼 수 있다.


Library 를 보면 android-support-v7-appcompat 프로젝트가 추가 되었는지 볼 수 있는데 필자의 경우 android-support-v7-appcompat 라이브러리가 사라져 있었다.






이런 경우 android-support-v7-appcompat 라이브러리 프로젝트를 따로 import 시켜주어야 한다. 



이 프로젝트는 아마 처음 Android Project를 새로 생성할 때 OS 4.4.4 킷캣 이상 버전으로 생성하면 자동으로 생성되었던 라이브러리이다.

(android-support-v7-appcompat 이게 생성 안되게 프로젝트를 생성하는 방법이 있다곤 하는데 우선 급한 불 부터 꺼보겠다)


그런데 이게 가끔 지멋대로 프로젝트가 사라진다거나 이상하게 깨지는 경우가 많다. 

그래서 이게 생성안되게 새 프로젝트 생성시 4.1.2로 만들곤 한다.


혹시 몰라 첨부..


android-support-v7-appcompat.zip



android-support-v7-appcompat를 import 하였다면 이제 작업하는 프로젝트에 추가해주어야 한다.


Add 버튼을 누르면 라이브러리 프로젝트 선택화면이 나온다.




android-support-v7-appcompat를 선택하고 ok를 누르면







초록색으로 체크표시가 되고 추가가 될 것이다. Apply를 눌러 적용시키고


이제 다시 한번 프로젝트를 Run 해본다.


그래도 안된다면 다음 링크를 참고해본다.


http://stackoverflow.com/questions/7870265/unable-to-execute-dex-multiple-dex-files-define-lcom-myapp-rarray


http://www.androidside.com/bbs/board.php?bo_table=B56&wr_id=27196



반응형
반응형




sdk 를 업데이트 하려는데 자꾸 로그에



Download interrupted: peer not authenticated 


이런게 뜨면서 설치가 되지 않았다.


그래서 찾아보니 옵션을 수정해주어야 된다고 한다.


sdk 매니저 상단 Tools > Options 에 들어간다.





그리고 하단 others에 


Force https;// 를 체크해준다.






Close 한뒤 설치를 다시 시도해본다.


설치가 진행된다!








반응형
반응형




이 방법을 시도해보기 전에 더 간단한 방법이 있으므로 시도해보길 추천함

안드로이드 apk 쉽게 재서명 resign 하기

http://yonoo88.tistory.com/808




이미 릴리즈 된 안드로이드 apk 를 내 개인 서명키로 바꾸는 방법

여기서는 이미 있는 debug.keystore 파일을 이용하여 해보았다.


우선 재서명할 apk를 준비한다.


압축프로그램이 있다면 우클릭을 하고 압축을 푼다. (ex. astro apk)





압축을 풀고 나서 해당 폴더에 들어가면 파일이 많이 있는데 여기서 



META-INF 폴더를 삭제한다. 이 폴더에 서명관련한 파일들이 있기 때문이다.



삭제한 다음 다시 이 폴더를 압축하는데 꼭 폴더 내부로 들어가서 모든파일 선택 후 압축을 해야한다.!





그럼 압축파일이 생기는데 보기 편한 곳으로 이동시켜놓고




확장자를 ,apk로 바꿔준다.



그럼 위처럼 apk 로 변경된다 (기존 apk와 이름이 같아 resign으로 변경해주었다)


혹시 뒤에 확장자가 안보이면 폴더옵션에서

알려진 파일 형식의 파일 확장명 숨기기를 체크 해제 해준다.







그럼 cmd 창을 연다.


해당 폴더가 있는 경로로 진입한다. 여기서는 d:\astro 이다


그리고 서명할 키가 있어야 하는데 여기서는 debug.keystore를 이용하겠다.


이 키스토어는 C:\Users\Administrator\.android 폴더에 위치하고 있다.





그럼 이제 서명을 해줘야 하는데 명령어는 다음과 같다.


출처

http://developer.android.com/tools/publishing/app-signing.html


$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore my-release-key.keystore my_application.apk alias_name


jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [키스토어경로] [서명할apk경로] [키스토어별명]


여기서 jarsigner 경로가 환경변수에 등록되어 있어야한다.


하지만 자바를 처음 설치할 때 


%JAVA_HOME%\jdk\bin


이런 식으로 환경변수를 등록해주므로 아마 이미 되었을 것이다.


기본 경로는 다음과 같다(64비트)


C:\Program Files\Java\jdk1.8.0_05\bin




이렇게 해주면 된다.


기본적으로 debug.keystore 는 다음과 같은 정보를 가지고 있다


  • 키스토어 이름 : "debug.keystore"
  • 키스토어 비밀번호 : "android"
  • 키 별명 : "androiddebugkey"
  • 키 비밀번호 : "android"
  • CN: "CN=Android Debug,0=Android,C=US"

  • 키스토어 별명은 확인은


    keytool -list -v -keystore [키스토어경로] 


    로 확인할 수 있다.






    그럼 다음과 같이 입력 후 


    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore c:\.android\debug.keystore com.metago.resign.apk androiddebugkey


    실행하면 암호를 치라고 나오는데 android 라고 써준다.




    그럼 뭐가 좌르륵 나오면서 끝에 jar signed 라고 뜰 것이다.



    이제 서명은 되었고 apk를 다시 재정렬?시켜줘야 한다.


    그러기 위해서는 


    zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk

    zipalign -v 4 [서명한apk] [apk 새이름]


    위 명령어를 실행해 줘야 하는데 zipalign 경로가 환경변수 Path에 추가 되어 있어야 한다.



    Path 변수 값 예시C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin;D:\backup\eclipse\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\android-4.4W 



    zipalign 은 sdk 폴더에 buiild-tools 에서 안드로이드 아무 버전이나 폴더에 들어가면 있다.


    ex ) C:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W




    그래서 


    zipalign -v 4 com.metago.astro.resign.apk astro.apk



    라고 실행해주면


    아까보다 더 많은 좌르륵이 나오면서 


    Verification succesful 





    이라고 뜰 것이다.



    해당 폴더에 가보면 apk 가 생성되어 있을 것이다.





    확인을 해보고 싶다면

    jarsigner -verify my_application.apk //간단히 서명확인할 때

    jarsigner -verify -verbose -certs my_application.apk //서명 외 다른 정보도 자세히 확인할 때


    다음과 같이 실행해준다.


    원본 apk 파일인 com.metago.astro.apk 의 서명 정보 확인


    jarsigner -verify -verbose -certs com.metago.astro.apk





    debug.keystore 로 재서명한 astro.apk


    jarsigner -verify -verbose -certs astro.apk




    재서명한 astro.apk를 보면 Android Debug로 바뀐게 보인다.


    그럼 재서명 완료!!



    반응형

    + Recent posts