質問編集履歴
2
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
###発生している問題・エラーメッセージ
|
|
6
6
|
|
|
7
7
|
```
|
|
8
|
-
Java側で存在するはずのアルゴリズム名を指定しているのにNoSuchAlgorithmExceptionが出てしまう。
|
|
8
|
+
(済)Java側で存在するはずのアルゴリズム名を指定しているのにNoSuchAlgorithmExceptionが出てしまう。
|
|
9
9
|
C++側でJava側に正常に引数が渡せていない模様。
|
|
10
10
|
|
|
11
11
|
```
|
|
@@ -27,8 +27,16 @@
|
|
|
27
27
|
{
|
|
28
28
|
byte[] str_bytes = str.getBytes();
|
|
29
29
|
|
|
30
|
+
try
|
|
31
|
+
{
|
|
30
|
-
|
|
32
|
+
MessageDigest md = MessageDigest.getInstance("MD5");
|
|
31
|
-
|
|
33
|
+
hash = md.digest(str_bytes);
|
|
34
|
+
}
|
|
35
|
+
catch (NoSuchAlgorithmExpection e)
|
|
36
|
+
{
|
|
37
|
+
hash = new byte[1];
|
|
38
|
+
hash[0] = 0;
|
|
39
|
+
}
|
|
32
40
|
}
|
|
33
41
|
}
|
|
34
42
|
|
1
一部誤字修正。GetByteArrayElementsのisCopy引数に渡すためのjbooleanを追加。
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
###前提・実現したいこと
|
|
2
|
-
AndroidにおいてNativeActivityを使ったアプリ。
|
|
2
|
+
AndroidにおいてAndroid版DXライブラリとNativeActivityを使ったアプリ。
|
|
3
3
|
JNIを使って、MD5ハッシュを取得したい。
|
|
4
4
|
|
|
5
5
|
###発生している問題・エラーメッセージ
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
Java側で存在するはずのアルゴリズム名を指定しているのにNoSuchAlgorithmExceptionが出てしまう。
|
|
9
|
+
C++側でJava側に正常に引数が渡せていない模様。
|
|
10
|
+
|
|
9
11
|
```
|
|
10
12
|
|
|
11
13
|
###コード
|
|
@@ -37,6 +39,7 @@
|
|
|
37
39
|
```
|
|
38
40
|
bool MD5AR::CalculationMD5(const std::string& str)
|
|
39
41
|
{
|
|
42
|
+
//DXライブラリのANativeActivityを取得する関数
|
|
40
43
|
auto nativeactivity = GetNativeActivity();
|
|
41
44
|
JNIEnv* env;
|
|
42
45
|
|
|
@@ -45,17 +48,18 @@
|
|
|
45
48
|
//クラスオブジェクトを持ってくる
|
|
46
49
|
jclass jclass_(プロジェクト名) = env->GetObjectClass(nativeactivity->clazz);
|
|
47
50
|
|
|
48
|
-
jmethodID
|
|
51
|
+
jmethodID jmethodID_CalculationMD5 = env->GetMethodID(jclass_(プロジェクト名), "CauculationMD5", "(Ljava/lang/String;)V");
|
|
49
52
|
|
|
50
53
|
jstring jstr = env->NewStringUTF(str.c_str());
|
|
51
54
|
|
|
52
55
|
//MD5を計算
|
|
53
|
-
env->CallVoidMethod(nativeactivity->clazz,
|
|
56
|
+
env->CallVoidMethod(nativeactivity->clazz, jmethodID_CalculationMD5, jstr);
|
|
54
57
|
|
|
55
58
|
//計算されたMD5を持ってくる
|
|
56
59
|
jfieldID jfieldID_hash = env->GetFieldID(jclass_(プロジェクト名), "hash", "[B");
|
|
57
|
-
jbyteArray hasharr = (jbyteArray)env->GetObjectField(
|
|
60
|
+
jbyteArray hasharr = (jbyteArray)env->GetObjectField(nativeactivity->clazz, jfieldID_hash);
|
|
61
|
+
jboolean boolean;
|
|
58
|
-
auto hasharrptr = env->GetByteArrayElements(hasharr,
|
|
62
|
+
auto hasharrptr = env->GetByteArrayElements(hasharr, &boolean);
|
|
59
63
|
|
|
60
64
|
for (jsize i = 0, is = env->GetArrayLength(hasharr); i < is; i++)
|
|
61
65
|
{
|