{ "id": "60968", "key": "TIMOB-336", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2011-04-15T02:27:27.000+0000", "created": "2011-04-15T02:27:27.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "rseagraves", "key": "rseagraves", "displayName": "Reggie Seagraves", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-09T21:13:56.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "{html}

Hi,Donald Thorp
\nIn my develop programe,I want to use jni , use javah create .h\nfiles

\n

in my c files

\n

include \"com_android_jnitest_jnitest.h\"

\n

include <string.h>

\n

JNIEXPORT jstring JNICALL\nJava_com_android_jnitest_jnitest_fpathchange
\n(JNIEnv *env,jobject obj,jstring filename){

\n

//调用 java 类 tiros_files 中的\ngetPath() 方法

\n
\n  jclass cls =(*env)->FindClass(env,\"com/android/jnitest/tiros_files\");\n\n  // 这里传过来一个 private Context context = null Context \n\n  jmethodID cls_mid = (*env)->GetMethodID(env,cls,\"tr_java_fpathchange\",\"(Ljava/lang/String;)Ljava/lang/String;\");\n\n  jstring  str = (*env) ->CallObjectMethod(env, cls , cls_mid ,\"java/lang/String;\" );\n\n  return str;\n
\n

}

\n

In my java programe

\n
\npublic class jnitest extends Activity {\n\npublic String str = \"my love is liping!\" ;\n\npublic TextView tv = null ;\n\npublic Button  bt = null ;\n\nprivate tiros_files tf = null;\n\n/** Called when the activity is first created. */\n@Override\npublic void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.main);\n\n    tv = (TextView)this.findViewById(R.id.t1);\n    bt = (Button)this.findViewById(R.id.rb);\n\n    bt.setOnClickListener(btlistener);\n\n\n   tf = new tiros_files(this);\n\n}\n\nButton.OnClickListener  btlistener =new Button.OnClickListener(){\n\n    @Override\n    public void onClick(View v) {\n        // TODO Auto-generated method stub\n\n         tv.setText(\"\"+fpathchange(str));\n\n    }\n\n};\n\nstatic{\n\n    System.loadLibrary(\"jnitest\");\n\n}\n\n/**\n * \n * @param filename 文件名\n * @return 文件路径\n */\npublic native String fpathchange(String filename);\n
\n

}

\n

public class tiros_files {

\n
\nprivate Context context = null;\n\npublic tiros_files(Context cont){\n\n    this.context = cont;\n\n    Log.v(\"context\", \"init ok!\");\n\n}\n\n//获取文件路径\npublic  String tr_java_fpathchange(String filename){\n\n    Log.v(\"tr_java_fpathchange\", \"ok!\");\n\n    String filepath = null;\n\n    boolean is =filename.contains(\"$\");\n\n    if(is){\n\n        String substr = filename.substring(0, 2);\n\n        if(substr.equals(\"fs0\")){ //手机内部 /data/data/packagename/files/filename\n\n            String pakgename =context.getPackageName();\n\n            filepath =Environment.getDataDirectory()+\"/data/\"+pakgename+\"/files/\"+filename;\n\n        }\n        else if(substr.equals(\"fs1\")){ //  /sdcard/navidog/files/filename \n\n\n            filepath =Environment.getExternalStorageDirectory()+\"/navidog/files/\"+filename;\n        }\n        else{\n\n            return \"file path format is false\";\n\n        }\n    }\n\n    return filepath;\n}\n
\n

}

\n

Log cat :

\n

01-11 06:03:49.617: INFO/DEBUG(547): Build fingerprint:\n'generic/sdk/generic/:1.5/CUPCAKE/150240:eng/test-keys'
\n01-11 06:03:49.626: INFO/DEBUG(547): pid: 6093, tid: 6093\n>>> com.android.jnitest <<<
\n01-11 06:03:49.626: INFO/DEBUG(547): signal 11 (SIGSEGV), fault\naddr 000000ee
\n01-11 06:03:49.638: INFO/DEBUG(547): r0 000000e4 r1 41049a98 r2\n00000000 r3 43744ab8
\n01-11 06:03:49.638: INFO/DEBUG(547): r4 41684dda r5 41049aa8 r6\nbedbc5e0 r7 ad00e540
\n01-11 06:03:49.648: INFO/DEBUG(547): r8 000053f8 r9 00000000 10\n41049a84 fp 00000000
\n01-11 06:03:49.648: INFO/DEBUG(547): ip 00000006 sp bedbc5a0 lr\nad01236c pc ad013084 cpsr 00000010
\n01-11 06:03:49.748: INFO/DEBUG(547): #00 pc 00013084\n/system/lib/libdvm.so
\n01-11 06:03:49.757: INFO/DEBUG(547): #01 pc 00017b1c\n/system/lib/libdvm.so
\n01-11 06:03:49.766: INFO/DEBUG(547): #02 pc 00017560\n/system/lib/libdvm.so
\n01-11 06:03:49.779: INFO/DEBUG(547): #03 pc 00052268\n/system/lib/libdvm.so
\n01-11 06:03:49.787: INFO/DEBUG(547): #04 pc 000596ee\n/system/lib/libdvm.so
\n01-11 06:03:49.796: INFO/DEBUG(547): #05 pc 00013118\n/system/lib/libdvm.so
\n01-11 06:03:49.808: INFO/DEBUG(547): #06 pc 00017b1c\n/system/lib/libdvm.so
\n01-11 06:03:49.818: INFO/DEBUG(547): #07 pc 00017560\n/system/lib/libdvm.so
\n01-11 06:03:49.827: INFO/DEBUG(547): #08 pc 000520ec\n/system/lib/libdvm.so
\n01-11 06:03:49.836: INFO/DEBUG(547): #09 pc 0003f0f8\n/system/lib/libdvm.so
\n01-11 06:03:49.836: INFO/DEBUG(547): #10 pc 00031ac2\n/system/lib/libdvm.so
\n01-11 06:03:49.848: INFO/DEBUG(547): #11 pc 00028280\n/system/lib/libandroid_runtime.so
\n01-11 06:03:49.857: INFO/DEBUG(547): #12 pc 00028d7e\n/system/lib/libandroid_runtime.so
\n01-11 06:03:49.867: INFO/DEBUG(547): #13 pc 00008bf2\n/system/bin/app_process
\n01-11 06:03:49.867: INFO/DEBUG(547): #14 pc 0001fd22\n/system/lib/libc.so
\n01-11 06:03:49.876: INFO/DEBUG(547): #15 pc 0000bcb2\n/system/lib/libc.so
\n01-11 06:03:49.888: INFO/DEBUG(547): #16 pc b000157e\n/system/bin/linker
\n01-11 06:03:49.907: INFO/DEBUG(547): stack:
\n01-11 06:03:49.918: INFO/DEBUG(547): bedbc560 00000000
\n01-11 06:03:49.918: INFO/DEBUG(547): bedbc564 ad058c5b\n/system/lib/libdvm.so
\n01-11 06:03:49.918: INFO/DEBUG(547): bedbc568 00000002
\n01-11 06:03:49.918: INFO/DEBUG(547): bedbc56c 4000ca60
\n01-11 06:03:49.918: INFO/DEBUG(547): bedbc570 ad083e10
\n01-11 06:03:49.927: INFO/DEBUG(547): bedbc574 00000000
\n01-11 06:03:49.927: INFO/DEBUG(547): bedbc578 00000000
\n01-11 06:03:49.938: INFO/DEBUG(547): bedbc57c 00000000
\n01-11 06:03:49.938: INFO/DEBUG(547): bedbc580 afe0d920\n/system/lib/libc.so
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc584 bedbc5e0 [stack]
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc588 ad00e540\n/system/lib/libdvm.so
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc58c 41684bbe
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc590 41049a7c
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc594 bedbc5e0 [stack]
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc598 df002777
\n01-11 06:03:49.948: INFO/DEBUG(547): bedbc59c e3a070ad
\n01-11 06:03:49.967: INFO/DEBUG(547): #00 bedbc5a0\n43731360
\n01-11 06:03:49.967: INFO/DEBUG(547): bedbc5a4 41048200
\n01-11 06:03:49.977: INFO/DEBUG(547): bedbc5a8 bedbc5e0 [stack]
\n01-11 06:03:49.987: INFO/DEBUG(547): bedbc5ac ad017ac4\n/system/lib/libdvm.so
\n01-11 06:03:49.987: INFO/DEBUG(547): bedbc5b0 00000328
\n01-11 06:03:49.997: INFO/DEBUG(547): bedbc5b4 bedbc668 [stack]
\n01-11 06:03:49.997: INFO/DEBUG(547): bedbc5b8 0000bc60 [heap]
\n01-11 06:03:49.997: INFO/DEBUG(547): bedbc5bc 41049f04
\n01-11 06:03:49.997: INFO/DEBUG(547): bedbc5c0 00000000
\n01-11 06:03:49.997: INFO/DEBUG(547): bedbc5c4 ad017b20\n/system/lib/libdvm.so
\n01-11 06:03:49.997: INFO/DEBUG(547): #01 bedbc5c8\n400307a0
\n01-11 06:03:49.997: INFO/DEBUG(547): bedbc5cc 00000001
\n01-11 06:03:50.006: INFO/DEBUG(547): bedbc5d0 0000bc60 [heap]
\n01-11 06:03:50.006: INFO/DEBUG(547): bedbc5d4 ad017564\n/system/lib/libdvm.so
\n01-11 06:03:50.487: DEBUG/dalvikvm(617): GC freed 9285 objects /\n524376 bytes in 356ms
\n01-11 06:03:51.357: INFO/ActivityManager(577): Process\ncom.android.jnitest (pid 6093) has died.
\n01-11 06:03:51.376: INFO/WindowManager(577): WIN DEATH:\nWindow{43716278 com.android.jnitest/com.android.jnitest.jnitest\npaused=false}
\n01-11 06:03:51.598: WARN/InputManagerService(577): Got\nRemoteException sending setActive(false) notification to pid 6093\nuid 10034
\n01-11 06:03:51.637: DEBUG/Zygote(549): Process 6093 terminated by\nsignal (11)
\n01-11 06:19:23.288: DEBUG/dalvikvm(617): GC freed 9272 objects /\n524192 bytes in 132ms

{html}", "attachment": [], "flagged": false, "summary": "I met a problem ! who can help me?", "creator": { "name": "struggermen", "key": "struggermen", "displayName": "struggermen", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "struggermen", "key": "struggermen", "displayName": "struggermen", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "123118", "author": { "name": "thomashuelbert", "key": "thomashuelbert", "displayName": "Thomas Huelbert", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

housecleaning old bugs

{html}", "updateAuthor": { "name": "thomashuelbert", "key": "thomashuelbert", "displayName": "Thomas Huelbert", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T02:27:27.000+0000", "updated": "2011-04-15T02:27:27.000+0000" }, { "id": "410516", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as invalid.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-09T21:13:56.000+0000", "updated": "2017-03-09T21:13:56.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }