标签: root

Android:内核恐慌后如何获取内核日志?

我在我的设备上使用Android Custom ROM,也使用自定义boot.img(自定义内核+ cmdline + ramdisk).我现在希望能够在内核崩溃后立即查看内核日志,但遗憾的是我无法使用串行控制台.

好消息:Android的Linux内核中似乎有一些源/模块正是为此目的编写的.例如,在我的内核的.config文件中激活了以下行:

CONFIG_ANDROID_RAM_CONSOLE=y
CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y
CONFIG_APANIC=y
CONFIG_APANIC_PLABEL="oem_log"
Run Code Online (Sandbox Code Playgroud)

我的问题是:在我强制内核恐慌以便测试它之后,即通过加载一个简单的恐慌内核模块insmod panic.ko,似乎没有日志被写入名为oem_log的MTD (存在于我的设备上).其次,RAM在重启后也不包含日志,因为它似乎被清除 - 或者也没有写入日志.

那么如何在恐慌之后获取内核日志呢?如果有一种方法可以测试正在运行的系统上的APANIC,那将会很有帮助.也许通过使用内核调试系统?截至目前,我对此很陌生.

在此先感谢您的帮助!

logging android root linux-kernel panic

24
推荐指数
3
解决办法
7万
查看次数

应用程序启动前崩溃:SecurityException:Permission Denial:INTERACT_ACROSS_USERS_FULL

背景

我有一个root设备,它是Galaxy S3 I9300,基于Android 4.3的三星基于股票的ROM.

运行我正在使用此设备的应用程序时,我从未遇到任何问题.

问题

从昨天开始(我没有更改设备上的任何内容),每次打开应用程序时,它都显示很短的时间,关闭自己没有任何崩溃对话框,但它显示下一个日志:

01-30 09:27:18.325: E/DatabaseUtils(2366): Writing exception to parcel
01-30 09:27:18.325: E/DatabaseUtils(2366): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
01-30 09:27:18.325: E/DatabaseUtils(2366):  at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
01-30 09:27:18.325: E/DatabaseUtils(2366):  at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
01-30 09:27:18.325: E/DatabaseUtils(2366):  at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
01-30 09:27:18.325: E/DatabaseUtils(2366):  at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
01-30 09:27:18.325: E/DatabaseUtils(2366):  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
01-30 09:27:18.325: E/DatabaseUtils(2366):  at android.os.Binder.execTransact(Binder.java:388)
01-30 09:27:18.325: E/DatabaseUtils(2366):  at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

它甚至没有得到扩展Application的类的代码......

我发现了什么

似乎这个问题非常普遍(许多人已经报道过这个问题),但我找不到任何解决方案以及为什么会出现这种情况,除了拥有一个有根设备.

人们还说这里写的权限实际上是一个系统权限,但我从来没有听说过它,更不用说使用它了(甚至不确定它是什么). …

android securityexception root android-permissions

24
推荐指数
1
解决办法
5266
查看次数

如何通过Android SDK获得root权限?

我正在学习Android编程,我想创建一个必须以root身份运行的应用程序.合乎逻辑的是在Android Manifest中添加root权限.

我在文档中看到了这个链接,特别注意到FACTORY_TEST权限:

public static final String FACTORY_TEST

自:API级别1

作为制造商测试应用程序运行,以root用户身份运行.仅在设备以制造商测试模式运行时可用.常量值:"android.permission.FACTORY_TEST"

这是最好的方式吗?

如果无法使用SDK,我该如何使"root"应用程序工作?

permissions sdk android manifest root

23
推荐指数
3
解决办法
7万
查看次数

Jelly Bean的READ_LOGS权限(api 16)

由于Android Jelly Bean不支持日志读取权限(根据此谷歌io 2012视频视频),我想知道root设备(或非root设备)是否可以绕过这个限制并能够读取日志.

我怎么做?我真的需要将应用程序变成系统应用程序,还是足够生根?

logging android root android-4.2-jelly-bean

22
推荐指数
2
解决办法
2万
查看次数

Android:adbd无法在生产版本中以root身份运行

我有一个基于Android的手机(2.3.6),具有未锁定的root权限.由于我想通过我的电脑访问我的手机,今天我已经安装了QtAdb和Android SDK.如果我打开命令提示符,我这样做

adb shell su

我明白了

#

所以我能够复制,删除,推送手机上的文件(在手机上我使用应用程序"SuperSU"收到通知.)

但是,如果我在Windows 7下启动QtAdb,我会收到以下错误:"adbd无法在生产版本中以root身份运行".我想念什么?QtAdb出了什么问题?

android root adb

22
推荐指数
4
解决办法
10万
查看次数

安装Android APK没有提示

我们正在撰写一款在大屏幕上展示广告的Android应用.我们有一个广告客户可以选择广告的后端,因此它们几乎可以立即更新.因为会有很多Android盒子运行(插入HDMI屏幕),我们应该能够远程更新我们的软件.

情况就是这样:

主应用程序持续运行(除非关闭),用户从未看到任何与Android相关的内容.我们需要一个更新程序应用程序来侦听更新并删除主apk,安装一个新的apk.在更新时,我们将显示"正在更新,请稍候"的活动,直到新的主apk安装并显示.

我们需要的:

我们需要有关如何实现更新机制的帮助,而不会在ROOTED DEVICE上提示用户.

我们有什么:

更新程序应用程序挂钩到启动服务启动的启动接收事件(此服务将侦听更新,这将由同事很快实现).该服务可以启动一个活动,该活动将在更新时提示更新信息.

在更新程序活动中

 try {
            Process proc = Runtime.getRuntime().exec(new String[]{"su", "pm install -r /mnt/sdcard/MYFOLDER/testAPK.apk"});
            stringBuilder.append(String.valueOf(proc.waitFor()));
            stringBuilder.append("\n");
        } catch (Exception e) {
            if (e instanceof IOException) {
                Log.d(TAG, "IOException");
            } else if (e instanceof InterruptedException) {
                Log.d(TAG, "InterruptedException");
            } else {
                e.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

StringBuilder打印11,但如果我给出随机的现有命令,它会一样.

在清单中

<!-- Permission to start UpdaterService on boot -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<!-- Install/delete permissions, only granted to system apps -->
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> …
Run Code Online (Sandbox Code Playgroud)

android install root

22
推荐指数
1
解决办法
2万
查看次数

如何以root cronjob的身份运行不同用户的命令?

我似乎陷入了NFS限制和Cron限制之间.

所以我有root cron(在RHEL5上)运行一个shell脚本,除其他外,需要通过NFS挂载rsync一些文件.NFS挂载上的文件由模式700的apache用户拥有,因此只有apache用户可以运行rsync命令 - 以root身份运行会产生权限错误(NFS很少见,显然,root用户是不是全能的?)

当我只想手动运行rsync时,我可以使用"sudo -u apache rsync ..."但是在cron中没有工作 - 它说"sudo:对不起,你必须有一个tty来运行sudo".

我不想将整个脚本作为apache(即来自apache的crontab)运行,因为脚本的其他部分确实需要root - 它只是一个需要作为apache运行的命令.而且我真的不想改变文件的模式,因为这将涉及对其他应用程序的重大更改.

有必要从cron完成"sudo -u apache"的方法吗?

谢谢!抢

cron sudo nfs root

21
推荐指数
2
解决办法
3万
查看次数

如果可能的话,如何在linux上本地安装java - 没有root用户?

我需要java 1.7,服务器只有1.6.我没有root权限.我试图谷歌出来的东西,但似乎没有人这样做.我可以以某种方式编译它或准备二进制文件,以便我可以把它们放入我的PATH.你能帮忙吗?系统是Redhat.

java linux root

21
推荐指数
3
解决办法
2万
查看次数

使用pm2以root身份启动应用

我有一个守护进程必须在启动时以root身份运行.

我使用pm2启动其他应用程序,但无法弄清楚它是否可以以root身份启动应用程序.可以吗?

如果没有,我的选择是什么?

root node.js pm2

21
推荐指数
5
解决办法
2万
查看次数

MariaDB安装时没有密码提示

我已经使用Ubuntu软件中心或命令提示符(apt-get install maraidb-server)从Ubuntu 15.04存储库安装了mariadb,但没有为root用户提供密码.现在我可以在没有密码的情况下在命令行上连接到mysql,但是使用Mysql-Workbench或python mysqldb库进行连接失败了"用户'root'对'@ localhost'进行访问被拒绝"消息

passwords root mariadb

20
推荐指数
3
解决办法
2万
查看次数