小编Pas*_*lis的帖子

Android studio:新项目与新模块

Android Studio使用的概念modules,而Eclipse使用的其他IDE projects.但是,AS File菜单可以选择创建一个New Module以及一个new Project.

这两者有什么区别?

建议使用哪一个?

android android-studio

136
推荐指数
4
解决办法
7万
查看次数

Android Studio:Android Manifest不存在或根标记不正确

我在Android Studio(AS)上遇到此错误: 在此输入图像描述

我是怎么做到的:

我从零开始创建了一个AS项目,一切都很好.然后弹出一个弹出窗口,并且(如果我没记错的话)说的是:" Android Framework detected".我按了"是",项目/模块发生了一些变化.之后我得到了上述错误

编辑:

在我的情况下,问题没有Gradle关系.它与IntelliJ/ Android Studioconfiguration,.iml特别是文件有关.我在这里阅读了这篇内容丰富的帖子后才意识到.

android intellij-idea gradle android-studio

130
推荐指数
6
解决办法
9万
查看次数

在gdb中包含malloc.c的源代码?

如何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)

c debugging malloc gdb

13
推荐指数
1
解决办法
4838
查看次数

在现有的IntelliJ Ultimate安装上安装Android Studio

我有一个获得许可的IntelliJ Idea Ultimate.如何在现有安装的基础上安装Android Studio?

Google为我们提供的新捆绑包含SDK + IntelliJ + Android Studio社区版.

我可以安装它,就像我们使用Eclipse和ADT一样吗?

android intellij-idea android-studio

6
推荐指数
1
解决办法
1157
查看次数

使用Android Studio/AVD模拟器开发"系统应用程序"

我正在开发一个需要android.permission.DUMP权限的应用程序.这仅适用于"系统"应用程序(由设备供应商签名的应用程序),或者,我假设具有root权限的应用程序.

如何开发(和测试)使用AVD仿真器的应用程序?我声明了我需要的权限,然后在模拟器中构建并运行应用程序,但是当我到达运行的部分时,无论是否在清单中指定权限,我都会遇到相同的权限错误.

如何开发这些类型的应用程序?

我意识到,如果这是一个真正的设备,我需要根它和/或安装自定义ROM.但肯定有一种方法可以告诉模拟器将我的应用程序视为已经存在.我一直在IDE中寻找"安装应用程序作为系统应用程序"或"以root用户身份运行"复选框,我找不到一个.

android android-emulator android-studio

6
推荐指数
1
解决办法
4254
查看次数

使用GCC内联ARM asm分支到地址

我想在不修改寄存器的情况下branch使用特定地址(不是标签).所以我选择而不是或.我希望这可以完成.ARM assemblyLRBBLBXGCC 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)

assembly gcc arm inline-assembly

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

用GDB远程调试纯C程序

我正在尝试远程调试CAndroid设备上的纯程序.Android设备(目标)通过USB连接到主机.

我所做的是:从复制的目标以下文件: /system/lib,/vendor/lib,/system/bin/app_process,和/system/bin/linker.

目标:

  • 复制gdbserverNDK所述目标设备
  • 发送exe我要调试的内容
  • 在目标上使用运行的gdb服务器 ./gdbserver :5039 exec
    • 这基本上执行过程,得到一个 pid

主办:

  • 启用了端口 adb forward tcp:5039 tcp:5039
  • 跑了:arm-eabi-gcc exec.
  • 然后在gdb中:
    • set solib-search-path ...,我早先从目标中提取的库
    • target remote :5039

arm-eabi-gcc可以连接到远程进程,甚至继续(c)的执行.但是,我无法设置断点.如果我这样做,我会收到以下错误: Cannot access memory at address xxx.

我在这里错过了什么吗?

谢谢.

c android gdb android-ndk gdbserver

5
推荐指数
1
解决办法
1680
查看次数

禁用映射到Ctrl-a的良好VIM数量增量

我正在使用本地和远程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

vim tmux

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

ARM内联asm:退出系统调用,从内存中读取值

问题

我想在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)中使用了一个输入变量.此外,我尝试了一个常规变量,仍然有同样的错误.

linux assembly arm system-calls inline-assembly

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

在Android应用程序中挂载R/W系统以编辑只读文件

我如何在我的应用程序中编辑/ 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电话?或者在某些手机中它有所不同?

android mount system

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