Android Studio使用的概念modules
,而Eclipse使用的其他IDE projects
.但是,AS File
菜单可以选择创建一个New Module
以及一个new Project
.
这两者有什么区别?
建议使用哪一个?
我在Android Studio(AS)上遇到此错误:
我从零开始创建了一个AS项目,一切都很好.然后弹出一个弹出窗口,并且(如果我没记错的话)说的是:" Android Framework detected
".我按了"是",项目/模块发生了一些变化.之后我得到了上述错误
在我的情况下,问题没有Gradle
关系.它与IntelliJ
/ Android Studio
configuration,.iml
特别是文件有关.我在这里阅读了这篇内容丰富的帖子后才意识到.
如何malloc
在gdb中包含/查看源代码?
我想逐步执行gdb
,并malloc.c
在调用任何malloc函数时进入源代码.
目前gdb所说的是:
malloc.c: No such file or directory.
这个人在这里遇到了同样的问题,但他们没有提到解决方案,即如何实际进入malloc的源代码.
我在Ubuntu server 14.04
,我已经尝试安装以下软件:
libc6-dbg
,libc6-dev
,和libc6-dbgsym
.我甚至不知道其中一个软件包是否有帮助,但是安装它libc-dbgsym
会给我以下错误:
dpkg: error processing archive /var/cache/apt/archives/libc6-dbgsym_2.19-0ubuntu6.6_amd64.ddeb (--unpack): trying to overwrite
'/usr/lib/debug/usr/lib/x86_64-linux-gnu/audit/sotruss-lib.so', which
is also in package libc6-dbg:amd64 2.19-0ubuntu6.6 dpkg-deb: error:
subprocess paste was killed by signal (Broken pipe)
Run Code Online (Sandbox Code Playgroud) 我有一个获得许可的IntelliJ Idea Ultimate.如何在现有安装的基础上安装Android Studio?
Google为我们提供的新捆绑包含SDK + IntelliJ + Android Studio社区版.
我可以安装它,就像我们使用Eclipse和ADT一样吗?
我正在开发一个需要android.permission.DUMP权限的应用程序.这仅适用于"系统"应用程序(由设备供应商签名的应用程序),或者,我假设具有root权限的应用程序.
如何开发(和测试)使用AVD仿真器的应用程序?我声明了我需要的权限,然后在模拟器中构建并运行应用程序,但是当我到达运行的部分时,无论是否在清单中指定权限,我都会遇到相同的权限错误.
如何开发这些类型的应用程序?
我意识到,如果这是一个真正的设备,我需要根它和/或安装自定义ROM.但肯定有一种方法可以告诉模拟器将我的应用程序视为已经存在.我一直在IDE中寻找"安装应用程序作为系统应用程序"或"以root用户身份运行"复选框,我找不到一个.
我想在不修改寄存器的情况下branch
使用特定地址(不是标签).所以我选择而不是或.我希望这可以完成.ARM assembly
LR
B
BL
BX
GCC inline asm
这是文档,这是我尝试过的:
#define JMP(addr) \
__asm__("b %0" \
: /*output*/ \
: /*input*/ \
"r" (addr) \
);
Run Code Online (Sandbox Code Playgroud)
它是一个C宏,可以用一个调用address
.当我运行它时,我收到以下错误:
error: undefined reference to 'r3'
错误是因为使用"r"
.我调查了一下,我发现它可能是gcc 4.9.*版本的错误.
顺便说一句,我使用的Android/Linux Gcc 4.9 cross compiler
,上OSX
.另外,我不知道我应该装什么东西Rm
.
干杯!
编辑:
我将宏更改为此,我仍然得到undefined reference to r3 and r4
:
#define JMP(addr) \
__asm__("LDR r5,=%0\n\t" \
"LDR r4,[r5]\n\t"\
"ADD r4,#1\n\t" \
"B r4" \
: /*output*/ \ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试远程调试C
Android设备上的纯程序.Android设备(目标)通过USB连接到主机.
我所做的是:从复制的目标以下文件:
/system/lib
,/vendor/lib
,/system/bin/app_process
,和/system/bin/linker
.
目标:
gdbserver
从NDK
所述目标设备exe
我要调试的内容./gdbserver :5039 exec
pid
主办:
adb forward tcp:5039 tcp:5039
arm-eabi-gcc exec
.set solib-search-path ...
,我早先从目标中提取的库target remote :5039
在arm-eabi-gcc
可以连接到远程进程,甚至继续(c
)的执行.但是,我无法设置断点.如果我这样做,我会收到以下错误:
Cannot access memory at address xxx
.
我在这里错过了什么吗?
谢谢.
我正在使用本地和远程tmux会话.要将命令发送到我使用的本地tmux Ctrl-a
,再发送到远程Ctrl-q
.我试图禁用通常Ctrl-a
在vim中执行的数字增量,但它现在触发,Ctrl-q
我找不到禁用它的方法.顺便说一下,只有在特定的tmux窗口没有嵌套远程窗口时才会发生这种情况.此外,我认为远程tmux会话中仍可能存在快捷方式的组合,这也会触发增量.
那么有没有办法完全禁用该功能? 一个理想的解决方案是用一个什么都不做的函数来覆盖它.这是一个非常偷偷摸摸的命令,因为这个我过去有一些非常可怕的调试经验!
我的tmux.conf:
..
unbind C-b
set -g prefix C-a
bind-key -n C-q send-prefix
...
Run Code Online (Sandbox Code Playgroud)
然后在vim中我尝试禁用Ctrl-a和Ctrl-q以及no-ops.
这是我的vimrc:
...
map <Ctrl-A> <Nop>
map <Ctrl-Q> <Nop>
...
Run Code Online (Sandbox Code Playgroud)
我也尝试过输入Ctrl-a
,Ctrl-q
但仍然Ctrl-q
会增加.我认为问题是因为tmux接收Ctrl-q
然后将其作为前缀发送,这种方式不会被我的额外映射捕获.
干杯,Paschalis
我想在Linux Android设备上使用内联汇编在ARM中执行退出系统调用,我希望从内存中的某个位置读取退出值.
如果不给出这个额外的参数,调用的宏看起来像:
#define ASM_EXIT() __asm__("mov %r0, #1\n\t" \
"mov %r7, #1\n\t" \
"swi #0")
Run Code Online (Sandbox Code Playgroud)
这很好用.要接受一个参数,我将其调整为:
#define ASM_EXIT(var) __asm__("mov %r0, %0\n\t" \
"mov %r7, #1\n\t" \
"swi #0" \
: \
: "r"(var))
Run Code Online (Sandbox Code Playgroud)
我用它来称呼它:
#define GET_STATUS() (*(int*)(some_address)) //gets an integer from an address
ASM_EXIT(GET_STATUS());
Run Code Online (Sandbox Code Playgroud)
无效'asm':操作数超出范围
我无法解释为什么我会收到此错误,因为我在上面的代码段(%0/var)中使用了一个输入变量.此外,我尝试了一个常规变量,仍然有同样的错误.
我如何在我的应用程序中编辑/ system/Directory中的文件?
我要把系统写入R/W吗?
我试过了:
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes("mount -o remount,rw /system\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
Run Code Online (Sandbox Code Playgroud)
以及许多其他人,没有成功.
如果有人可以帮助我,我非常感谢!:)此外,如果我最终成功,它将适用于所有root电话?或者在某些手机中它有所不同?