Uso de jGit en un dispositivo Android

Estoy intentando ejecutar la biblioteca jGit en un dispositivo Android. Quiero crear un repository local.

Ese código está funcionando en PC:

File fRepositoryDir = new File("D:/My/jgittestrpo"); if (!fRepositoryDir.exists()) { fRepositoryDir.mkdirs(); } Repository localRepo; Git git; try { localRepo = new FileRepository(fRepositoryDir.getAbsolutePath() + "/.git"); localRepo.create(); } catch (Exception e) { e.printStackTrace(); } 

Ese mismo código en el dispositivo Android no funciona:

 File fRepositoryDir = new File(getFilesDir().getAbsolutePath() + File.separator + "repository"); //File fRepositoryDir = new File(Environment.getExternalStorageDirectory() + File.separator + "repository"); // Trying on sd card, not working too if (!fRepositoryDir.exists()) { fRepositoryDir.mkdirs(); } Repository localRepository; try { localRepository = new FileRepository(fRepositoryDir.getAbsolutePath() + File.separator + ".git"); //localRepository = new FileRepository("/data/data/com.examplecompany.gitexample/files/repository/.git"); // Trying to set repo folder directly localRepository.create(); } catch (Exception e) { e.printStackTrace(); } 

Excepción en el dispositivo Android:

 FATAL EXCEPTION: main Process: com.examplecompany.gitexample, PID: 2036 java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:3823) at android.view.View.performClick(View.java:4438) at android.view.View$PerformClick.run(View.java:18422) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at android.view.View$1.onClick(View.java:3818) ... 11 more Caused by: java.lang.VerifyError: org/eclipse/jgit/internal/storage/file/ObjectDirectory at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:221) at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:145) at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:159) at com.examplecompany.gitexample.MainActivity.onLoginClick(MainActivity.java:173) ... 14 more 

¿Dónde está el problema? ¿Puedo estar usando una biblioteca incorrecta?

Hay algunos clientes de Android para Git.

Aquí hay una list parcial de esas herramientas:

Otra aplicación del mercado:

¡Se puede hacer! Mire el código fuente de la aplicación agit que proporciona un git-client para Android.

No lo revisé de cerca, pero parece utilizar una versión parchada de JGit y una implementación diferente de la class Repository para evitar el acceso directo a files que no es posible en Android.

Y es probable que tenga algunas limitaciones, es decir, que no haya compromiso / escritura por ahora, pero al less puede mostrar cómo es posible el acceso básico y es probable que pueda desarrollarlo desde allí si necesita más funciones.