Orn Kristjansson
Orn Kristjansson

Reputation: 3485

Create Android app release mode

I want to create my Android app in release mode. I did the suggested Export from Eclipse. Android tools -> Export Unassigned ( then signed it aligned it etc ) I though the export would give me release mode app. I checked on disk and the .apk is just the same size as the one I get when I normally compile in Eclipse.
Further I installed it in the emulator by >adb install myapp.apk then I tried to attach to the application in the Eclipse debugger and sure enough it hit my breakpoint. So I'm convinced I have indeed a debug version. The question is how can I create release mode version of my application from Eclipse before signing and submitting to the market place ?

Edit

If I log it the debuggable flag is off when exported, as well when running from Eclipse. Unless I explicitly set it to true in the Manifest application section. It seems the debug / release mode is just a flag on / off. Doesn't do anything more than that, I can set breakpoints and debug both versions. The resulting .apk is the same size.

cxLog.e( "TOKEN", " Debuggable=" + (( context.getPackageManager().getApplicationInfo( comp.getPackageName(), 0 ).flags &= ApplicationInfo.FLAG_DEBUGGABLE ) != 0 ) ); 

10-28 14:46:12.479: ERROR/TOKEN(1856): Debuggable=false

Upvotes: 18

Views: 40938

Answers (3)

Pir Fahim Shah
Pir Fahim Shah

Reputation: 10623

If you want to SIGNED IN and ZIP ALIGNED your app in release mode so that it could distribute and can be uplodated to the Google play store, then just follow the below steps.

 --> Right click on project
 --> Android Tools
 --> Export Unassigned app and save in directory like D:\Sdcard.apk

         //Now open your windows terminal, CMD
 --> change directory to the bin of the jave like
 --> cd c:\ProgramFiles\JAVA\JDK\bin

Now this is time to create Keystore Released File... now write these commands in the TERMINAL,

keytool -genkey -v -keystore my-release-key.keystore -keyalg RSA -keysize 2048 -validity 14600

This will propmt for Keystore "password" and for Key "password", so type different password and answer to the question it will ask later. Now my-release-key.keystore file will be generated in directory where your "bin" folder of java are, like in my sytstem it will be like

     c:\ProgramFiles\JAVA\JDK\bin\ my-release-key.keystore

write this command in Terminal for Signed in the app

jarsigner -verbose -keystore my-release-key.keystore D:\Sdcard.apk mykey

Now redirect your terminal to the Zipalign.exe file which is located in Android sdk 21\tool\ , like in my system i did that

cd F:\Softwares\LANGUAGES SOFTEARE\Android Setup\android-sdk-21 version\tools

After that put the below line in the terminal

zipalign -v 4 D:\Sdcard.apk newSdcard.apk

Congratulations! - Now you will find a newSdcard.apk file inside the Android sdk\tool, Now upload it to play store, and remember me with love. 💖

Upvotes: 4

slinden77
slinden77

Reputation: 3388

On current versions of the Android SDK, just right-click the project, Android Tools > Export Signed Application Package, and select your keystore

Upvotes: 0

Reno
Reno

Reputation: 33792

The question is how can I create release mode version of my application from Eclipse

Check this out : Compile the application in the release mode

Android Tools > Export Unsigned Application Package


Support for a true debug build. Developers no longer need to add the android:debuggable attribute to the tag in the manifest — the build tools add the attribute automatically. In Eclipse/ADT, all incremental builds are assumed to be debug builds, so the tools insert android:debuggable="true". When exporting a signed release build, the tools do not add the attribute. In Ant, a ant debug command automatically inserts the android:debuggable="true" attribute, while ant release does not. If android:debuggable="true" is manually set, then ant release will actually do a debug build, rather than a release build.

Upvotes: 17

Related Questions