三嗔 发表于 2013-8-13 11:19:43

有关Led演示程序的安装问题

我根据文档文档编写了led演示程序。通过SD卡安装LED.APK到TQ210开发版,可以正常运行。但是我把led.apk 直接copy到system/apps目录下,做成文件系统刷机,点击运行时提示“很抱歉,LED已停止运行”。
另外,我查了rootfs_dir下面的init.rc, 里面已经有一句 chmod 0777 /dev/led

TQ-lkp 发表于 2013-8-13 11:43:38

打开logcat报错时会有信息打印的
chmod 0777 /dev/led是为了led可以读写设备,这个没有影响

三嗔 发表于 2013-8-13 17:43:09

报错的信息是下面这段
I/ActivityManager( 2262): START {act=android.intent.action.MAIN cat= flg=0x10200000 cmp=com.embedsky.led/.LedActivity} from pid 3004
D/AudioHardware( 2157): AudioHardware pcm playback is exiting standby.
D/AudioHardware( 2157): openPcmOut_l() mPcmOpenCnt: 0
I/ActivityManager( 2262): Start proc com.embedsky.led for activity com.embedsky.led/.LedActivity: pid=3050 uid=10025 gids={}
I/PackageManager( 2262): Running dexopt on: com.embedsky.led
D/dalvikvm( 3062): DexOpt: load 8ms, verify+opt 29ms
D/OpenGLRenderer( 3004): Flushing caches (mode 1)
W/dalvikvm( 3050): No implementation found for native Landroid/hardware/LedService;.led_init ()Z
D/AndroidRuntime( 3050): Shutting down VM
W/dalvikvm( 3050): threadid=1: thread exiting with uncaught exception (group=0x40a371f8)
E/AndroidRuntime( 3050): FATAL EXCEPTION: main
E/AndroidRuntime( 3050): java.lang.UnsatisfiedLinkError: led_init
E/AndroidRuntime( 3050):      at android.hardware.LedService.led_init(Native Method)
E/AndroidRuntime( 3050):      at android.hardware.LedService.init(LedService.java:15)
E/AndroidRuntime( 3050):      at com.embedsky.led.LedActivity.onCreate(LedActivity.java:155)
E/AndroidRuntime( 3050):      at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime( 3050):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime( 3050):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
E/AndroidRuntime( 3050):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/AndroidRuntime( 3050):      at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/AndroidRuntime( 3050):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/AndroidRuntime( 3050):      at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3050):      at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 3050):      at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime( 3050):      at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3050):      at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 3050):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime( 3050):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime( 3050):      at dalvik.system.NativeStart.main(Native Method)

三嗔 发表于 2013-8-13 17:45:16

正常运行的是下面这段
I/ActivityManager( 2253): Start proc com.embedsky.led for activity com.embedsky.led/.LedActivity: pid=3075 uid=10052 gids={}
I/dalvikvm( 3075): Turning on JNI app bug workarounds for target SDK version 10...
D/OpenGLRenderer( 2818): Flushing caches (mode 1)
V/PhoneStatusBar( 2329): setLightsOn(true)
I/ActivityManager( 2253): Displayed com.embedsky.led/.LedActivity: +221ms

三嗔 发表于 2013-8-22 08:48:41

怎么贴上来后就没答下文了?

三嗔 发表于 2013-8-22 08:57:08

我自己试验,把demo程序LedService.cpp 中函数jint JNI_OnLoad(JavaVM* vm, void* reserved)中加入register_android_server_LedService(env); 就可以了。文档中有这么一句话:“如果采用直接调用libled.so”方法来操作LED设备,需要屏蔽。
难道把led.apk 直接copy到system/apps目录下,做成文件系统刷机就变成了直接调用?请介绍一下?
页: [1]
查看完整版本: 有关Led演示程序的安装问题