我一直在尝试将 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 的方法。