Another INSTALL_PARSE_FAILED_NO_CERTIFICATES ANDROID JDK 1.6

There seem to be lots of forum entries regarding android installation issues, unfortunately none of these have helped with my issue.

I am building with Corona Enterprise Trail build 2013.1076 on OS X 10.8.2 

java version “1.6.0_41”

Java™ SE Runtime Environment (build 1.6.0_41-b02-445-11M4107)

Java HotSpot™ 64-Bit Server VM (build 20.14-b01-445, mixed mode)

I cannot get the Sample apps to install and get the following exception.

W/PackageParser(  479): Exception reading lib/armeabi-v7a/libcorona.so in /data/app/vmdl1192117915.tmp

W/PackageParser(  479): java.lang.SecurityException: META-INF/MANIFEST.MF has invalid digest for lib/armeabi-v7a/libcorona.so in /data/app/vmdl1192117915.tmp

W/PackageParser(  479):     at java.util.jar.JarVerifier.invalidDigest(JarVerifier.java:131)

W/PackageParser(  479):     at java.util.jar.JarVerifier.access$100(JarVerifier.java:53)

W/PackageParser(  479):     at java.util.jar.JarVerifier$VerifierEntry.verify(JarVerifier.java:123)

W/PackageParser(  479):     at java.util.jar.JarFile$JarFileInputStream.read(JarFile.java:119)

W/PackageParser(  479):     at java.io.InputStream.read(InputStream.java:163)

W/PackageParser(  479):     at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)

W/PackageParser(  479):     at java.io.BufferedInputStream.read(BufferedInputStream.java:309)

W/PackageParser(  479):     at android.content.pm.PackageParser.loadCertificates(PackageParser.java:447)

W/PackageParser(  479):     at android.content.pm.PackageParser.collectCertificates(PackageParser.java:634)

W/PackageParser(  479):     at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:7841)

W/PackageParser(  479):     at com.android.server.pm.PackageManagerService.access$1900(PackageManagerService.java:172)

W/PackageParser(  479):     at com.android.server.pm.PackageManagerService$5.run(PackageManagerService.java:5990)

W/PackageParser(  479):     at android.os.Handler.handleCallback(Handler.java:725)

W/PackageParser(  479):     at android.os.Handler.dispatchMessage(Handler.java:92)

W/PackageParser(  479):     at android.os.Looper.loop(Looper.java:137)

W/PackageParser(  479):     at android.os.HandlerThread.run(HandlerThread.java:60)

E/PackageParser(  479): Package com.mycompany.extendingui has no certificates at entry lib/armeabi-v7a/libcorona.so; ignoring!

Can anyone help with this?

This error means that you have not digitally signed your app.  The Android SDK will not automatically sign your APK for you.  You have to do that yourself by following Google’s instructions documented here…

   http://developer.android.com/tools/publishing/app-signing.html

Joshua, other Android apps built with this identical environment using ant are signed and install without issue.

If you read the google documentation you will note the following

Ant Users

If you are using Ant to build your .apk file, debug signing mode is enabled by using the debug option with the antcommand (assuming that you are using a build.xml file generated by the android tool). When you run ant debug to compile your app, the build script generates a keystore/key and signs the APK for you. The script then also aligns the APK with the zipalign tool. No other action on your part is needed. Read Building and Running Apps on the Command Linefor more information.

In order to try and get the Corona Samples to build and install we have adapted the build.sh to call the debug target rather than the release target, the ant command in the build.sh is now as follows

ant debug -D"CoronaEnterpriseDir"="$CORONA_PATH"

The build output is as follows

 

-package:

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

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

The build here claims to be signing the app with the debug key. If we manually sign the APK with jar signer it makes no difference.

The next build target reports an issue

-post-package:

     [exec] Current OS is Mac OS X

     [exec] Setting environment variable: CORONA_APK_PATH=/Applications/CoronaEnterprise/Samples/ExtendingUI/android/bin/ExtendingUI-debug-unaligned.apk

     [exec] Setting environment variable: CORONA_RESOURCE_CAR_PATH=/Applications/CoronaEnterprise/Samples/ExtendingUI/android/assets

     [exec] Executing ‘…/…/…/Corona/mac/bin/CertifyBuild.sh’

     [exec] The ’ characters around the executable and arguments are

     [exec] not part of the command.

     [exec] Running app_sign for 

     [exec] USING TOOL_PATH: /Applications/CoronaEnterprise/Corona/mac/bin/CoronaBuilder.app/Contents/MacOS/CoronaBuilder

     [exec] Archive:  /Applications/CoronaEnterprise/Samples/ExtendingUI/android/bin/ExtendingUI-debug-unaligned.apk

     [exec]   inflating: /Applications/CoronaEnterprise/Samples/ExtendingUI/android/bin/lib/armeabi-v7a/libcorona.so  

     [exec] b102a169123e472b176d6ede02dee364   /Applications/CoronaEnterprise/Samples/ExtendingUI/android/assets/resource.car

     [exec] Replacing signature… done.

     [exec] updating: lib/armeabi-v7a/libcorona.so

     [exec]     zip warning: Local Entry CRC does not match CD: lib/armeabi-v7a/libcorona.so

     [exec]  

     [exec]     (in=1762336) (out=749771) (deflated 57%)

     [exec] total bytes=4892797, compressed=2000655 -> 59% savings

As you can see the Corona CertifyBuild.sh script is executing and issuing a warning on the libcorona.so which is the library causing the issue here. 

If we remove this call to CertifyBuild.sh we get an APK which installs without issue although it does not run. 

The fact remains that we can build any number of android apps and install them without issue in this development environment with these tools but any corona apps we build experience this signing issue with libcorona.so which is performed with the CoronaBuilder.

We have double checked, triple checked and more our installation and the Enterprise README. There is clearly an issue with this particular step of the build which is Corona specific. This may be some small oversight in the documentation or a quirk of our particular installation environment, the fact remains that we cannot install Corona Enterprise Built Apps due to a step in the build process which uses a Corona Tool. Any additional advice on building would be appreciated.

It appears building the debug version of an app with the corona build files doesn’t work. We were building in debug to troubleshoot installation issues. Building the release version and manually signing it results in an installable APK.

 

For an android build ‘ant debug’ should result in an installable APK signed with the debug key and this is not the case with the corona sample build files. Now we have isolated the issue we can easily fix this for our own android app builds.

 

I would suggest that the sample build files at least override the android ant debug target and exit displaying a message instructing the developer to use the release target and manually sign the jar file. 

Oh I see.  The issue is actually with your “-pre-build” and “-post-package” steps within your “build.xml” file.  As you can see in our sample’s “build.xml”, we have command line utilities to compile all of your Lua scripts into a single “resource.car” file and then copy all of your assets to your project’s “assets” directory.  In order for this to work, your “build.xml” needs to know where the Corona Enterprise directory is in order to access these command line tools.  That’s the “CoronaEnterpriseDir” ant property that you see referenced at the bottom of the “build.xml” file.

A simple solution for you is to actually set this property at the top of your “build.xml” file like this…

   <property CoronaEnterpriseDir="/Applications/CoronaEnterprise"/>

This way you can invoke “ant release” or “ant debug” at the command line and skip our example “build.sh”.  Our “build.sh” is just an example anyways, which shows you how to update an Android app/library project and do an ant build.  Many Corona Enterprise developers don’t use it.  In fact, some developers choose to build for Corona via Eclipse.

In any case, I’m glad you figured it out and got it working.

Thanks for your reply Joshua but you seem to have misunderstood the issue and that could be confusing to anyone else experiencing the issue and reading this thread. 
 
This is not an issue with the build.xml not having the CoronaEnterpriseDir set correctly, whether or not the build.sh is used or ant is run from the command line with the CoronaEnterpriseDir set.
 
When you say the issue is with “your -pre-build and -post-package” steps, these are not mine, these are the steps in the Corona Sample build.xml. 
 
Anyone building a sample application using the ant debug may experience this issue without making any changes to the build files provided with the sample.
 
Quite simply put if you build a corona android application with the ant debug target it will not install. 
 
Furthermore if you follow other topics with this error or the initial advice for manually signing the APK after the build it still will not install.
 
The issue is that when invoking the debug target the -post-package task which runs the CoronaBuilder runs after the packaged APK has been signed with the debug key. 
 
Since most developers building the samples will be new to Corona Enterprise the build files are misleading, IMO this should be fixed even though it is a minor issue and these are just examples. 
 
The 2 solutions to anyone who hits this issue are as follows
 
1. Don’t run the ant debug target, use ant release and manually sign the APK
 
2. If you want a debug APK and have based your build.xml on the samples paste this into the build.xml and also manually sign the APK. This will set up ant to build a debug APK but will not sign it.

 
 
    <target name="-set-debug-mode" depends="-setup">
        <!-- record the current build target -->
        <property name=“build.target” value=“debug” />
 
        <if>
            <condition>
                <and>
                    <istrue value="${project.is.testapp}" />
                    <istrue value="${emma.enabled}" />
                </and>
            </condition>
            <then>
                <property name=“build.is.instrumented” value=“true” />
            </then>
            <else>
                <property name=“build.is.instrumented” value=“false” />
            </else>
        </if>
 
        <!-- whether the build is a debug build. always set. -->
        <property name=“build.is.packaging.debug” value=“true” />
 
        <!-- signing mode: debug -->
        <property name=“build.is.signing.debug” value=“false” />
 
        <!-- Renderscript optimization level: none -->
        <property name=“renderscript.opt.level” value="${renderscript.debug.opt.level}" />
 
    </target>

Alternatively write your own build.xml, however that requires that you are past the sample stage anyway.

I didn’t misunderstand the problem.  It was a path issue issue in your “build.xml” file.  If you look at the bottom of the “build.sh” file in our sample project, notice that it sets an ant property which specifies the path to the Corona Enterprise directory.  It looks like this…

   ant release -D"CoronaEnterpriseDir"="$CORONA_PATH"

So, the reason bypassing our build script and running “ant debug” at the command line failed for you is because the above ant property was not set, causing the pre-build and post-build steps in the “build.xml” to fail.  The recommended solution is to add the path to the Corona Enterprise directory to your “build.xml” file.

And our sample build scripts *never* sign the APK.  I’m 100% positive of this.  It can’t because we don’t have a keystore to sign with.  That’s a post-build step that you have to implement.

Oh and one more thing.  If you are seeing the following error when doing an “ant debug” build…

>> com.android.sdklib.build.ApkCreationException: Debug Certificate expired

Then that indicates that your “~/.android/debug.keystore” has expired.  The Android SDK build system (not Corona) will automatically sign with that keystore when doing a debug build.  This of course means that the “debug.keystore” that the Android SDK automatically generated has expired.  The simplest solution is to delete that file yourself, which will make the Android SDK generate a new “debug.keystore” the next time you attempt to build a debug version.  This is not a Corona issue; just a nuance of the Android build system.

You can easily delete the default “debug.keystore” via the terminal as follows…

> rm ~/.android/debug.keystore

Joshua,

Thanks for the additional comments. Much of what you say is correct however I don’t have a problem with the build failing, it succeeds. I have no path issue arising in the corona sample build.xml when run ant debug. It builds an APK, that APK doesn’t install. That’s why I thought you had misunderstood me. My build succeeds at the command line, I always supply the CoronaEnterpriseDir as you do in the build.sh with the -D flag. I have not suggested the build fails, but you appear to think I have.

When I run the ant debug from the command line I supply the the CoronaEnterpriseDir (as you do in the build.sh), I have also edited the build.sh to run the debug target. I did this so that I would get a signed APK with the default generated debug.keystore. From the command line I am running with my Corona path.

ant debug -D"CoronaEnterpriseDir"="$CORONA_PATH"

Also regarding your statement - 

“And our sample build scripts *never* sign the APK.  I’m 100% positive of this.  It can’t because we don’t have a keystore to sign with.  That’s a post-build step that you have to implement.”

Yes, correct if you run the build.sh or ant release -D"CoronaEnterpriseDir"="$CORONA_PATH".

It is not the case if you run ant debug -D"CoronaEnterpriseDir"="$CORONA_PATH"

The ant debug target signs the APK as this is inherited from the Android SDK build.xml. As you rightly say 

“The Android SDK build system (not Corona) will automatically sign with that keystore when doing a debug build”

Which is somewhat contradictory to the previous comment (shown below) but I do see that you are making a distinction between the sample corona build.xml targets and those provided by the android build.

“And our sample build scripts *never* sign the APK.  I’m 100% positive of this.  It can’t because we don’t have a keystore to sign with”

I can see your point here but I disagree  that it  is not Corona, the sample builds inherit targets from the android build system and that makes them part of the Corona Sample Build.

As an android developer I frequently use the ant debug target when developing

Also I notice that the Corona Enterprise edition comes bundled with a debug.keystore that a developer can use, it can be found at

 $CORONA_ENTERPRISE_DIR/Corona/mac/bin/CoronaBuilder.app/Contents/Resources/debug.keystore

For clarity for anyone reading this post my issue was

Building the CoronaEnterprise samples with the ant debug target with the correct environment variables and paths set results in an APK which will not install.

If you are following this thread because you have encountered this issue under these conditions building the samples then

1. Don’t run the ant debug target, use ant release and manually sign the APK.
 
2. If you want a debug APK and have based your build.xml on the samples see the solution in a previous comment.

 

This error means that you have not digitally signed your app.  The Android SDK will not automatically sign your APK for you.  You have to do that yourself by following Google’s instructions documented here…

   http://developer.android.com/tools/publishing/app-signing.html

Joshua, other Android apps built with this identical environment using ant are signed and install without issue.

If you read the google documentation you will note the following

Ant Users

If you are using Ant to build your .apk file, debug signing mode is enabled by using the debug option with the antcommand (assuming that you are using a build.xml file generated by the android tool). When you run ant debug to compile your app, the build script generates a keystore/key and signs the APK for you. The script then also aligns the APK with the zipalign tool. No other action on your part is needed. Read Building and Running Apps on the Command Linefor more information.

In order to try and get the Corona Samples to build and install we have adapted the build.sh to call the debug target rather than the release target, the ant command in the build.sh is now as follows

ant debug -D"CoronaEnterpriseDir"="$CORONA_PATH"

The build output is as follows

 

-package:

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

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

The build here claims to be signing the app with the debug key. If we manually sign the APK with jar signer it makes no difference.

The next build target reports an issue

-post-package:

     [exec] Current OS is Mac OS X

     [exec] Setting environment variable: CORONA_APK_PATH=/Applications/CoronaEnterprise/Samples/ExtendingUI/android/bin/ExtendingUI-debug-unaligned.apk

     [exec] Setting environment variable: CORONA_RESOURCE_CAR_PATH=/Applications/CoronaEnterprise/Samples/ExtendingUI/android/assets

     [exec] Executing ‘…/…/…/Corona/mac/bin/CertifyBuild.sh’

     [exec] The ’ characters around the executable and arguments are

     [exec] not part of the command.

     [exec] Running app_sign for 

     [exec] USING TOOL_PATH: /Applications/CoronaEnterprise/Corona/mac/bin/CoronaBuilder.app/Contents/MacOS/CoronaBuilder

     [exec] Archive:  /Applications/CoronaEnterprise/Samples/ExtendingUI/android/bin/ExtendingUI-debug-unaligned.apk

     [exec]   inflating: /Applications/CoronaEnterprise/Samples/ExtendingUI/android/bin/lib/armeabi-v7a/libcorona.so  

     [exec] b102a169123e472b176d6ede02dee364   /Applications/CoronaEnterprise/Samples/ExtendingUI/android/assets/resource.car

     [exec] Replacing signature… done.

     [exec] updating: lib/armeabi-v7a/libcorona.so

     [exec]     zip warning: Local Entry CRC does not match CD: lib/armeabi-v7a/libcorona.so

     [exec]  

     [exec]     (in=1762336) (out=749771) (deflated 57%)

     [exec] total bytes=4892797, compressed=2000655 -> 59% savings

As you can see the Corona CertifyBuild.sh script is executing and issuing a warning on the libcorona.so which is the library causing the issue here. 

If we remove this call to CertifyBuild.sh we get an APK which installs without issue although it does not run. 

The fact remains that we can build any number of android apps and install them without issue in this development environment with these tools but any corona apps we build experience this signing issue with libcorona.so which is performed with the CoronaBuilder.

We have double checked, triple checked and more our installation and the Enterprise README. There is clearly an issue with this particular step of the build which is Corona specific. This may be some small oversight in the documentation or a quirk of our particular installation environment, the fact remains that we cannot install Corona Enterprise Built Apps due to a step in the build process which uses a Corona Tool. Any additional advice on building would be appreciated.

It appears building the debug version of an app with the corona build files doesn’t work. We were building in debug to troubleshoot installation issues. Building the release version and manually signing it results in an installable APK.

 

For an android build ‘ant debug’ should result in an installable APK signed with the debug key and this is not the case with the corona sample build files. Now we have isolated the issue we can easily fix this for our own android app builds.

 

I would suggest that the sample build files at least override the android ant debug target and exit displaying a message instructing the developer to use the release target and manually sign the jar file. 

Oh I see.  The issue is actually with your “-pre-build” and “-post-package” steps within your “build.xml” file.  As you can see in our sample’s “build.xml”, we have command line utilities to compile all of your Lua scripts into a single “resource.car” file and then copy all of your assets to your project’s “assets” directory.  In order for this to work, your “build.xml” needs to know where the Corona Enterprise directory is in order to access these command line tools.  That’s the “CoronaEnterpriseDir” ant property that you see referenced at the bottom of the “build.xml” file.

A simple solution for you is to actually set this property at the top of your “build.xml” file like this…

   <property CoronaEnterpriseDir="/Applications/CoronaEnterprise"/>

This way you can invoke “ant release” or “ant debug” at the command line and skip our example “build.sh”.  Our “build.sh” is just an example anyways, which shows you how to update an Android app/library project and do an ant build.  Many Corona Enterprise developers don’t use it.  In fact, some developers choose to build for Corona via Eclipse.

In any case, I’m glad you figured it out and got it working.

Thanks for your reply Joshua but you seem to have misunderstood the issue and that could be confusing to anyone else experiencing the issue and reading this thread. 
 
This is not an issue with the build.xml not having the CoronaEnterpriseDir set correctly, whether or not the build.sh is used or ant is run from the command line with the CoronaEnterpriseDir set.
 
When you say the issue is with “your -pre-build and -post-package” steps, these are not mine, these are the steps in the Corona Sample build.xml. 
 
Anyone building a sample application using the ant debug may experience this issue without making any changes to the build files provided with the sample.
 
Quite simply put if you build a corona android application with the ant debug target it will not install. 
 
Furthermore if you follow other topics with this error or the initial advice for manually signing the APK after the build it still will not install.
 
The issue is that when invoking the debug target the -post-package task which runs the CoronaBuilder runs after the packaged APK has been signed with the debug key. 
 
Since most developers building the samples will be new to Corona Enterprise the build files are misleading, IMO this should be fixed even though it is a minor issue and these are just examples. 
 
The 2 solutions to anyone who hits this issue are as follows
 
1. Don’t run the ant debug target, use ant release and manually sign the APK
 
2. If you want a debug APK and have based your build.xml on the samples paste this into the build.xml and also manually sign the APK. This will set up ant to build a debug APK but will not sign it.

 
 
    <target name="-set-debug-mode" depends="-setup">
        <!-- record the current build target -->
        <property name=“build.target” value=“debug” />
 
        <if>
            <condition>
                <and>
                    <istrue value="${project.is.testapp}" />
                    <istrue value="${emma.enabled}" />
                </and>
            </condition>
            <then>
                <property name=“build.is.instrumented” value=“true” />
            </then>
            <else>
                <property name=“build.is.instrumented” value=“false” />
            </else>
        </if>
 
        <!-- whether the build is a debug build. always set. -->
        <property name=“build.is.packaging.debug” value=“true” />
 
        <!-- signing mode: debug -->
        <property name=“build.is.signing.debug” value=“false” />
 
        <!-- Renderscript optimization level: none -->
        <property name=“renderscript.opt.level” value="${renderscript.debug.opt.level}" />
 
    </target>

Alternatively write your own build.xml, however that requires that you are past the sample stage anyway.

I didn’t misunderstand the problem.  It was a path issue issue in your “build.xml” file.  If you look at the bottom of the “build.sh” file in our sample project, notice that it sets an ant property which specifies the path to the Corona Enterprise directory.  It looks like this…

   ant release -D"CoronaEnterpriseDir"="$CORONA_PATH"

So, the reason bypassing our build script and running “ant debug” at the command line failed for you is because the above ant property was not set, causing the pre-build and post-build steps in the “build.xml” to fail.  The recommended solution is to add the path to the Corona Enterprise directory to your “build.xml” file.

And our sample build scripts *never* sign the APK.  I’m 100% positive of this.  It can’t because we don’t have a keystore to sign with.  That’s a post-build step that you have to implement.

Oh and one more thing.  If you are seeing the following error when doing an “ant debug” build…

>> com.android.sdklib.build.ApkCreationException: Debug Certificate expired

Then that indicates that your “~/.android/debug.keystore” has expired.  The Android SDK build system (not Corona) will automatically sign with that keystore when doing a debug build.  This of course means that the “debug.keystore” that the Android SDK automatically generated has expired.  The simplest solution is to delete that file yourself, which will make the Android SDK generate a new “debug.keystore” the next time you attempt to build a debug version.  This is not a Corona issue; just a nuance of the Android build system.

You can easily delete the default “debug.keystore” via the terminal as follows…

> rm ~/.android/debug.keystore

Joshua,

Thanks for the additional comments. Much of what you say is correct however I don’t have a problem with the build failing, it succeeds. I have no path issue arising in the corona sample build.xml when run ant debug. It builds an APK, that APK doesn’t install. That’s why I thought you had misunderstood me. My build succeeds at the command line, I always supply the CoronaEnterpriseDir as you do in the build.sh with the -D flag. I have not suggested the build fails, but you appear to think I have.

When I run the ant debug from the command line I supply the the CoronaEnterpriseDir (as you do in the build.sh), I have also edited the build.sh to run the debug target. I did this so that I would get a signed APK with the default generated debug.keystore. From the command line I am running with my Corona path.

ant debug -D"CoronaEnterpriseDir"="$CORONA_PATH"

Also regarding your statement - 

“And our sample build scripts *never* sign the APK.  I’m 100% positive of this.  It can’t because we don’t have a keystore to sign with.  That’s a post-build step that you have to implement.”

Yes, correct if you run the build.sh or ant release -D"CoronaEnterpriseDir"="$CORONA_PATH".

It is not the case if you run ant debug -D"CoronaEnterpriseDir"="$CORONA_PATH"

The ant debug target signs the APK as this is inherited from the Android SDK build.xml. As you rightly say 

“The Android SDK build system (not Corona) will automatically sign with that keystore when doing a debug build”

Which is somewhat contradictory to the previous comment (shown below) but I do see that you are making a distinction between the sample corona build.xml targets and those provided by the android build.

“And our sample build scripts *never* sign the APK.  I’m 100% positive of this.  It can’t because we don’t have a keystore to sign with”

I can see your point here but I disagree  that it  is not Corona, the sample builds inherit targets from the android build system and that makes them part of the Corona Sample Build.

As an android developer I frequently use the ant debug target when developing

Also I notice that the Corona Enterprise edition comes bundled with a debug.keystore that a developer can use, it can be found at

 $CORONA_ENTERPRISE_DIR/Corona/mac/bin/CoronaBuilder.app/Contents/Resources/debug.keystore

For clarity for anyone reading this post my issue was

Building the CoronaEnterprise samples with the ant debug target with the correct environment variables and paths set results in an APK which will not install.

If you are following this thread because you have encountered this issue under these conditions building the samples then

1. Don’t run the ant debug target, use ant release and manually sign the APK.
 
2. If you want a debug APK and have based your build.xml on the samples see the solution in a previous comment.

 

I have to add that although technically the build.xml included in the Corona samples doesn’t sign the generated apk, if you create a ant.properties file with the following contents:

key.store=/Users/username/your.keystore key.alias=yourkeyalias

the generated apk will be signed because, like martin.scott4 said, it inherits from the system’s Android Tools build.xml.

I also spent a few hours trying to figure out why my debug builds were failing only to find this thread. I also think that the samples should be fixed to work properly with debug builds.

I have to add that although technically the build.xml included in the Corona samples doesn’t sign the generated apk, if you create a ant.properties file with the following contents:

key.store=/Users/username/your.keystore key.alias=yourkeyalias

the generated apk will be signed because, like martin.scott4 said, it inherits from the system’s Android Tools build.xml.

I also spent a few hours trying to figure out why my debug builds were failing only to find this thread. I also think that the samples should be fixed to work properly with debug builds.

Wow – this problem still exists. It would help so much if just a little more love was given to the examples.