Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ant not rebuilding Android application with `ant debug install`

Tags:

android

ant

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.

like image 348
Snowball Avatar asked Dec 26 '11 09:12

Snowball


2 Answers

I've just downgraded to SDK r15 — there's no such bug in it.

Downloads are still there:
http://dl.google.com/android/android-sdk_r15-linux.tgz
http://dl.google.com/android/android-sdk_r15-windows.zip
http://dl.google.com/android/installer_r15-windows.exe
http://dl.google.com/android/android-sdk_r15-macosx.zip

Most relevant issue in android's bugtracker for SDK r16 bug:
http://code.google.com/p/android/issues/detail?id=23141

like image 144
Alex Lokk Avatar answered Oct 20 '22 22:10

Alex Lokk


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.

like image 34
brk3 Avatar answered Oct 20 '22 22:10

brk3