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));