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

时间:2019-07-15 11:27:25

标签: android android-studio github jgit

我一直试图将Jgit添加到我的android项目中以执行远程推送命令。我已经尝试过ajgit和许多其他工具,但它们都不支持“远程推送”。

我尝试将源代码的Jgit作为模块包括在内。遇到“ Android不支持的Lambda表达式”。放弃并从官方jgit网站下载了最新的jar库,并将其添加为外部库,并遇到以下错误。我想这是一个外部依赖问题。

请告知我如何包含Jgit或任何其他允许我对android studio项目进行“远程推送”的库,以便我可以继续进行项目的更好部分。 (使用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();
        }

在第,行返回错误

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)

1 个答案:

答案 0 :(得分:0)

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

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

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