I write some code by c language and build it for arm platform - imx51.
I can run this file under command line like this.

start machine.
adb push ./hello /
adb shell
./hello

and I can see the following information
Hello World!

I write some code on JNI.

#include <jni.h>
#include <stdlib.h>
#include <unistd.h>
#include <utils/Log.h>

JNIEXPORT void JNICALL
Java_rtk_main_atp_BrakeDetect_RunJniBrakeDetect(JNIEnv *env, jobject
jobj)
{
        int ret = execv("/hello", (char *)NULL);

        char buff[100];
        memset(buff, 0, sizeof(100));
        sprintf(buff, "[libhello] Hello %d \n", ret );
        LOGD( buff );

}

but it must have something wrong, because I can't get any result from
logcat.

I got follow message
AndroidRuntime( 2688):
D/AndroidRuntime( 2688): >>>>>>>>>>>>>> AndroidRuntime START
<<<<<<<<<<<<<<
D/AndroidRuntime( 2688): CheckJNI is OFF
D/dalvikvm( 2688): creating instr width table
D/AndroidRuntime( 2688): --- registering native functions ---
I/ActivityManager( 2136): Start proc com.android.defcontainer for
service com.android.defcontainer/.DefaultContainerService: pid=2696
uid=10013 gids={1015, 2001}
D/dalvikvm( 2696): GC_EXPLICIT freed 742 objects / 54664 bytes in
53ms
D/PackageParser( 2136): Scanning package: /data/app/vmdl13306.tmp
D/dalvikvm( 2136): GC_FOR_MALLOC freed 6299 objects / 286008 bytes in
105ms
I/PackageManager( 2136): Removing non-system package:rtk.main.atp
I/ActivityManager( 2136): Force stopping package rtk.main.atp
uid=10034
D/dalvikvm( 2136): GC_FOR_MALLOC freed 1619 objects / 115552 bytes in
104ms
D/PackageManager( 2136): Scanning package rtk.main.atp
I/PackageManager( 2136): /data/app/rtk.main.atp-2.apk changed;
unpacking
I/PackageManager( 2136): Package rtk.main.atp codePath changed from /
data/app/rtk.main.atp-1.apk to /data/app/rtk.main.atp-2.apk; Retaining
data and using new
D/installd( 2069): DexInv: --- BEGIN '/data/app/rtk.main.atp-2.apk'
---
D/dalvikvm( 2718): creating instr width table
D/dalvikvm( 2718): DexOpt: load 14ms, verify 6ms, opt 0ms
D/installd( 2069): DexInv: --- END '/data/app/
rtk.main.atp-2.apk' (success) ---
D/PackageManager( 2136):   Activities: rtk.main.atp.BrakeDetect
I/ActivityManager( 2136): Force stopping package rtk.main.atp
uid=10034
W/PackageManager( 2136): Code path for pkg : rtk.main.atp changing
from /data/app/rtk.main.atp-1.apk to /data/app/rtk.main.atp-2.apk
W/PackageManager( 2136): Resource path for pkg : rtk.main.atp changing
from /data/app/rtk.main.atp-1.apk to /data/app/rtk.main.atp-2.apk
D/dalvikvm( 2136): GC_FOR_MALLOC freed 1695 objects / 115832 bytes in
96ms
I/installd( 2069): move /data/dalvik-cache/
d...@app@rtk.main.atp-2....@classes.dex -> /data/dalvik-cache/
d...@app@rtk.main.atp-2....@classes.dex
D/PackageManager( 2136): New package installed in /data/app/
rtk.main.atp-2.apk
D/dalvikvm( 2136): GC_FOR_MALLOC freed 1253 objects / 92008 bytes in
100ms
I/ActivityManager( 2136): Force stopping package rtk.main.atp
uid=10034
D/dalvikvm( 2296): GC_EXPLICIT freed 3866 objects / 240360 bytes in
104ms
W/RecognitionManagerService( 2136): no available voice recognition
services found
D/dalvikvm( 2136): GC_FOR_MALLOC freed 1961 objects / 121864 bytes in
117ms
I/ActivityManager( 2136): Start proc com.svox.pico for broadcast
com.svox.pico/.VoiceDataInstallerReceiver: pid=2720 uid=10014 gids={}
D/dalvikvm( 2136): GC_EXPLICIT freed 412 objects / 21232 bytes in
81ms
I/ActivityThread( 2720): Publishing provider
com.svox.pico.providers.SettingsProvider:
com.svox.pico.providers.SettingsProvider
I/installd( 2069): unlink /data/dalvik-cache/
d...@app@rtk.main.atp-1....@classes.dex
D/AndroidRuntime( 2688): Shutting down VM
D/jdwp    ( 2688): Got wake-up signal, bailing out of select
D/dalvikvm( 2688): Debugger has detached; object registry had 1
entries
D/AndroidRuntime( 2731):
D/AndroidRuntime( 2731): >>>>>>>>>>>>>> AndroidRuntime START
<<<<<<<<<<<<<<
D/AndroidRuntime( 2731): CheckJNI is OFF
D/dalvikvm( 2731): creating instr width table
D/AndroidRuntime( 2731): --- registering native functions ---
I/ActivityManager( 2136): Starting activity: Intent
{ act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] flg=0x10000000
cmp=rtk.main.atp/.BrakeDetect }
D/AndroidRuntime( 2731): Shutting down VM
D/jdwp    ( 2731): Got wake-up signal, bailing out of select
D/dalvikvm( 2731): Debugger has detached; object registry had 1
entries
I/ActivityManager( 2136): Start proc rtk.main.atp for activity
rtk.main.atp/.BrakeDetect: pid=2749 uid=10034 gids={}
D/dalvikvm( 2749): No JNI_OnLoad found in /system/lib/
libBrakeDetect.so 0x46123a68, skipping init
I/ActivityManager( 2136): Process rtk.main.atp (pid 2749) has died.
I/ActivityManager( 2136): Displayed activity android/
com.android.internal.app.ResolverA

after I modify some code under JNI

#include <jni.h>
#include <stdlib.h>
#include <unistd.h>
#include <utils/Log.h>

JNIEXPORT void JNICALL
Java_rtk_main_atp_BrakeDetect_RunJniBrakeDetect(JNIEnv *env, jobject
jobj)
{
        int ret = 55;//execv("/hello", (char *)NULL); //fail


        char buff[100];
        memset(buff, 0, sizeof(100));
        sprintf(buff, "[libhello] Hello %d \n", ret );
        LOGD( buff );

}

I got follow message.

D/AndroidRuntime( 2819):
D/AndroidRuntime( 2819): >>>>>>>>>>>>>> AndroidRuntime START
<<<<<<<<<<<<<<
D/AndroidRuntime( 2819): CheckJNI is OFF
D/dalvikvm( 2819): creating instr width table
D/AndroidRuntime( 2819): --- registering native functions ---
I/ActivityManager( 2136): Starting activity: Intent
{ act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] flg=0x10000000
cmp=rtk.main.atp/.BrakeDetect }
D/AndroidRuntime( 2819): Shutting down VM
I/ActivityManager( 2136): Start proc rtk.main.atp for activity
rtk.main.atp/.BrakeDetect: pid=2828 uid=10034 gids={}
D/dalvikvm( 2819): Debugger has detached; object registry had 1
entries
D/dalvikvm( 2828): No JNI_OnLoad found in /system/lib/
libBrakeDetect.so 0x46123a68, skipping init
D/        ( 2828): [libhello] Hello 55
I/ActivityManager( 2136): Displayed activity
rtk.main.atp/.BrakeDetect: 335 ms (total 335 ms)
init: starting 'ril-daemon'
- Show quoted text -

and can get the message - "Hello 55" that I want to print to logcat.

Something wrong with execv function?
or
Does anyone know how to launch executable file under JNI level?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to