crash on run when "useProguard in Android := false" #114

Open
andyli opened this Issue Feb 8, 2012 · 8 comments

Comments

Projects
None yet
4 participants
@andyli

andyli commented Feb 8, 2012

I would like to skip Proguard to accelerate the debug cycle.
I've try setting useProguard in Android := false in build.scala,
but after that, cleaned, recompiled the project, the program crashes (force close) on run.

@jberkel

This comment has been minimized.

Show comment
Hide comment
@jberkel

jberkel Feb 8, 2012

Owner

proguard is required to run on unmodified devices/emulators at the moment - need to update the docs.

Owner

jberkel commented Feb 8, 2012

proguard is required to run on unmodified devices/emulators at the moment - need to update the docs.

@ezh

This comment has been minimized.

Show comment
Hide comment
@ezh

ezh Feb 8, 2012

andyli you may modify emulator if you wish. I run and debug my code with useProguard in Android := false. There are 2things that you need:

  1. predex and preload appropriate libraries. For this you may use my fork, look at pull request "add ability to predex external libraries"
  2. modify your AndroidManifest.xml and add tag
    example of such manifest you may view at https://github.com/ezh/android-component-DigiSSHD/blob/master/AndroidManifest.xml.

I must note that without it development process have a huge slowdown. Because I use AspectJ as AOP for alter scala code that add more compilation time than ever. Without "useProguard in Android := false" development is pain

If you have any questions PM me

ezh commented Feb 8, 2012

andyli you may modify emulator if you wish. I run and debug my code with useProguard in Android := false. There are 2things that you need:

  1. predex and preload appropriate libraries. For this you may use my fork, look at pull request "add ability to predex external libraries"
  2. modify your AndroidManifest.xml and add tag
    example of such manifest you may view at https://github.com/ezh/android-component-DigiSSHD/blob/master/AndroidManifest.xml.

I must note that without it development process have a huge slowdown. Because I use AspectJ as AOP for alter scala code that add more compilation time than ever. Without "useProguard in Android := false" development is pain

If you have any questions PM me

@andyli

This comment has been minimized.

Show comment
Hide comment
@andyli

andyli Feb 9, 2012

@ezh
Sounds very nice.
Long build time is indeed a major issue for me to develop Android app using Scala...
I will have a look to it and hope it will be merged soon.
Thanks!

andyli commented Feb 9, 2012

@ezh
Sounds very nice.
Long build time is indeed a major issue for me to develop Android app using Scala...
I will have a look to it and hope it will be merged soon.
Thanks!

@loganj

This comment has been minimized.

Show comment
Hide comment
@loganj

loganj Feb 9, 2012

@andyli have a look at #116 as well. It won't help with proguard on your app, like @ezh's predex/preload option, but it does at least skip proguard on your test project.

loganj commented Feb 9, 2012

@andyli have a look at #116 as well. It won't help with proguard on your app, like @ezh's predex/preload option, but it does at least skip proguard on your test project.

@ezh

This comment has been minimized.

Show comment
Hide comment
@ezh

ezh Feb 9, 2012

Maybe I misunderstand something. I suspect, that @andyli discribe situation when installed application throw ClassNotFoundException or something like that (I saw it long time ago) because proguard skipped. There isn't scala runtime libraries at emulator by default and program crashed. It is default behavior. Just load all libraries to emulator. Or he point to other problem?

By the way, my copy paste incremental build process:
with android libraries (overloading default aapt process to avoid id duplication)
with aspectj weaving
with png crunching
without build native code

Generated 99 files
Included 0 files from jar/zip files.
Checking for deleted files
Done!
[info] Packaging /home/ezh/0projectsAndroid/android-DigiINETD.private/source/bin/digiINETD.apk
[success] Total time: 18 s, completed 09.02.2012 19:06:07
3994 KB/s (823125 bytes in 0.201s)
pkg: /data/local/tmp/digiINETD.apk
Success
[success] Total time: 4 s, completed 09.02.2012 19:06:11

I think, that it is a very nice time for such amount of build work. Please, note size - only 823125 without proguard. All stable libraries already at emulator. I think this is what @andyli want - something like that

Best regards,
Alexey

ezh commented Feb 9, 2012

Maybe I misunderstand something. I suspect, that @andyli discribe situation when installed application throw ClassNotFoundException or something like that (I saw it long time ago) because proguard skipped. There isn't scala runtime libraries at emulator by default and program crashed. It is default behavior. Just load all libraries to emulator. Or he point to other problem?

By the way, my copy paste incremental build process:
with android libraries (overloading default aapt process to avoid id duplication)
with aspectj weaving
with png crunching
without build native code

Generated 99 files
Included 0 files from jar/zip files.
Checking for deleted files
Done!
[info] Packaging /home/ezh/0projectsAndroid/android-DigiINETD.private/source/bin/digiINETD.apk
[success] Total time: 18 s, completed 09.02.2012 19:06:07
3994 KB/s (823125 bytes in 0.201s)
pkg: /data/local/tmp/digiINETD.apk
Success
[success] Total time: 4 s, completed 09.02.2012 19:06:11

I think, that it is a very nice time for such amount of build work. Please, note size - only 823125 without proguard. All stable libraries already at emulator. I think this is what @andyli want - something like that

Best regards,
Alexey

@loganj

This comment has been minimized.

Show comment
Hide comment
@loganj

loganj Feb 9, 2012

@ezh I think you understood @andyli correctly. If he's looking to get rid of some proguard time, there are at least two options: 1) use your predex/preload method, so proguard isn't needed at all; 2) use my patch, so that proguard isn't needed on the test project (but will still be needed on the main project). Yours is the better solution, but mine requires a little less work. I'm planning to try your branch myself soon.

loganj commented Feb 9, 2012

@ezh I think you understood @andyli correctly. If he's looking to get rid of some proguard time, there are at least two options: 1) use your predex/preload method, so proguard isn't needed at all; 2) use my patch, so that proguard isn't needed on the test project (but will still be needed on the main project). Yours is the better solution, but mine requires a little less work. I'm planning to try your branch myself soon.

@ezh

This comment has been minimized.

Show comment
Hide comment
@ezh

ezh Feb 9, 2012

@loganj test is important part, you are right. if you have any thoughts about my fork - feel free to ask. Prepare emulator for uploading is all-sufficient task.

ezh commented Feb 9, 2012

@loganj test is important part, you are right. if you have any thoughts about my fork - feel free to ask. Prepare emulator for uploading is all-sufficient task.

@andyli

This comment has been minimized.

Show comment
Hide comment
@andyli

andyli Feb 10, 2012

@ezh I was simply using a unmodified emulatord the proguard skipped app crashed.

@loganj Thanks for your response, but I would like to skip proguard in the main project too.

Btw, it would be much nicer if there is a command in sbt that do all those predex/preload job.
eg. something like:
android:install-scala-emulator
android:remove-scala-emulator

andyli commented Feb 10, 2012

@ezh I was simply using a unmodified emulatord the proguard skipped app crashed.

@loganj Thanks for your response, but I would like to skip proguard in the main project too.

Btw, it would be much nicer if there is a command in sbt that do all those predex/preload job.
eg. something like:
android:install-scala-emulator
android:remove-scala-emulator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment