레이블이 java인 게시물을 표시합니다. 모든 게시물 표시
레이블이 java인 게시물을 표시합니다. 모든 게시물 표시

2015년 4월 22일 수요일

apk unpack and repack

기존에 누군가가 만들어준 GAppsInstaller_kk.apk가 문제가 있다는 글이 포럼에 올라 왔다.

http://forum.odroid.com/viewtopic.php?f=113&t=11854&start=50

여기서 링크에 있는 GAPPs를 사용하면 문제가 해결 된다는 글이 있다.

http://wiki.cyanogenmod.org/w/Google_Apps

그래서 GAppsInstaller_kk.apk 를 풀어 위에 아래 파일로 대체 하려고 한다.

https://goo.im/gapps/gapps-kk-20140105-signed.zip/

gapps-kk-20140105-signed.zip 압축을 푼다.


 system 폴더에서 모든 파일을 선택한다.


우측 클릭 메뉴에서 Compress...를 선택한다.
gapps.tar.xz로 압축한다.



gapps.tar.xz를 gapps.xz로 변경한다.

이제 apk를 풀고 묶는 툴을 설치한다.

http://ibotpeaches.github.io/Apktool/

Apktool 2.x 버전과 Java 1.7 을 사용하였다.

http://ibotpeaches.github.io/Apktool/install/

저는 안드로이드 빌드를 위하여 1.6과 1.7 두가지 모두 설치 되어 있어서 아래와 같이 openjdk로 변경합니다.

$ sudo update-alternatives --config java

There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-oracle/jre/bin/java          1073      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1073      manual mode
  2            /usr/lib/jvm/java-6-sun/jre/bin/java             63        manual mode
* 3            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode

Press enter to keep the current choice[*], or type selection number:

apktool로 압축을 푼다.

$ apktool d GAppsInstaller_kk.apk 
I: Using Apktool 2.0.0 on GAppsInstaller_kk.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/codewalker/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

그리고 gpapps.xz를 덮어쓴다.
$ cp gapps.xz GAppsInstaller_kk/res/raw/gapps.xz

기존 GAppsInstaller_kk.apk를 지운다.
$ rm -rf GAppsInstaller_kk.apk

apktool로 묶는다.
$ apktool b GAppsInstaller_kk/
I: Using Apktool 2.0.0
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...

새로 만든 GAppsInstaller_kk.apk
http://dn.odroid.com/GAPPS/new/GAppsInstaller_kk.apk


2013년 8월 26일 월요일

MD5SUM string in Java

    public static String createChecksum(String filename) throws Exception {
        InputStream fis =  new FileInputStream(filename);

        byte[] buffer = new byte[1024];
        MessageDigest complete = MessageDigest.getInstance("MD5");
        int numRead;

        do {
            numRead = fis.read(buffer);
            if (numRead > 0) {
                complete.update(buffer, 0, numRead);
            }
        } while (numRead != -1);

        fis.close();
        byte[] digest = complete.digest();
        StringBuffer sb = new StringBuffer();
        for (byte b : digest) {
            if ((int)(b & 0xff) <= 0xf)
                sb.append(Integer.toHexString(0));
            sb.append(Integer.toHexString((int) (b & 0xff)));
        }
 
        return sb.toString();
    }

2011년 11월 30일 수요일

android OpenJDK vs Sun JDK build

Ubuntu 11.10 업데이트 후 자동으로 설치되었는지 확인은 되지 않지만 OpenJDK가 설치 되어 있습니다.

android build시 gingerbread까지는 OpenJDK로 build하여도 문제가 없는데 ICS build시 아래와 같은 에러가 발생합니다.


error: error reading out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar; invalid header field
1 error
make: *** [out/target/common/obj/APPS/FrameworksCoreSystemPropertiesTests_intermediates/classes-full-debug.jar] 오류 41

googling 하여 보니 OpenJDK로 build는 가능하나 Sun JDK를 사용하기를 권장하는 것 같습니다.

synatic에서 OpenJDK를 삭제하시고 Sun JDK로 설치하시고


[~/projects/ICS]$ sudo update-alternatives --config jar
[sudo] password for codewalker:
대체 항목 jar에 대해 (/usr/bin/jar 제공) 2개 선택이 있습니다.

  선택       경로                           우선순  상태
------------------------------------------------------------
* 0            /usr/bin/fastjar                  100       자동 모드
  1            /usr/bin/fastjar                  100       수동 모드
  2            /usr/lib/jvm/java-6-sun/bin/jar   63        수동 모드

기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오: 2

jar도 위와 같이 java-6-sun/bin/jar를 선택하십시오.



http://groups.google.com/group/android-building/browse_thread/thread/f82cc424d451e409/91e29dac50ee1970?show_docid=91e29dac50ee1970

아직도 ICS AOSP가 빌드가 되지 않고 있습니다.


Preparing output jar [/home/codewalker/projects/ICS/out/target/common/obj/APPS/WAPPushManager_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/codewalker/projects/ICS/out/target/common/obj/APPS/WAPPushManager_intermediates/classes.jar]
target Java: FrameworksServicesTests (out/target/common/obj/APPS/FrameworksServicesTests_intermediates/classes)
target Dex: android.core.tests.libcore.package.com.no-core-tests-res
target Dex: android.core.tests.libcore.package.dalvik.no-core-tests-res
target Dex: android.core.tests.libcore.package.libcore.no-core-tests-res
target Dex: android.core.tests.libcore.package.org.no-core-tests-res
target Dex: android.core.tests.libcore.package.sun.no-core-tests-res
target Dex: android.core.tests.libcore.package.tests.no-core-tests-res

이 단계에서 top을 해 보면 java가 몇개 돌고 있고 메모리를 거의 다 사용하고 있어서 시스템이 거의 동작하지 않고 build 역시 안되는 것 같습니다. 여기서 해결이 안되네요. ㅡㅡ;

https://groups.google.com/group/android-building/browse_thread/thread/1d01d0cd635c7f9e

여기 설명대로 -j 옵션을 없애니 컴파일이 계속되네요. 이해가 안가네요.

결과 Ubuntu 11.10 최신 버전을 사용하고 있었는데 OS가 문제가 있어서 다시 설치해야 하서 결국 Google에서 recommend하는 10.04로 재설치 하였습니다.

그런데 package/app들 build하다가 아래 링크의 설명 처럼 에러가 발생합니다.


fix "bad class file error" android build error



http://rxwen.blogspot.com/2011/08/fix-bad-class-file-error-android-build.html

eclipse를 설치하고 나면 jar가 fastjar로 바뀝니다.
그래서 결국 android ICS build 하려면 jar를 다시 설정해 주셔야 합니다.

2010년 5월 1일 토요일

[android] Eclipse에서 android 및 java source code browsing하기기

위와 관련해서 인터넷을 검색해 보면 git로 소스를 받고 frameworks/base/java를 sdk를 받은 폴더에 sources를 만들고 java밑에 있는 파일을 sources에 복사 하면 된다고 나와 있습니다.
이전에 1.6버전일 때는 저 역시 이렇게 하면 됐던걸로 기억하고 있습니다.
하지만 2.1 sdk를 받고 eclipse에서 모든 update를 한 후에는 위에 방법으로 보여 지지 않습니다.
최신 버전으로 업데이트를 받고 나면 platform 폴더에 버전 별로 폴더가 생깁니다.



android-7 폴더에 sources를 만들고 거기에 git에서 받은 frameworks/base/core/java/android와 frameworks/base/java/com을 복사 하시면 됩니다.

그리고 반드시 환경 변수PATH에 android sdk 경로를 추가 해 주셔야 합니다.

그리고 이제 java 소스를 볼 수 있는 방법 입니다.
java를 설치 하고 나면 일반적으로 C:\Program Files\Java\jdk1.6.0_20\src.zip 파일 있습니다.
압축을 풀고 src/java폴더를 [android sdk]\platforms\android-7\sources에 복사 하여 주시면 됩니다.

위에 그림 처럼 android/com/java가 존재 하면 됩니다.

그외에 graphics와 같은 폴더도 동일하게 복사 해서 넣어 주시면 됩니다.