如何将 Jgit 添加到您的 Android 项目中?

How to add Jgit to your Android project?

我一直在尝试将 Jgit 添加到我的 android 项目中以执行远程推送命令。我已经尝试过 ajgit 和其他许多人,其中 none 支持 "remote push"。

我试过将来自源代码的 Jgit 作为一个模块包含在内。遇到"Lambda expressions not supported in Android"。放弃并从官方 jgit 站点下载最新的 jar 库并将其添加为外部库并遇到以下错误。我想这是一个外部依赖问题。

请告诉我如何将 Jgit 或任何其他允许我在我的 android 工作室项目中执行 "remote pushes" 的库包括在内,以便我可以继续我的项目的更好部分。 (使用 Maven 或其他......我需要的是一个快速的解决方案,因为我的工作由于这次挫折而停止)

提前致谢。

我要执行的代码:

try{
            String httpUrl = "https://github.com/repo/branch";
            String localPath = "/sdcard/Folder1/folder2";
            Log.d("GIT","1");
            Repository localRepo = new FileRepository(localPath);
            Log.d("GIT","2");
            Git git = new Git(localRepo);
            Log.d("GIT","3");


            // add remote repo:
            RemoteAddCommand remoteAddCommand = git.remoteAdd();
            remoteAddCommand.setName("origin");
            remoteAddCommand.setUri(new URIish(httpUrl));
            // you can add more settings here if needed
            remoteAddCommand.call();

            // push to remote:
            PushCommand pushCommand = git.push();
            pushCommand.setCredentialsProvider(new UsernamePasswordCredentialsProvider("username", "password"));
            // you can add more settings here if needed
            pushCommand.call();

        }catch (Exception ex){
            imessage += "/n"+ex.getMessage();
        }

第 returns 行错误,

Repository localRepo = new FileRepository(localPath);


E/AndroidRuntime: FATAL EXCEPTION: Thread-4
    Process: com.crimson.studio.Ruby.Ui, PID: 3847
    java.lang.BootstrapMethodError: Exception from call site #145 bootstrap method
        at org.eclipse.jgit.util.SystemReader.getOsName(SystemReader.java:372)
        at org.eclipse.jgit.util.SystemReader.isWindows(SystemReader.java:350)
        at org.eclipse.jgit.util.SystemReader.setPlatformChecker(SystemReader.java:197)
        at org.eclipse.jgit.util.SystemReader.init(SystemReader.java:187)
        at org.eclipse.jgit.util.SystemReader.<clinit>(SystemReader.java:83)
        at org.eclipse.jgit.util.SystemReader.getInstance(SystemReader.java:160)
        at org.eclipse.jgit.util.FS$FSFactory.detect(FS.java:131)
        at org.eclipse.jgit.util.FS.detect(FS.java:306)
        at org.eclipse.jgit.util.FS.detect(FS.java:279)
        at org.eclipse.jgit.util.FS.<clinit>(FS.java:269)
        at org.eclipse.jgit.lib.BaseRepositoryBuilder.setupWorkTree(BaseRepositoryBuilder.java:657)
        at org.eclipse.jgit.lib.BaseRepositoryBuilder.setup(BaseRepositoryBuilder.java:589)
        at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:151)
        at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:165)
        at com.crimson.studio.Ruby.VulkanActivity.showAlert(VulkanActivity.java:58)
     Caused by: java.lang.ClassCastException: Bootstrap method returned null
        at org.eclipse.jgit.util.SystemReader.getOsName(SystemReader.java:372) 
        at org.eclipse.jgit.util.SystemReader.isWindows(SystemReader.java:350) 
        at org.eclipse.jgit.util.SystemReader.setPlatformChecker(SystemReader.java:197) 
        at org.eclipse.jgit.util.SystemReader.init(SystemReader.java:187) 
        at org.eclipse.jgit.util.SystemReader.<clinit>(SystemReader.java:83) 
        at org.eclipse.jgit.util.SystemReader.getInstance(SystemReader.java:160) 
        at org.eclipse.jgit.util.FS$FSFactory.detect(FS.java:131) 
        at org.eclipse.jgit.util.FS.detect(FS.java:306) 
        at org.eclipse.jgit.util.FS.detect(FS.java:279) 
        at org.eclipse.jgit.util.FS.<clinit>(FS.java:269) 
        at org.eclipse.jgit.lib.BaseRepositoryBuilder.setupWorkTree(BaseRepositoryBuilder.java:657) 
        at org.eclipse.jgit.lib.BaseRepositoryBuilder.setup(BaseRepositoryBuilder.java:589) 
        at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:151) 
        at org.eclipse.jgit.internal.storage.file.FileRepository.<init>(FileRepository.java:165) 
        at com.crimson.studio.Ruby.VulkanActivity.showAlert(VulkanActivity.java:58)

似乎 JGit 不是为在 Android 上使用而构建的,因此在启动期间会导致一些更深层次的问题。

Android 有一些现有的 Git 客户端应用程序,参见例如https://www.hongkiat.com/blog/guide-to-using-git-on-android/ and https://livablesoftware.com/mobile-apps-git-github-android-iphone/,但它们提供了一个单独的应用程序,用于在 Android 上使用 Git,而不是要包含在您的项目中的库。

我只找到 https://github.com/rtyley/agit,它提供了在 Android 上使用 Git 的源代码,虽然它有一段时间没有维护了,但你仍然可以提取一个在您的应用程序中使用 Git 的方式。