From 0c039a6b5e173f44c206cd4ec16fc9623549c46e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 17:01:15 -0400 Subject: [PATCH] make writeIndexJar() call writeIndexXML(): only create signed repos! There is no longer a reason to expose writeIndexXML() since FDroid should always generate a signed repo. So make writeIndexXML() be called as part of writeIndexJar(). --- res/values/strings.xml | 2 +- .../fdroid/localrepo/LocalRepoManager.java | 19 ++++++++++++++----- .../fdroid/views/LocalRepoActivity.java | 2 -- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 3dbbbd937..f523a3cb5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -177,8 +177,8 @@ Update Repo Deleting current repo… Adding %s to repo… - Writing raw index file (index.xml)… Writing signed index file (index.jar)… + Failed to create the repo index! Linking APKs into the repo… Copying app icons into the repo… Finished updating local repo diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 86ab0bcfd..1aef45b92 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -15,10 +15,9 @@ import android.graphics.drawable.Drawable; import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; +import android.widget.Toast; -import org.fdroid.fdroid.Hasher; -import org.fdroid.fdroid.Preferences; -import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.*; import org.fdroid.fdroid.data.App; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -33,7 +32,9 @@ import java.util.jar.JarOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; @@ -66,7 +67,7 @@ public class LocalRepoManager { private static LocalRepoManager localRepoManager; public static LocalRepoManager get(Context context) { - if(localRepoManager == null) + if (localRepoManager == null) localRepoManager = new LocalRepoManager(context); return localRepoManager; } @@ -276,7 +277,7 @@ public class LocalRepoManager { // TODO this needs to be ported to < android-8 @TargetApi(8) - public void writeIndexXML() throws Exception { + private void writeIndexXML() throws TransformerException, ParserConfigurationException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); @@ -436,6 +437,14 @@ public class LocalRepoManager { } public void writeIndexJar() throws IOException { + try { + writeIndexXML(); + } catch (Exception e) { + Toast.makeText(context, R.string.failed_to_create_index, Toast.LENGTH_LONG).show(); + e.printStackTrace(); + return; + } + BufferedOutputStream bo = new BufferedOutputStream( new FileOutputStream(xmlIndexJarUnsigned)); JarOutputStream jo = new JarOutputStream(bo); diff --git a/src/org/fdroid/fdroid/views/LocalRepoActivity.java b/src/org/fdroid/fdroid/views/LocalRepoActivity.java index 554916b75..8bb5582aa 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -300,8 +300,6 @@ public class LocalRepoActivity extends Activity { lrm.addApp(getApplicationContext(), app); } lrm.writeIndexPage(sharingUri.toString()); - publishProgress(getString(R.string.writing_index_xml)); - lrm.writeIndexXML(); publishProgress(getString(R.string.writing_index_jar)); lrm.writeIndexJar(); publishProgress(getString(R.string.linking_apks));