有谁知道在哪里可以找到DDMS源代码?我想扩展它的功能.或者是否有这个工具的CLI而不是eclipse插件?
android eclipse-plugin command-line-interface ddms android-source
我正在尝试https://android.googlesource.com/platform/dalvik/+/gingerbread/docs/hello-world.html上的Hello World示例
但是,我的Foo程序没有运行; dalvikvm抱怨如下:
Dalvik VM无法找到类'Foo'java.lang.NoClassDefFoundError:Foo at dalvik.system.NativeStart.main(Native Method)引起:java.lang.ClassNotFoundException:Foo in loader dalvik.system.PathClassLoader [/ mnt/sdcard /foo.jar]在java.lang.ClassLoader.loadClass(ClassLoader.java:532)的java.lang.ClassLoader.loadClass(ClassLoader.java:573)的dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) ......还有1个
在dalvikvm调用期间,Logcat提供了更多信息:
D/dalvikvm(1361):创建instr宽度表E/dalvikvm(1361):无法打开dex缓存'/data/dalvik-cache/mnt@sdcard@foo.jar@classes.dex':没有这样的文件或目录I/dalvikvm(1361):无法为/mnt/sdcard/foo.jar打开或创建缓存(/ data /dalvik-cache/mnt@sdcard@foo.jar@classes.dex)W/dalvikvm(1361):threadid = 1:线程退出未捕获的异常(组= 0x4 001e9a8)
有没有人知道我做错了什么?
在完成所有这些步骤以查看Android源代码(Gingerbread分支)之后,为了解决编译错误,我决定尝试从不同的源代码获取源代码.
以下是我从GitHub.com存储库中检出源代码所采取的步骤.
我检查了GitHub.com存储库中的repo工具
git clone git://github.com/android/tools_repo.git
Run Code Online (Sandbox Code Playgroud)
在下载的repo脚本文件中,我更改了repo工具的位置,如下所示:
## repo default configuration
##
#REPO_URL='git://android.git.kernel.org/tools/repo.git'
REPO_URL='git://github.com/android/tools_repo.git'
REPO_REV='stable'
Run Code Online (Sandbox Code Playgroud)
在此之后,我使用repo脚本'git wrapper'为源代码创建了存储库.
repo init -u git://github.com/android/platform_manifest.git -b gingerbread
Run Code Online (Sandbox Code Playgroud)
这给了我一个成功的结果; "repo在/ home/my /目录中初始化"
但是,当我尝试时repo sync,我收到以下错误消息:
$ repo sync
Initializing project platform/bionic ...
android.git.kernel.org[0: 149.20.4.77]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)
error: Cannot fetch platform/bionic
Run Code Online (Sandbox Code Playgroud)
现在离线android.git.kernel.org的引用在哪里? cat repo|grep kernel.org没有给我什么.
我在我的s2上有一个预定义的应用程序,让我收听广播.它不使用互联网,而是使用周围的无线电波.有什么方法可以使用该功能以编程方式启动无线电并搜索广播电台?
我按照论坛中的步骤(http://www.schaeuffelhut.de/wordpress/?p=237&cpage=1#comment-384)获取Linux内核源代码并交叉编译我的模块.google nexus one的内核版本与论坛中的版本完全相同.我最初测试了我的测试模块hello-1.ko,它已成功安装在Android设备上.但是当我使用insmod在Android设备上安装我的模块ec.ko时,我收到以下错误.
apurva @ apurva-Inspiron-1464:〜/ $ adb shell
$ cd sdcard/data/ec
$ ls
ec.ko
$ su
#insmod ec.ko
insmod:init_module'ec.ko'失败(没有这样的文件或目录)
#
很明显,文件ec.ko存在.但我不确定为什么不挑选文件.我为hello-1.ko做了同样的事情,它得到insmod非常好.没有权限问题,ec.ko获得了与hello-1.ko相同的权限.
现在这让我想到一个问题,Android设备中是否存在内核模块的某些限制,因为该模块在Ubuntu中获得了insmod.对我来说,下一步是采用命中和试用方法,并检查ec.c中的哪些行导致了问题.同时如果你有什么建议,请告诉我.
这可能是一个菜鸟问题,但我想知道为什么我们必须使用静态方法(makeText)来创建Toast而不是构造函数.
为什么我们必须使用这个:
makeText(Context context, CharSequence text, int duration)
Run Code Online (Sandbox Code Playgroud)
而不是这个:
new Toast(Context context, CharSequence text, int duration)
Run Code Online (Sandbox Code Playgroud)
这是makeText方法:
public static Toast makeText(Context context, CharSequence text, int duration) {
Toast result = new Toast(context);
LayoutInflater inflate = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);
tv.setText(text);
result.mNextView = v;
result.mDuration = duration;
return result;
}
Run Code Online (Sandbox Code Playgroud)
为什么我们没有以下内容:
public Toast (Context context, CharSequence text, int duration) {
this(context);
LayoutInflater inflate = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
TextView tv = …Run Code Online (Sandbox Code Playgroud) 我试图通过代码来追踪,看看addJavascriptInterface()上WebView实现的,但它潜入native代码,基本上戕害我神交是怎么回事能力.
具体来说,我试图确定JNI(?)是否意味着addJavascriptInterface()回调为Java代码的方式依赖于getClass()作为反射策略的一部分,将JavaScript源中的方法引用映射到Java中的实现.我会认为它必须,也许我在错误的地方搜索,但我没有看到它.
任何人都可以指向使用注入的Java对象的代码,所以我们可以看到它是如何实现的?
谢谢!
UPDATE
澄清一下,我的意思是使用getClass()传递给的对象addJavascriptInterface().
我想在我的自定义AOSP ROM中禁用Home,Menu和Back按钮.我已经上网了,看到我可以在out/target/product/generic/system/usr/keylayout中找到的关键布局文件中成功构建后禁用按钮.我正在编辑的文件是:Generic.kl现在我已经注释掉了这些按钮:
然后我重新启动了模拟器,按钮仍然工作...有什么我想念的?
谢谢,斯特凡
当我尝试通过fastboot system.img(从我的自定义AOSP版本)闪存到Sony Xperia Z3时,我收到以下错误:
# fastboot flash system system.img
sending 'system' (584106 KB)...
OKAY [ 18.294s]
writing 'system'...
FAILED (remote: size too large)
finished. total time: 18.297s
Run Code Online (Sandbox Code Playgroud)
Z3有大约2GB的系统分区,我不知道为什么闪存失败.
我正在尝试使用soong构建系统使用AOSP源代码为我的本机组件生成代码覆盖率报告.
我扩展了aosp vhal,但单元测试用例与下面的链接相同. http://androidxref.com/8.1.0_r33/xref/hardware/interfaces/automotive/vehicle/2.0/default/tests/
尝试将以下内容添加到Android.bp中的cc_test,cc_binary
native_coverage : true,
cflags: [
"-g",
"-O0",
"-fprofile-arcs",
"-ftest-coverage",
],
ldflags : [
"-fprofile-arcs",
"-ftest-coverage",
],
Run Code Online (Sandbox Code Playgroud)
本地二进制单元测试覆盖是在out/target/product中生成的,但我找不到gcno中间体.
在命令下运行会为每个测试文件提供*.gcda文件.
adb shell \
GCOV_PREFIX=/data/local/tmp \
GCOV_PREFIX_STRIP=`echo $ANDROID_BUILD_TOP | grep -o / | wc -l` \
/data/local/tmp/unit-tests-coverage
Run Code Online (Sandbox Code Playgroud)
我试过下面的链接,但不知道如何继续:(
http://logan.tw/posts/2015/04/28/check-code-coverage-with-clang-and-lcov/ https://android.googlesource.com/platform/bionic.git/+/master- soong https://android.googlesource.com/platform/build/soong/+/581341d%5E%21/ https://android.googlesource.com/platform/external/e2fsprogs/+/fedfb27%5E%21/ https : //android.googlesource.com/platform/development/+/master/scripts/acov#23 http://androidxref.com/9.0.0_r3/xref/bionic/README.md#293
我不确定谷歌的vts框架是否可用于生成本机代码覆盖. https://codelabs.developers.google.com/codelabs/android-vts-8/#6
生成" gcnodir "但不确定如何使用它./coverage/data/nativetest64/vehicle-unit-tests-coverage/unit-tests-coverage.gcnodir