Android——TV真机调试apk(android:sharedUserId="android.uid.system")

http://blog.csdn.net/jscese/article/details/12184513#comments   转载
当需要调试的apk 的AndroidManifest.xml中有使用  android:sharedUserId="android.uid.system" ,表示此apk和系统拥有相同的uid,可以共享系统资源,可以加入同一进程中。但是要使用eclipse编译adb安装调试安装 肯定会报错,如下:

[html] view plain copy
print?

    Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE  
    Please check logcat output for more details.  
    Launch canceled!  

 

 

关于android的签名机制,可以参考Android——编译release版签名系统。

因为eclipse生成的apk签名与system不同,android系统规定使用相同uid的必须拥有相同的签名。

        我所使用的方法是写一个脚本,在eclipse生成apk之后给这个apk重签名,然后再launch安装。


      step 1:配置签名环境

       拷贝 源码 /build/target/product/security/下的  platform.pk8 和 platform.x509.pem 到 out/host/linux-x86/framework、

在out/host/linux-x86/framework下执行:


[html] view plain copy
print?

    java -jar signapk.jar platform.x509.pem platform.pk8 $sourceapk $apkname  


$sourceapk为需要签名的apk路径,$apkname为签名成功之后的apk。


      step 2:调试配置

最好写一个shell脚本,执行上面的操作,在eclipse中做如下设置:

      1):编译直接生成apk


去掉 Skip packaging and dexing until export or launch.....

   2):配置eclipse external tool

          RUN——>External Tools——>External Tools Configurations  


new 一个program 选择写好的 signed 脚本

再在 window——>preferences——>General——>Key  配置快捷键 

F10 作为 clean-bulid   F11作为external tool  F12作为run debug 。

至此 OK~~

 

你可能感兴趣的:(Android——TV真机调试apk(android:sharedUserId="android.uid.system"))