求教Android 将APK安装到/system/app的方法 adb shell ok的话 。 直接 1、adb remount 2、 adb push XXX.apk(绝对路径) /system/app 这样就可以了啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的意思就是 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 这个不对是吗? 你的意思是 1. $ adb push SecureSetting.apk /sdcard/ // 上传要安装的文件,为安装做准备。 这个不对吗? 主要是需要root权限。。没有root不行的 root权限手机是有了 但是我按照网上那个做出来 没有反应 不知道错在哪里 我把代码贴出来嘛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; }} 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(); } }} 你一行一行的用adb shell执行,哪步错了,贴上来 找到原因了 在代码里执行把那个字符串改成这样就行了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"; 但是现在不知道这个是否一定能成功 我只能在我手机上做测试 有兴趣的 可以把代码弄去试试 把代码中想安装的APK名字改成自己的 把需要安装的APK放到/sdcard 根目录 有什么问题交流交流 LZ我成功将apk 安装到system/app,但是权限没有更改过来,通过上面代码安装后,安装的apk权限为rw-------如果正常,应该是rw-r--r--,求教QQ:263687542 成功将apk安装到system/app下并更改权限,但是如果命令有错,会造成Runtime.getRuntime().exec(cmd);阻塞,现在正在解决 应用已经有root权限了,现在是怎么把自己拷贝过去。 /system/bin/sh: cannot create /system/app/fruit.apk: Permission denied 这个帖子不错,我的实验成功啦。楼上 chmod 777 system 请问:push之前,将 目标MySMS.apk放在哪个位置? 请问各位大神,用代码将sdcard目录下的apk安装到系统级目录system/app下,有实现的吗?急需帮助~谢谢昂 把flash相关的so放到目录system/lib/plugins/com.adobe.flashplayer 执行 mount -oremount /system 之后chmod 777 /system 再push 改权限就ok Android4.0怎么添加孟加拉语? android 12.04编译不知道什么错误。。,求大神指点,代码是从其他电脑拷比过来的。 socket客户端程序出错 关于android安卓系统开发 Google Map:MapView的经纬度图标切换 android3.0,是像以前版本那样开发吗? Android 中文论坛 求大牛解释下auto touch是怎么实现的 android系统启动时IP设置 android emulator Android如何删除文件夹? 小弟求安卓开发入门视频,谢谢啦
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
这个不对是吗?
1. $ adb push SecureSetting.apk /sdcard/ // 上传要安装的文件,为安装做准备。
这个不对吗?
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;
}}
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();
}
}
}
"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";
有兴趣的 可以把代码弄去试试 把代码中想安装的APK名字改成自己的 把需要安装的APK放到/sdcard 根目录 有什么问题交流交流
如果正常,应该是rw-r--r--,求教QQ:263687542
system/lib/plugins/com.adobe.flashplayer