aboutsummaryrefslogtreecommitdiffstats
path: root/anttasks/src/com/android/ant/SignApkTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'anttasks/src/com/android/ant/SignApkTask.java')
-rw-r--r--anttasks/src/com/android/ant/SignApkTask.java147
1 files changed, 0 insertions, 147 deletions
diff --git a/anttasks/src/com/android/ant/SignApkTask.java b/anttasks/src/com/android/ant/SignApkTask.java
deleted file mode 100644
index 6c29d68..0000000
--- a/anttasks/src/com/android/ant/SignApkTask.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ant;
-
-import com.android.sdklib.internal.build.SignedJarBuilder;
-import com.android.sdklib.internal.build.SignedJarBuilder.IZipEntryFilter;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.Path;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.security.KeyStore;
-import java.security.KeyStore.PrivateKeyEntry;
-import java.security.cert.X509Certificate;
-
-/**
- * Simple Task to sign an apk.
- *
- */
-public class SignApkTask extends SingleInputOutputTask {
-
- private String mKeystore;
- private String mStorepass;
- private String mAlias;
- private String mKeypass;
-
- public void setKeystore(Path keystore) {
- mKeystore = TaskHelper.checkSinglePath("keystore", keystore);
- }
-
- public void setStorepass(String storepass) {
- mStorepass = storepass;
- }
-
- public void setAlias(String alias) {
- mAlias = alias;
- }
-
- public void setKeypass(String keypass) {
- mKeypass = keypass;
- }
-
- @Override
- protected void createOutput() throws BuildException {
- PrivateKeyEntry key = loadKeyEntry(
- mKeystore, null, mStorepass.toCharArray(),
- mAlias, mKeypass.toCharArray());
-
- if (key == null) {
- throw new BuildException(String.format("Signing key %s not found", mAlias));
- }
-
- SignedJarBuilder mBuilder = null;
- try {
- mBuilder = new SignedJarBuilder(
- new FileOutputStream(getOutput(), false /* append */),
- key.getPrivateKey(), (X509Certificate) key.getCertificate());
-
- mBuilder.writeZip(new FileInputStream(getInput()), new NullZipFilter());
-
- mBuilder.close();
- } catch (FileNotFoundException e) {
- throw new BuildException(String.format("Keystore '%s' is not found!", mKeystore));
- } catch (Exception e) {
- throw new BuildException(e.getMessage());
- } finally {
- if (mBuilder != null) {
- mBuilder.cleanUp();
- }
- }
- }
-
- /**
- * Loads the debug key from the keystore.
- * @param osKeyStorePath the OS path to the keystore.
- * @param storeType an optional keystore type, or <code>null</code> if the default is to
- * be used.
- * @return <code>true</code> if success, <code>false</code> if the keystore does not exist.
- */
- private PrivateKeyEntry loadKeyEntry(String osKeyStorePath, String storeType,
- char[] storePassword, String alias, char[] aliasPassword) {
- FileInputStream fis = null;
- try {
- KeyStore keyStore = KeyStore.getInstance(
- storeType != null ? storeType : KeyStore.getDefaultType());
- fis = new FileInputStream(osKeyStorePath);
- keyStore.load(fis, storePassword);
- return (KeyStore.PrivateKeyEntry)keyStore.getEntry(
- alias, new KeyStore.PasswordProtection(aliasPassword));
- } catch (Exception e) {
- String msg = e.getMessage();
- String causeMsg = null;
-
- Throwable cause = e.getCause();
- if (cause != null) {
- causeMsg = cause.getMessage();
- }
-
- if (msg != null) {
- if (causeMsg == null) {
- throw new BuildException(msg);
- } else {
- throw new BuildException(msg + ": " + causeMsg);
- }
- } else {
- if (causeMsg == null) {
- throw new BuildException(e);
- } else {
- throw new BuildException(causeMsg);
- }
- }
- } finally {
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException e) {
- // pass
- }
- }
- }
- }
-
- private final static class NullZipFilter implements IZipEntryFilter {
-
- @Override
- public boolean checkEntry(String archivePath) throws ZipAbortException {
- return true;
- }
- }
-}