标签: android-source

Jellybean上缺少扩展宽度的dalvik字节码

当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 bytecode dalvik android-ndk android-source

3
推荐指数
1
解决办法
682
查看次数

Android源错误从SD卡读取文件

我正在修改Android源代码(AOSP)以创建文件/sdcard/myfile.该文件被正确创建,是可见的,当我做一个cat /sdcard/myfileadb 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)

android android-source android-sdcard

3
推荐指数
1
解决办法
2468
查看次数

在本机代码编译时找到AOSP中的Android版本?

我正在为设备构建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)

android android-version android-source

3
推荐指数
1
解决办法
2966
查看次数

如何在Mac OS X Mavericks上降级Perl

新发布的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)

谢谢〜!

macos perl perl-module android-source osx-mavericks

3
推荐指数
1
解决办法
4834
查看次数

如何给SEAndroid进程域

我一直在寻找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)

android selinux android-source

3
推荐指数
1
解决办法
4998
查看次数

vysor如何在非root设备上创建触摸事件?

这是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用户.

有没有人对此有任何想法?

android touch android-source

3
推荐指数
1
解决办法
2850
查看次数

在android编译中禁用J​​ACK

有人知道如何在编译AOSP(Master)时完全禁用插孔吗?

我一直有问题的插孔,所以我只是一直把它关闭,通过增加ANDROID_COMPILE_WITH_JACK := falseBoardConfig.mk(编译CyanogenMod的时候).我现在正在编译aosp,它似乎忽略了这个命令.

注意:我并没有真正尝试解决任何与插孔相关的问题,我试图将其关闭.

android android-source android-jack-and-jill

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

在mac 10.12上构建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列表中.什么可以解决这个问题?

android-source

3
推荐指数
3
解决办法
4790
查看次数

未能建立aosp.说子命令失败了

我一直在苦苦挣扎,谷歌和重建整个虚拟机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 android-source

3
推荐指数
1
解决办法
4902
查看次数

AOSP Android中的永久后台服务?

我正在开发一个Android应用程序,该应用程序将嵌入我们的客户拥有的非移动设备中,并由我们的客户的客户使用。我的老板正在为机器运行第二个应用程序,该应用程序在后台运行,并通过定期将有关设备的数据发送到后端Service。我采用了这种方法,尽管我知道这是不完善的,因为Android倾向于在任意指定的时间随意终止后台服务,即当它确定服务已过时或系统需要更多内存时。

也就是说,我们正在运行Android(v5.1.1)的开源版本。我想知道我的操作系统团队是否有可用的选项,这些选项对于那些构建适用于Google Android风格的应用程序不可用,是否可以通过某些方式删除那些已关闭的典型的日常维护机制或自动重启应用程序?

android android-source

3
推荐指数
1
解决办法
305
查看次数