adb shell ok的话 。
 直接 1、adb remount  
      2、 adb push XXX.apk(绝对路径)  /system/app  这样就可以了啊。

解决方案 »

  1.   

    你的意思就是
       1. $ adb push SecureSetting.apk /sdcard/  // 上传要安装的文件,为安装做准备。  
       2. $ adb shell  
       3. $ su // 切换到 root 用户。如果没有获得 Root 权限,这一步不会成功。  
       4. # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 让分区可写。  
       5. # cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk // 这一步可以用 cp 实现,但一般设备中没有包含该命令。如果使用 mv 会出现错误:failed on '/sdcard/NetWork.apk' - Cross-device link。   
       6. # mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 还原分区属性,只读。  
       7. # exit  
       8. $ exit 
    这个不对是吗?
      

  2.   

    你的意思是
      1. $ adb push SecureSetting.apk /sdcard/  // 上传要安装的文件,为安装做准备。  
      这个不对吗?
      

  3.   

    主要是需要root权限。。没有root不行的
      

  4.   

    root权限手机是有了 但是我按照网上那个做出来 没有反应 不知道错在哪里
      

  5.   

    我把代码贴出来嘛
    package com.sfer.install;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;public final class RootCmd {
    // 执行linux命令并且输出结果
    protected static String execRootCmd(String paramString) {
    String result = "result : ";
    try {
    Process localProcess = Runtime.getRuntime().exec("su ");// 经过Root处理的android系统即有su命令
    OutputStream localOutputStream = localProcess.getOutputStream();
    DataOutputStream localDataOutputStream = new DataOutputStream(
    localOutputStream);
    InputStream localInputStream = localProcess.getInputStream();
    DataInputStream localDataInputStream = new DataInputStream(
    localInputStream);
    String str1 = String.valueOf(paramString);
    String str2 = str1 + "\n";
    localDataOutputStream.writeBytes(str2);
    localDataOutputStream.flush();
    String str3 = null;
    // while ((str3 = localDataInputStream.readLine()) != null) {
    // Log.d("result", str3);
    // }
    localDataOutputStream.writeBytes("exit\n");
    localDataOutputStream.flush();
    localProcess.waitFor();
    return result;
    } catch (Exception localException) {
    localException.printStackTrace();
    return result;
    }
    } // 执行linux命令但不关注结果输出
    protected static int execRootCmdSilent(String paramString) {
    try {
    Process localProcess = Runtime.getRuntime().exec("su");
    Object localObject = localProcess.getOutputStream();
    DataOutputStream localDataOutputStream = new DataOutputStream(
    (OutputStream) localObject);
    String str = String.valueOf(paramString);
    localObject = str + "\n";
    localDataOutputStream.writeBytes((String) localObject);
    localDataOutputStream.flush();
    localDataOutputStream.writeBytes("exit\n");
    localDataOutputStream.flush();
    localProcess.waitFor();
    int result = localProcess.exitValue();
    return (Integer) result;
    } catch (Exception localException) {
    localException.printStackTrace();
    return -1;
    }
    } // 判断机器Android是否已经root,即是否获取root权限
    protected static boolean haveRoot() { int i = execRootCmdSilent("echo test"); // 通过执行测试命令来检测
    if (i != -1) {
    return true;
    }
    return false;
    }}
      

  6.   


    package com.sfer.install;import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Toast;public class InstallActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            String paramString= "$ adb push MySMS.apk /sdcard/" +"\n"+
             "$ adb shell" +"\n"+
             "$ su" +"\n"+
             "# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system" +"\n"+
             "# cat /sdcard/MySMS.apk > /system/app/MySMS.apk" +"\n"+
             "# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system" +"\n"+
             "# exit" +"\n"+
             "$ exit";        
            if(RootCmd.haveRoot()){
             if(RootCmd.execRootCmdSilent(paramString)==-1){
                 Toast.makeText(this, "安装不成功", Toast.LENGTH_LONG).show();
                }else{
                 Toast.makeText(this, "安装成功", Toast.LENGTH_LONG).show();
                }
            }else{
             Toast.makeText(this, "没有root权限", Toast.LENGTH_LONG).show();
            }
            
            
        }
    }
      

  7.   

    你一行一行的用adb shell执行,哪步错了,贴上来
      

  8.   

    找到原因了  在代码里执行把那个字符串改成这样就行了String paramString= "adb push MySMS.apk /system/app" +"\n"+
             "adb shell" +"\n"+
             "su" +"\n"+
             "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system" +"\n"+
             "cat /sdcard/MySMS.apk > /system/app/MySMS.apk" +"\n"+
             "mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system" +"\n"+
             "exit" +"\n"+
             "exit";
      

  9.   

    但是现在不知道这个是否一定能成功  我只能在我手机上做测试
      有兴趣的  可以把代码弄去试试  把代码中想安装的APK名字改成自己的 把需要安装的APK放到/sdcard 根目录  有什么问题交流交流
      

  10.   

    LZ我成功将apk 安装到system/app,但是权限没有更改过来,通过上面代码安装后,安装的apk权限为rw-------
    如果正常,应该是rw-r--r--,求教QQ:263687542
      

  11.   

    成功将apk安装到system/app下并更改权限,但是如果命令有错,会造成Runtime.getRuntime().exec(cmd);阻塞,现在正在解决
      

  12.   

    应用已经有root权限了,现在是怎么把自己拷贝过去。
      

  13.   

    /system/bin/sh: cannot create /system/app/fruit.apk: Permission denied
      

  14.   

    这个帖子不错,我的实验成功啦。楼上 chmod 777 system
      

  15.   

    请问:push之前,将 目标MySMS.apk放在哪个位置?
      

  16.   

    请问各位大神,用代码将sdcard目录下的apk安装到系统级目录system/app下,有实现的吗?急需帮助~谢谢昂
      

  17.   

    把flash相关的so放到目录
    system/lib/plugins/com.adobe.flashplayer
      

  18.   

    执行 mount -oremount /system   之后chmod 777 /system 再push 改权限就ok