java - 如何在颤振中添加 Java 依赖项?
问题描述
我正在研究 Java 中的一个函数,该函数负责为我的 API 生成一个 RSA 令牌。java人给出了以下要添加的依赖项
api 'io.jsonwebtoken:jjwt-api:0.11.2'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'
runtimeOnly('io.jsonwebtoken:jjwt-orgjson:0.11.2') {
exclude group: 'org.json', module: 'json' //provided by Android natively
}
但是在颤振中,您不能像在 pubspec.yaml 文件中那样添加它。
事实证明,还有另一种方法可以添加 github 文件的依赖项(经过我的研究),我找到了依赖项的 github 链接并将其添加到我的 pubspec 文件中,如下所示,在依赖项下,
dev_dependencies:
flutter_test:
sdk: flutter
plugin1:
git:
url: git://github.com/jwtk/jjwt.git
但是对于 git 文件 git://github.com/jwtk/jjwt.git,我收到以下错误pubspec 错误
我在 pub.dev 上搜索了任何等效依赖项,即 dart_json webtoken ,但这会引发以下错误:dart_jsonwebtoken 错误
基本上这是我生成令牌的 java 类。这里的 Jwts.builder() 除了一个适当的插件和我被卡住的地方:
import android.util.Log;
import java.security.GeneralSecurityException;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class RSAKeyGenerator {
private static PrivateKey getPrivateKey() throws GeneralSecurityException {
String pKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
KeyFactory kf = KeyFactory.getInstance("RSA");
byte[] decode;
decode = android.util.Base64.decode(pKey, android.util.Base64.DEFAULT);
PKCS8EncodedKeySpec keySpecPKCS8 = new PKCS8EncodedKeySpec(decode);
return kf.generatePrivate(keySpecPKCS8);
}
public static String getJwtToken() {
final long VALIDITY_MS = TimeUnit.MINUTES.toMillis(60);
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
Date exp = new Date(nowMillis + VALIDITY_MS);
PrivateKey privateKey = null;
try {
privateKey = getPrivateKey();
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
String jws = Jwts.builder()
.claim("version", "13")
.claim("user_id", "xxxxxxxxxxxxxxxxxxx")
.setIssuedAt(now)
.setExpiration(exp)
.signWith(privateKey, SignatureAlgorithm.RS256)
.setAudience("live-tv")
.compact();
Log.d("111__", jws);
SpUtil.Companion.getInstance().putString(J_TOKEN, jws);
return jws;
}
}
我在flutter中使用了另一个插件,但你不能在Java类中导入它,我也不确定那个插件。我的意思是在java类中导入'package:xxx.dart'会抛出一个错误。我该如何解决这个问题设想?
解决方案
您不能直接将 Java 库/类添加到 Flutter,或者反过来。Flutter 使用 Dart 而没有其他语言。
如果你想在 Android 上使用提供的 Java 代码,你必须自己构建一个 Flutter 插件。你可以在这里阅读如何做到这一点:https ://flutter.dev/docs/development/packages-and-plugins/developing-packages
但我怀疑你需要一个插件来生成 JWT,有很多处理 JWT 的包:https ://pub.dev/packages?q=jwt
关于您的依赖错误:
请下次发布堆栈跟踪,而不是屏幕截图。
dart_jsonwebtoken
使用crypto
比 Flutter 更旧版本的包。您可以尝试覆盖依赖项。
您可以在此处阅读有关一般依赖项和覆盖的信息:https ://dart.dev/tools/pub/dependencies
推荐阅读
- angular - 在 GitHub 页面上部署 Angular 项目
- python - 极小极大算法和跳棋游戏
- sfml - SFML 球员运动
- ios - Swift -Countdown Timer with Milliseconds 在 0 处停止,但显示还剩 1 秒
- c# - 我如何让光线投射破坏游戏对象
- java - 有没有办法将泛型类型作为类中的列表?
- laravel - 登录后的中间件
- javascript - 在 JavaScript 中使用“reduce”从另一个数组创建新数组
- ansible - 使用 ansible 在 2 个主机之间同步文件
- java - 未经检查地调用“continueWithTask....”作为原始类型的成员