当ICS问世时,引入了几个新的扩展宽度字节码.其中大部分是用于支持巨型ID的说明.以下是一些新的说明,取自我的ics/dalvik/opcode-gen/bytecode.txt:
#
# Extended-width opcodes
#
op 00ff const-class/jumbo 41c y type-ref continue|throw
op 01ff check-cast/jumbo 41c n type-ref continue|throw
op 02ff instance-of/jumbo 52c y type-ref continue|throw
op 03ff new-instance/jumbo 41c y type-ref continue|throw
op 04ff new-array/jumbo 52c y type-ref continue|throw
op 05ff filled-new-array/jumbo 5rc n type-ref continue|throw
op 06ff iget/jumbo 52c y field-ref continue|throw
...
Run Code Online (Sandbox Code Playgroud)
但是,在JB代码中,我找不到对这些新字节码的任何引用.在我的jellybean版本的bytecodes.txt中,最后一个操作码以0xfe结尾:
op fc +iput-object-volatile 22c n field-ref optimized|continue|throw
op fd +sget-object-volatile 21c y field-ref optimized|continue|throw
op fe +sput-object-volatile 21c n field-ref optimized|continue|throw
# unused: …Run Code Online (Sandbox Code Playgroud) 我正在修改Android源代码(AOSP)以创建文件/sdcard/myfile.该文件被正确创建,是可见的,当我做一个cat /sdcard/myfile从adb shell.(创建文件是PackageManagerService应用程序框架层的一部分)
但是,当我尝试使用new FileReader(myfile)相同的包管理器服务代码通过代码访问该文件时,我得到以下异常:
java.io.FileNotFoundException: /sdcard/myfile (Permission denied)
Run Code Online (Sandbox Code Playgroud)
我的文件的权限是这样的:
----rwxr-x system sdcard_rw 344 2013-03-15 08:39 myfile
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?我通过记录我正在尝试访问的文件名来检查文件名是否正确cat.
更新:
这是完整的堆栈跟踪:
W/System.err( 67): java.io.FileNotFoundException: /sdcard/myfile (Permission denied)
W/System.err( 67): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
W/System.err( 67): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
W/System.err( 67): at java.io.FileInputStream.<init>(FileInputStream.java:80)
W/System.err( 67): at java.io.FileInputStream.<init>(FileInputStream.java:132)
W/System.err( 67): at java.io.FileReader.<init>(FileReader.java:66)
W/System.err( 67): at org.csrdu.apex.policy.ApexPackagePolicy.getPolicyReader(ApexPackagePolicy.java:224)
W/System.err( 67): at org.csrdu.apex.policy.ApexPackagePolicy.loadPoliciesForPackage(ApexPackagePolicy.java:82)
W/System.err( 67): at org.csrdu.apex.AccessManager.checkExtendedPermissionByPackage(AccessManager.java:56)
W/System.err( 67): at com.android.server.PackageManagerService.checkUidPermission(PackageManagerService.java:1703)
W/System.err( 67): at com.android.server.am.ActivityManagerService.checkComponentPermission(ActivityManagerService.java:4096) …Run Code Online (Sandbox Code Playgroud) 我正在为设备构建AOSP.有没有办法在本机代码编译时获得当前的AOSP版本?我正在寻找类似Linux中的LINUX_VERSION_CODE和KERNEL_VERSION(X,Y,Z)指令.更具体地说,我想在我自己的AOSP附加项目中做一些看起来像这样的事情:
#if (ANDROID_VERSION_CODE >= ANDROID_VERSION(4,2,1))
... compile something ...
#else
... compile something else...
#endif
Run Code Online (Sandbox Code Playgroud) 新发布的Mavericks已从其存储库中删除了已弃用的模块"Switch.pm".但是,我最近尝试构建AOSP源代码树,它以某种方式使用此模块生成"make-hash-tools.pl"
小牛队的perl版本为5.16.2,其前身Mountain Lion的版本为5.12.4.有没有办法降级我的Perl?
编译错误如下所示:
Can't locate Switch.pm in @INC (@INC contains: /Library/Perl/5.16/darwin-thread-\
multi-2level /Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level\
/Network/Library/Perl/5.16 /Library/Perl/Updates/5.16.2\
/System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16\
/System/Library/Perl/Extras/5.16/darwin-thread-multi-2level \
/System/Library/Perl/Extras/5.16 .) at external/webkit/Source/WebCore\
/make-hash-tools.pl line 23.
Run Code Online (Sandbox Code Playgroud)
谢谢〜!
我一直在寻找SEAndroid,并且一直在尝试了解过程域是如何给出的。
到目前为止,我得到的是init.rc文件中的某些服务声明下,有一个称为seclabel的令牌:
service adbd /sbin/adbd --root_seclabel=u:r:su:s0
class core
socket adbd stream 660 system system
disabled
seclabel u:r:adbd:s0
Run Code Online (Sandbox Code Playgroud)
setexeccon将稍后在init.c中设置为所写的上下文:
if (svc->seclabel) {
if (is_selinux_enabled() > 0 && setexeccon(svc->seclabel) < 0) {
ERROR("cannot setexeccon('%s'): %s\n", svc->seclabel, strerror(errno));
_exit(127);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,域将为adbd。
但是我没有发现服务声明中没有seclabel令牌时会发生什么。init.c中发生的事情是它不会调用setexeccon,这意味着..保留父域?
致电至:
ps -Z
Run Code Online (Sandbox Code Playgroud)
在adb shell中,它显示了所有进程及其域,否则显示。
For example, the servicemanager in init.rc:
class core
user system
group system
critical
onrestart restart healthd
onrestart restart zygote
onrestart restart media
onrestart restart surfaceflinger
onrestart restart drm
Run Code Online (Sandbox Code Playgroud)
但是调用ps -Z显示:
u:r:servicemanager:s0 system 53 1 /system/bin/servicemanager …Run Code Online (Sandbox Code Playgroud) 这是Koushik Dutta的Vysor链接 - https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm
它允许您从PC控制Android设备.然而,有一件事让我感到困扰很长一段时间,即使它没有根据,它也可以在手机上创建触摸事件.
在对应用程序和chrome扩展程序进行一些修改之后,我意识到他使用以下方式创建了一个单独的进程 -
sh -c "CLASSPATH=/data/app/com.koushikdutta.vysor-1/base.apk /system/bin/app_process32 /system/bin com.koushikdutta.vysor.Main"
Run Code Online (Sandbox Code Playgroud)
的Main类包含其经由反射传递触摸事件框架的代码.
上面的代码将该Main类作为一个单独的进程shell执行,该进程具有执行该进程的用户.
尽管如此,据我所知,在您自己的应用程序之外创建触摸事件的唯一方法是,如果您是root用户.
有没有人对此有任何想法?
有人知道如何在编译AOSP(Master)时完全禁用插孔吗?
我一直有问题的插孔,所以我只是一直把它关闭,通过增加ANDROID_COMPILE_WITH_JACK := false在BoardConfig.mk(编译CyanogenMod的时候).我现在正在编译aosp,它似乎忽略了这个命令.
注意:我并没有真正尝试解决任何与插孔相关的问题,我试图将其关闭.
我曾经在我的Mac上建立aosp.最近我升级了mac os Mac Sierra(10.12).我在构建项目时收到此错误消息:
找不到支持的mac sdk:["10.8""10.9""10.10""10.11"]
mac sdk版本已升级到10.12,但它不在支持的mac sdk列表中.什么可以解决这个问题?
我一直在苦苦挣扎,谷歌和重建整个虚拟机2周仍然无法弄清楚......
我不认为我错过了aosp提供的指令中的任何部分.有人可以帮我解决下面的问题吗?我跑了make -j8然后得到了这个
Starting build with ninja
ninja: Entering directory `.'
[ 0% 1/34696] Yacc: aidl <= system/tools/aidl/aidl_language_y.yy
FAILED: /bin/bash -c "prebuilts/misc/linux-x86/bison/bison -d --defines=out/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_y.h -o out/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_y.cpp system/tools/aidl/aidl_language_y.yy"
/bin/bash: prebuilts/misc/linux-x86/bison/bison: No such file or directory
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
Run Code Online (Sandbox Code Playgroud)
非常感谢!!!
我正在开发一个Android应用程序,该应用程序将嵌入我们的客户拥有的非移动设备中,并由我们的客户的客户使用。我的老板正在为机器运行第二个应用程序,该应用程序在后台运行,并通过定期将有关设备的数据发送到后端Service。我采用了这种方法,尽管我知道这是不完善的,因为Android倾向于在任意指定的时间随意终止后台服务,即当它确定服务已过时或系统需要更多内存时。
也就是说,我们正在运行Android(v5.1.1)的开源版本。我想知道我的操作系统团队是否有可用的选项,这些选项对于那些构建适用于Google Android风格的应用程序不可用,是否可以通过某些方式删除那些已关闭的典型的日常维护机制或自动重启应用程序?
android-source ×10
android ×8
android-ndk ×1
bytecode ×1
dalvik ×1
macos ×1
perl ×1
perl-module ×1
selinux ×1
touch ×1