지식메모
-
자바 스윙 프레임바 아이콘 바꾸기2015.10.12
-
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기2015.10.04
-
자바 JTextArea 스크롤바 자동으로 설정하기2015.10.04
-
안드로이드 APK 재서명하기2015.09.22
-
JAVA JPasswordField 암호 값 가져오기2015.09.20
-
로보티움 튜토리얼 실행해보기2015.09.04
-
문자열에서 숫자만 추출하기2015.09.02
-
안드로이드 외부폰트 적용하기2015.09.02
자바 스윙 프레임바 아이콘 바꾸기
ImageIcon img = new ImageIcon("이미지경로");
해당프레임.setIconImage(img.getImage());
'지식메모 > JAVA' 카테고리의 다른 글
eclipse java.lang.SecurityException: class "org.hamcrest.Matchers"' 에러 해결하기 (0) | 2017.03.13 |
---|---|
자바 이미지 파일 포함하여 프레임바 아이콘 변경 후 실행가능한 jar 파일로 생성하기 (0) | 2015.10.15 |
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기 (0) | 2015.10.04 |
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기
현재 프로젝트에 lib 폴더가 있고 start.exe 파일을 참조하게 하고 싶다면
File path = new File("lib"+File.separator+"start.exe");
그런데 프로젝트 실행할 땐 잘되는데 실행가능한 jar 파일로 export 하여 해보니 안된다..ㅠㅠ
'지식메모 > JAVA' 카테고리의 다른 글
자바 이미지 파일 포함하여 프레임바 아이콘 변경 후 실행가능한 jar 파일로 생성하기 (0) | 2015.10.15 |
---|---|
자바 스윙 프레임바 아이콘 바꾸기 (0) | 2015.10.12 |
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
자바 JTextArea 스크롤바 자동으로 설정하기
자바 스윙에서 JTextArea 에서 스크롤바 자동으로 설정하는 방법
1 2 3 4 5 6 | JTextArea area= new JTextArea(); JScrollPane scrollPane = new JScrollPane(area); //스크롤판 추가 JPane.add(scrollPane); //화면에 추가 area.append(log); // 출력로그 JTextArea 출력 area.setCaretPosition(txtLog.getDocument().getLength()); // 이 코드를 append 밑에 추가해주면 항상 아래로 스크롤 된다 | cs |
'지식메모 > JAVA' 카테고리의 다른 글
자바 스윙 프레임바 아이콘 바꾸기 (0) | 2015.10.12 |
---|---|
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기 (0) | 2015.10.04 |
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
안드로이드 APK 재서명하기
이 방법을 시도해보기 전에 더 간단한 방법이 있으므로 시도해보길 추천함
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 는 다음과 같은 정보를 가지고 있다
키스토어 별명은 확인은
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로 바뀐게 보인다.
그럼 재서명 완료!!
'지식메모 > 안드로이드 Android' 카테고리의 다른 글
안드로이드 Unable to execute dex: Multiple dex files define 에러 해결하기 (0) | 2016.02.15 |
---|---|
안드로이드 sdk 설치시 Download interrupted: peer not authenticated 문제 해결 (0) | 2015.12.15 |
안드로이드 외부폰트 적용하기 (0) | 2015.09.02 |
안드로이드 xml 에러 error: Apostrophe not preceded by 해결 (0) | 2015.09.01 |
안드로이드 시스템 언어 변경에 따라 앱에서도 자동으로 언어 변경하기 (4) | 2015.08.20 |
JAVA JPasswordField 암호 값 가져오기
자바 스윙에서 JPasswordField 필드를 사용하면 암호입력시 * 별표로 표시할 수 있는데 이 가려지 값을 가져오는 방법
tf_pw = new JPasswordField(); tf_pw.setEchoChar('*');
이런 식으로 암호 입력시 * 별표로 가려지게 한다음
String pw = ""; //tf_pw 필드에서 패스워드를 얻어옴, char[] 배열에 저장 char[] secret_pw = tf_pw.getPassword(); //secret_pw 배열에 저장된 암호의 자릿수 만큼 for문 돌리면서 cha 에 한 글자씩 저장 for(char cha : secret_pw){ Character.toString(cha); //cha 에 저장된 값 string으로 변환 //pw 에 저장하기, pw 에 값이 비어있으면 저장, 값이 있으면 이어서 저장하는 삼항연산자 pw += (pw.equals("")) ? ""+cha+"" : ""+cha+""; }
이렇게 저장한 후 System.out.println(pw)로 찍어보면 입력된 암호가 나타난다.
'지식메모 > JAVA' 카테고리의 다른 글
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기 (0) | 2015.10.04 |
---|---|
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
로보티움 튜토리얼 실행해보기
필수 환경
자바 설치
자바 path 설정
이클립스 설치
android sdk 설치
위 환경이 설치되어 있다는 가정하에 실행
로보티움 튜토리얼 페이지
https://github.com/RobotiumTech/robotium/wiki/Robotium-Tutorials
위 링크에서
환경 설치부터 예제 소스코드와 실행방법 pdf 파일까지 받을 수 있다.
위와 같은 페이지가 나타나는데
우선 Calculator Source Code 와
아래 Black Box Testing 에서 Source Code를 내려받는다.
그런 다음 이클립스에서 2개의 프로젝트를 import 한다음
(Android 프로젝트 Exisiting Android Code Into Workspace로 import)
에뮬레이터를 실행하거나 apk를 설치할 폰을 준비한다.
AndroidCalculator 프로젝트 파일
우선 Android Calculator 프로젝트 우클릭 > Run As > Android Application 을 실행하여
에뮬레이터나 연결된 폰에 Calculator 앱을 설치한다.
설치가 되었으면 이제 BlackBox Testing 프로젝트를 실행해야 한다.
testAndroidCalculatorBlackBox 프로젝트 모습
위 Calculator와 다른 점은 robotium-solo-5.0.1.jar 라이브러리가 있다는 점이다.
저게 있어야 테스팅이 가능하다.
TestApk.java 파일을 보면
package com.testcalculator; import com.robotium.solo.Solo; import android.test.ActivityInstrumentationTestCase2; @SuppressWarnings("unchecked") public class TestApk extends ActivityInstrumentationTestCase2 { private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.calculator.Main"; // 꼭 확인 private static Class launcherActivityClass; static { try { launcherActivityClass = Class .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } public TestApk() throws ClassNotFoundException { super(launcherActivityClass); } private Solo solo; @Override protected void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); } public void testDisplayBlackBox() { // Enter any integer/decimal value for first editfield, we are writing 10 solo.clearEditText(0); solo.enterText(0, "10"); // Enter any integer/decimal value for first editfield, we are writing 20 solo.clearEditText(1); solo.enterText(1, "20"); // Click on Multiply button solo.clickOnButton("Multiply"); // Verify that resultant of 10 x 20 assertTrue(solo.searchText("200")); } @Override public void tearDown() throws Exception { solo.finishOpenedActivities(); } }
예제 코드라 알아서 되어 있겠지만 패키지 네임을 꼭 확인한다. 이 패키지 네임은 테스트할 앱 내 클래스 파일명으로 해주어야 한다.
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.calculator.Main";
그래야 해당 앱을 실행해서 테스트가 가능하다.
또 확인해야 할 것이 메니페스트 파일인데 열어보면
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.testcalculator" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.calculator" android:label="TestAndroidCalculatorBlackBox"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application> </manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.testcalculator" // 이 패키지명은 test프로젝트의 패키지 명이어야 하고
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.calculator" android:label="TestAndroidCalculatorBlackBox"/>
이 타겟 패키지명은 해당 앱 패키지명이어야 한다. 말 그대로 타겟이니 테스트할 앱 패키지명을 적어준다.
위 프로젝트 사진을 보면
패키지명이 나와있다.
AndroidCalculator 패키지명 : com.calculator |
testAndroidCalculatorBlackBox 패키지명 : com.testcalculator |
|
|
확인이 끝났다면
testAndroidCalculatorBlackBox 프로젝트 우클릭 > Run As > Android Juit Test 을 클릭하여 테스트를 실행한다.
물론 에뮬레이터에 앱을 설치헀으면 똑같이 에뮬레이터에서 실행하고 폰이면 폰에서 실행한다.
폰으로 실행한 영상
이렇게 자동으로 곱셈계산이 된다.
마지막으로 요약하자면
1. 로보티움 튜토리얼 페이지에서 AndroidCalculator 프로젝트와 testAndroidCalculatorBlackBox 프로젝트 파일을 내려받는다.
2. 이클립스에서 두 프로젝트를 import 한다.
3. 먼저 AndroidCalculator 을 실행하여 설치한다.
4. testAndroidCalculatorBlackBox 프로젝트 패키지명 확인한 뒤 Run As > Android Juit Test 로 실행한다.
나중에 apk 파일만 가지고 테스트 하는 방법을 알아보아야겠다.
앱 서명문제 때문에 번거로운거 같다..
'지식메모 > 자동화' 카테고리의 다른 글
테스터로서 느낀 4가지 실수들 (0) | 2016.06.14 |
---|---|
appium 에서 특정영역을 좌우로 swipe 하기 (2) | 2016.05.23 |
Appium 자동화 상하좌우 스크롤 하기 (0) | 2016.03.23 |
Robotium API 기능 알아보기 (0) | 2016.02.18 |
Selenium & Webdriver 자동화 테스트 예제 - Naver 지식인 (크롬 브라우저) (0) | 2015.01.23 |
문자열에서 숫자만 추출하기
해당링크
핵심 키워드 \D+
문자열 배려 첫번째는 공백이므로 split[1] 값 부터 사용하기
특히 특수문자 검색할 땐 앞에 백슬래쉬 요거 \ 추가하기
ex) ""이름"" ( 에러뜸 ) ▶ "\"이름\"" ( 따옴표도 검색가능 )
'지식메모 > JAVA' 카테고리의 다른 글
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
---|---|
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
Json의 이해 (0) | 2013.11.05 |
안드로이드 외부폰트 적용하기
우선 아래와 같이 asset 폴더에 폰트파일을 추가해준다.
폰트파일의 경로는 C:\Windows\Fonts 여기서 찾을 수 있다.
그런 다음 폰트를 바꾸고 싶은 뷰에다 적용을 해주면되는데 개인적으로 버튼의 텍스트 폰트를 바꾸고 싶었다.
Button btn2 = (Button)findViewById(R.id.button_custom); btn2.setOnClickListener(this); Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/NEXONFootballGothicB.ttf")); //asset > fonts 폴더 내 폰트파일 적용 btn2.setTypeface(typeFace);
위와 같이 버튼에 폰트를 적용하였다.
Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/NEXONFootballGothicB.ttf")); // 폰트 설정 후
btn2.setTypeface(typeFace); //btn2 버튼에 폰트 적용
끝!
'지식메모 > 안드로이드 Android' 카테고리의 다른 글
안드로이드 sdk 설치시 Download interrupted: peer not authenticated 문제 해결 (0) | 2015.12.15 |
---|---|
안드로이드 APK 재서명하기 (0) | 2015.09.22 |
안드로이드 xml 에러 error: Apostrophe not preceded by 해결 (0) | 2015.09.01 |
안드로이드 시스템 언어 변경에 따라 앱에서도 자동으로 언어 변경하기 (4) | 2015.08.20 |
안드로이드 HashMap 을 이용한 이미지 세팅하기. (0) | 2015.06.28 |