Skip to content

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

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

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
Owner
jberkel commented Feb 8, 2012

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

@ezh
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
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
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
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
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
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
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
Something went wrong with that request. Please try again.