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



我一直在尝试将 Jgit 添加到我的 android 项目中以执行远程推送命令。 我尝试过 Ajgit 和许多其他人,但没有一个支持"远程推送"。

我尝试将源代码中的 Jgit 作为模块包含在内。 遇到"安卓不支持的 Lambda 表达式"。 放弃了这一点,并从官方 JGIT 站点下载了最新的 JAR 库,并将其添加为外部库,并遇到了以下错误。 我想这是一个外部依赖问题。

请告诉我如何包含 Jgit 或任何其他允许我在 android 工作室项目中执行"远程推送"的库,以便我可以继续我的项目的大部分。(使用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)

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 的方法。

最新更新