Coder Social home page Coder Social logo

Comments (12)

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
You need to set the BOOTCLASSPATH environment variable on the *phone*. Not on 
your
computer :)

adb shell
BOOTCLASSPATH=$BOOTCLASSPATH:/system/framework/com.google.android.gtalkservice.j
ar
deodexerant /system/app/gtalkservice.odex 1234 &
exit
tcp forward tcp:1234 tcp:1234
baksmali gtalkservice.odex -x :1234

Original comment by [email protected] on 1 Jan 2010 at 5:31

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
dedexer can de-odex "app\gtalkservice\gtalkservice.odex" without problems.

Original comment by [email protected] on 1 Jan 2010 at 5:32

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
Also, for the record, you don't have to deodex
/system/framework/com.google.android.gtalkservice.odex first. You can just 
deodex
/system/app/gtalkservice.odex, if that's all that you're interested in.

Original comment by [email protected] on 1 Jan 2010 at 5:32

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
baksmali/deodexerant can deodex it fine. You just have to do it correctly.

Also: interesting. I wasn't aware dedexer could do deodexing now.

Original comment by [email protected] on 1 Jan 2010 at 5:34

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
Yes. dedexer can do odex files now. I just tried other odex files 
with "baksmali/deodexerant", and most of them are fine (Calculator.odex etc. 
worked 
well). However, I had a similar problem with "GmailProvider.odex", see below:

C:\android-sdk_r04\smali>java -Xss1m -Xmx512M -jar baksmali.jar -x :1234 
GmailProv
ider.odex

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: java.lang.RuntimeException: class 
Lcom/google/android/gtalkservice/GTalkHttpClient; could not be found for common 
superclass lookup
        at org.jf.dexlib.Util.Deodexerant.sendCommand(Deodexerant.java:193)
        at org.jf.dexlib.Util.Deodexerant.lookupCommonSuperclass
(Deodexerant.java:167)
        at org.jf.dexlib.Util.DeodexUtil$insn.findCommonSuperclass
(DeodexUtil.java:1241)
        at org.jf.dexlib.Util.DeodexUtil$insn.propagateRegisters
(DeodexUtil.java:1412)
        at org.jf.dexlib.Util.DeodexUtil$insn.propagateRegisters
(DeodexUtil.java:1466)

Original comment by [email protected] on 1 Jan 2010 at 6:06

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
You just need to add the extra dependency jar to the BOOTCLASSPATH environment
variable on the *phone*, before running deodexerant.

Original comment by [email protected] on 1 Jan 2010 at 6:07

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
 "/system/app/MarketUpdater.odex" is good with "baksmali/deodexerant". Just 
that "/system/app/gtalkservice.odex" and "/system/app/GmailProvider.odex" have 
dep 
problems, not be de-odexed at this point. This is from Google ADP2/Sapphire rom.

Original comment by [email protected] on 1 Jan 2010 at 6:10

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
I do want to add functionality to deodexerant so that it reads the dependencies 
from
the odex file and automatically sets the bootclasspath appropriately. But for 
now,
you have to set it before calling it :)

I haven't taken a look at dedexer in a while. It looks like he's been doing 
some work
on it :) 

Original comment by [email protected] on 1 Jan 2010 at 6:10

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024

Original comment by [email protected] on 1 Jan 2010 at 6:13

  • Changed state: Done

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
Thanks JF! 
Yes. After export 
BOOTCLASSPATH=$BOOTCLASSPATH:/system/framework/com.google.android.gtalkservice.j
ar, 
it works perfect now!

Original comment by [email protected] on 1 Jan 2010 at 6:28

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
How come dedexer can do it offline on host, and has no dependence issue?

Original comment by [email protected] on 1 Jan 2010 at 6:38

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 24, 2024
It's because he took a different path to deodex stuff than I did. When a dex 
file is
odexed, various instructions are replaced with an "optimized" version of the
instruction. For things like invoke-virtual, instead of directly specifying the 
name
of the method that should be invoked, the odex instruction instead contains the 
index
into the vtable that dalvik keeps for each class.

What dedexer does (or appears to do, I haven't looked at the source much yet), 
is to
load the dependency odex files, and recreate the virtual tables, so that he can
resolve the virtual table indexes in the odexed instructions. Like most things, 
his
approach is a trade-off. On the positive side, it is a lot easier to use, since 
you
don't have to be running a helper binary on a device. On the negative side, it's
possible that dalvik's internal representation of the vtable will change, and 
his
deodexer will no longer work with the new format, without changes.

On the other hand, I chose to use a method that is more robust, but is more 
difficult
to use. My method should be able to handle changes in dalvik's internal
representation easier, but it's more difficult to use.

Original comment by [email protected] on 1 Jan 2010 at 6:58

from smali.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.