就像在问题中一样,我在使用Base64时遇到问题,不断出现错误
Failed resolution of: Ljava/util/Base64;
Didn't find class "java.util.Base64" on path:
DexPathList[[zip file "/data/app/com.app/base.apk"],
nativeLibraryDirectories=[/data/app/com.app/lib/x86,
/data/app/com.app/base.apk!/lib/x86,
/system/lib,
/vendor/lib]]
有导入
import android.util.Base64;
以及使用Base64的唯一代码
Log.d("appname", "BUFFER UTF8: " + Base64.decode(data, Base64.DEFAULT));
String signature = generator.sign(keyFile, Base64.decode(data, Base64.DEFAULT));
Log.d("appname", "Signature " + signature);
有什么主意吗?
更新。
在我的课堂上使用java.util.Base64
找到了一个导入的第三方库。 Idk接下来我该怎么做
答案 0 :(得分:0)
您要导入android的Base64,请检查rimport语句。 像这样更改代码:-
Log.d("appname", "BUFFER UTF8: " + Base64.decode(data, Base64.NO_WRAP));
String signature = generator.sign(keyFile, Base64.decode(data, Base64.NO_WRAP));
Log.d("appname", "Signature " + signature);
答案 1 :(得分:0)
您很可能在其他类中使用java.util.Base64
,或者您正在使用使用该类的第三方Java库。
所以:
在您的整个源代码库中搜索导入的java.util.Base64
。如果找到一个,请修复它。
再次检查logcat,看看它是否告诉您所依赖的类是错误的java.util.Base64
类。
如果以前的方法不能帮助您找到问题的根源,则可以尝试从项目的依赖关系树中的JAR中提取所有.class
文件,并通过{{1 }}来反编译代码,而javap
用于对该类的引用。 (也许有一种更优雅的方法可以做到这一点……)
我发现我班上一个导入的第三方库使用
grep
。我不知道下一步该怎么做。
使用java.util.Base64
的库不是为Android设计的,当然也不会在Android上经过测试。
您可以采取两种方法:
如果该库的源代码可用,则可以尝试移植到Android。将java.util.Base64
替换为java.util.Base64
,并替换其他在Android上不可用的类。构建,测试等等。
使用Google查看是否有人已经完成了移植工作。
如果没有源代码,或者如果移植库(以及维护端口)太难了,请寻找替代库。