2016-05-31 7 views
-3

このJavaコードをcまたはC++に変更してandroid JNIで使用したいとします。 どのようにすればいいですか?また、java paramsマップまたはJavaオブジェクトの使用方法JavaコードをCまたはC++コードに変更してAndroid JNIで使用する方法

今、私は新しい質問があります。私は.hファイルを作成できます.soライブラリを作成して簡単に作成できます。文字列 "hello world!"を表示するが、このJavaコードをCまたはC++のコードに変更してandroid JNIのコードを誰かがCまたはC++のコードを私に渡すことができる。 + cを制御し、+ vを使いやすくする!ありがとう、非常にマッチ!

/** 
* 获取签名值 
* 
* @param secretKey 
* @param params 
*   请求参数 
* @return 
*/ 
private static String getSign(String secretKey, Map<String, String[]> params) { 

    String[] keys = params.keySet().toArray(new String[0]); 
    Arrays.sort(keys); 

    StringBuilder query = new StringBuilder(); 
    for (String key : keys) { 
     if (!"sign".equals(key)) { 
      String[] value = params.get(key); 
      query.append(key); 
      for (String string : value) { 
       query.append(string); 
      } 
     } 

    } 
    return MD5(secretKey + query.toString()); 
} 

public static String MD5(String str) { 

    try { 
     MessageDigest m = MessageDigest.getInstance("MD5"); 
     m.reset(); 
     m.update(str.getBytes("UTF-8")); 
     BigInteger bigInt = new BigInteger(1, m.digest()); 
     String hashtext = bigInt.toString(16); 

     while (hashtext.length() < 32) { 
      hashtext = "0" + hashtext; 
     } 
     return hashtext; 

    } catch (Exception e) { 
     throw new RuntimeException("MD5 init failed.", e); 
    } 
} 

答えて

0

質問はファジーの一種であるので、私はいくつかの粗いを与えることができます:

ありhttps://bitbucket.org/arnetheduck/j2c のようなツールを持つC++へのjavaを変換するために、いくつかのアプローチがある。しかし、それはちょうどに良いアイデアかもしれませんあなたのJavaファイルをクローンし、手でそれらを適応させる。ブースの言語はそれほど変わらないので、あなたはコントロールを保持します。 JNI/NDKについては

だけでSTLを使用するなど、私はあなたのskillevelを知らないが、あなたはリストのhttps://www.sitepoint.com/using-c-and-c-code-in-an-android-app-with-the-ndk/

を見てみたいかもしれません、地図。その信頼性があり、人類の始まり以来働いています

+0

申し訳ありませんが、私の英語は非常に貧しいです。私は質問を編集し、詳細を追加します、あなたはそれが何かを見ることができますか?それを行う方法がわかっていれば教えてください。 –

1

短い答え:あなたは手でそれを変換する必要があります。

  • 読むと、Javaコードに
  • 書き込みCまたはC++のコードを理解しています。

JavaコードをCまたはC++に変換して効率的なコードを生成するツールはほとんどありません。すなわち、あなた自身が書いたコードとパフォーマンスが匹敵するコード。 JNIを使​​用するポイントは、パフォーマンスを最適化するために(私が前もって仮定している)...非効率なC/C++を提供するツールは無意味です。

+0

申し訳ありませんが、私の英語は非常に貧しいです。私は質問を編集し、詳細を追加します、あなたはそれが何かを見ることができますか?あなたがそれを行う方法を知ることができれば、教えてください。 –

関連する問題