도래울

Android Eclipse로 Debugging 본문

개발/Android

Android Eclipse로 Debugging

도래울 2016. 2. 5. 13:12

1. full source  compile 한다

    - ex) froyo

 

2. build 완료 확인

    - system.img, userdata.img, ramdisk.img 확인

    - /froyo/out/target/product/generic$

 

3. Linux에서 빌드된 souce code  object window system 으로 가져온다.

    - source code : /froyo/packages/apps/Settings$

 code review 위해 device, frameworks, packages  한번에 copy

    - obj code : /froyo/out

 

4. Eclipse에서 Settings package 넣고 build

    1) File - New - Project - Android Project

        Create project from existing source 에서 Settings package path 설정

    2) Compile

 

5. Compile error 수정

    - project 에서 properties 실행

    1) add framework lib

i. Java Build Path 에서 Libraries 선택

ii. Add External JARs 실행하여 아래 jar 추가

    /out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

    2) Build Oder 수정

i. Java Build Path 에서 Order and Export 선택

ii. 5-1)에서 추가된 classes.jar 최상위로 선택

 

6. APK 설치

    - install package in data

>adb remount                                    

>adb shell rm /system/app/Settings.apk   

>adb uninstall com.android.settings         

  • >adb install Settings.apk                       

 

  • overwrite package in system

>adb remount                                 

>adb push d:\~~~~\*.apk /system/app

 

--> system.img  만들어지는것과

직접 push 하는것이  size 차이가 나는걸까?

adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock0 /system

 

 

 

 

 

 TroubleShooting

 

1. INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    - adb error

        pkg: /data/local/tmp/Settings.apk

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]

 

 

    - LogCat

10-29 06:59:21.327: DEBUG/dalvikvm(257): GC_EXPLICIT freed 86 objects / 8624 bytes in 79ms

10-29 06:59:22.348: DEBUG/PackageManager(61): Scanning package com.android.settings

10-29 06:59:22.348: DEBUG/PackageManager(61): Shared UserID android.uid.system (uid=1000): packages=[PackageSetting{43ecf418 com.android.server.vpn/1000}, PackageSetting{43eceed8 com.android.providers.subscribedfeeds/1000}, PackageSetting{43ecf098 com.android.providers.settings/1000}, PackageSetting{43ece1e0 android/1000}]

10-29 06:59:22.358: ERROR/PackageManager(61): Package com.android.settings has no signatures that match those in shared user android.uid.system; ignoring!

10-29 06:59:22.358: WARN/PackageManager(61): Package couldn't be installed in /data/app/com.android.settings-1.apk

 

 

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

        package="com.android.settings"

        android:sharedUserId="android.uid.system">

▶ android:sharedUserId="android.uid.system  삭제

 

2. install_failed_dexopt

▶ data/dalvik-cache/***.dex file 삭제후  debugging

 

Comments