我一直试图将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)
答案 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的方式。