Skip to main content

Ant not rebuilding Android application with `ant debug install`



Starting with a clean project created with:







android create project -n something -t android-7 -p something -k com.example.something -a Something







When I run ant debug install and open the application in my emulator, I see (as expected)





Emulator screenshot from initial build





Here's where it goes bad. I now change something trivial in the application. In this example, I'm going to remove the setContentView call from the main activity so it looks like this:







package com.example.something;

import android.app.Activity;

import android.os.Bundle;

public class Something extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.main); REMOVED

}

}







Now I rebuild the application with ant debug install and run it in the emulator. I see this:





Emulator screenshot after rebuild





This is wrong. I just removed the text with my previous edit. If I do ant clean before ant debug install , I get the expected result:





Expected result after rebuild





I don't want to have to run ant clean before each time I run ant debug install . How can I make ant actually rebuild the program without running ant clean each time?








Details:





Here's the output from the inital ant debug install :







$ ant debug install

Buildfile: /home/x/android/something/build.xml



-set-mode-check:



-set-debug-files:



-set-debug-mode:



-debug-obfuscation-check:



-setup:

[echo] Gathering info for something...

[setup] Android SDK Tools Revision 16

[setup] Project Target: Android 2.1

[setup] API level: 7

[setup]

[setup] ------------------

[setup] Resolving library dependencies:

[setup] No library dependencies.

[setup]

[setup] ------------------

[setup]

[setup] WARNING: No minSdkVersion value set. Application will install on all Android versions.



-build-setup:

[echo] Creating output directories if needed...

[mkdir] Created dir: /home/x/android/something/bin

[mkdir] Created dir: /home/x/android/something/bin/res

[mkdir] Created dir: /home/x/android/something/gen

[mkdir] Created dir: /home/x/android/something/bin/classes



-pre-build:



-code-gen:

[echo] ----------

[echo] Handling aidl files...

[aidl] No AIDL files to compile.

[echo] ----------

[echo] Handling RenderScript files...

[renderscript] No RenderScript files to compile.

[echo] ----------

[echo] Handling Resources...

[aapt] Generating resource IDs...



-pre-compile:



-compile:

[javac] Compiling 2 source files to /home/x/android/something/bin/classes



-post-compile:



-obfuscate:



-dex:

[dex] Converting compiled files and external libraries into /home/x/android/something/bin/classes.dex...



-crunch:

[crunch] Crunching PNG Files in source dir: /home/x/android/something/res

[crunch] To destination dir: /home/x/android/something/bin/res

[crunch] Crunched 0 PNG files to update cache



-package-resources:

[aapt] Creating full resource package...



-package:

[apkbuilder] Current build type is different than previous build: forced apkbuilder run.

[apkbuilder] Creating something-debug-unaligned.apk and signing it with a debug key...



-do-debug:

[zipalign] Running zip align on final apk...

[echo] Debug Package: /home/x/android/something/bin/something-debug.apk



debug:

[propertyfile] Creating new property file: /home/x/android/something/bin/build.prop

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop



install:

[echo] Installing /home/x/android/something/bin/something-debug.apk onto default emulator or device...

[exec] 66 KB/s (4410 bytes in 0.065s)

[exec] pkg: /data/local/tmp/something-debug.apk

[exec] Success



BUILD SUCCESSFUL

Total time: 5 seconds







Here's the output from the second ant debug install after the edit:







$ ant debug install

Buildfile: /home/x/android/something/build.xml



-set-mode-check:



-set-debug-files:



-set-debug-mode:



-debug-obfuscation-check:



-setup:

[echo] Gathering info for something...

[setup] Android SDK Tools Revision 16

[setup] Project Target: Android 2.1

[setup] API level: 7

[setup]

[setup] ------------------

[setup] Resolving library dependencies:

[setup] No library dependencies.

[setup]

[setup] ------------------

[setup]

[setup] WARNING: No minSdkVersion value set. Application will install on all Android versions.



-build-setup:

[echo] Creating output directories if needed...



-pre-build:



-code-gen:

[echo] ----------

[echo] Handling aidl files...

[aidl] No AIDL files to compile.

[echo] ----------

[echo] Handling RenderScript files...

[renderscript] No RenderScript files to compile.

[echo] ----------

[echo] Handling Resources...

[aapt] No changed resources. R.java and Manifest.java untouched.



-pre-compile:



-compile:

[javac] Compiling 1 source file to /home/x/android/something/bin/classes



-post-compile:



-obfuscate:



-dex:

[dex] No new compiled code. No need to convert bytecode to dalvik format.



-crunch:

[crunch] Crunching PNG Files in source dir: /home/x/android/something/res

[crunch] To destination dir: /home/x/android/something/bin/res

[crunch] Crunched 0 PNG files to update cache



-package-resources:

[aapt] No changed resources or assets. something.ap_ remains untouched



-package:

[apkbuilder] No changes. No need to create apk.



-do-debug:

[zipalign] No changes. No need to run zip-align on the apk.

[echo] Debug Package: /home/x/android/something/bin/something-debug.apk



debug:

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop

[propertyfile] Updating property file: /home/x/android/something/bin/build.prop



install:

[echo] Installing /home/x/android/something/bin/something-debug.apk onto default emulator or device...

[exec] 88 KB/s (4410 bytes in 0.048s)

[exec] pkg: /data/local/tmp/something-debug.apk

[exec] Success



BUILD SUCCESSFUL

Total time: 3 seconds







Notice that the -dex , -package , and -debug steps all seem to think that I didn't change anything.



Source: Tips4all

Comments

  1. I was asking about this in #android-dev, apparently there is a bug in sdk r16 which breaks the and steps:

    21:25 < pfn> I have that exact problem with sdk r16
    21:25 < pfn> the answer is to delete classes.dex and yourapp-debug.apk
    before every ant debug

    Unfortunately this fix doesn't seem to work so it seems we're stuck with having a clean build each time.

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex