Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory management android ndk硬件调试内存 背地_Memory Management_Android Studio_Android Ndk_Remote Debugging_Compiler Optimization - Fatal编程技术网

Memory management android ndk硬件调试内存 背地

Memory management android ndk硬件调试内存 背地,memory-management,android-studio,android-ndk,remote-debugging,compiler-optimization,Memory Management,Android Studio,Android Ndk,Remote Debugging,Compiler Optimization,我在C语言方面很有经验,对Android和Java也很陌生,但这是编程所面临的环境问题 我已经用ANSI-C开发了一个可以移植到任何操作系统的管理应用程序,只需在依赖操作系统的代码中添加一个UI。它使用了相当多的内存,特别是对于大型用户文件。我有一个正在运行的Win32程序,试图使用Android Studio和NDK制作一个Android应用程序 Android studio捆绑NDK安装工作正常 我已经安装并制作了一个Win7 ultimate Android Studio 1.3,附带ND

我在C语言方面很有经验,对Android和Java也很陌生,但这是编程所面临的环境问题

我已经用ANSI-C开发了一个可以移植到任何操作系统的管理应用程序,只需在依赖操作系统的代码中添加一个UI。它使用了相当多的内存,特别是对于大型用户文件。我有一个正在运行的Win32程序,试图使用Android Studio和NDK制作一个Android应用程序

Android studio捆绑NDK安装工作正常 我已经安装并制作了一个Win7 ultimate Android Studio 1.3,附带NDK包,并在模拟器中编译和运行了ActionbarStyled(非NDK)hello jni(NDK)示例,平滑而漂亮。我还在emulator中成功地运行了Hello jni示例,并附带了一堆额外的c文件(在这一步中,没有调用,目前只是垃圾,编译时没有错误)

然后,我尝试将我的三星TAB3 SM-T110模板(需要一个Win7三星驱动程序Samsung_USB_driver_for_Mobile_Phones.zip)连接到我的Win7并进行了尝试。ActionbarStyled示例工作正常。Hello JNI示例也是如此

但是 使用一堆额外的c文件运行Hello jni示例时,我会收到以下错误消息: 启动本机调试会话时出错:java.lang.IllegalArgumentException:在设备samsung-sm_t110-47900bc50c0c3100上找不到com.example.hellojni的进程

我试着去理解问题是什么?是因为内存不足,三星充满了活跃的运行应用程序,而模拟器显然不是

是什么让三星的手机停止了应用程序?错误消息不是这样描述的吗

还有一些问题支持处理此类问题 我们谈论的是AndroidStudio 1.3捆绑NDK,早期的设置(在文章中)中有多少适用于这个新的未来NDK标准使用

记忆? 运行纯Hello jni示例时,我有大约6Mb的内存(其中使用了5Mb),这对于我的需求来说非常糟糕,我需要做些什么来让我的应用程序获得更多的内存分配吗?错误消息是由于内存不足造成的吗

Android应用程序有多大?我们是否又回到了8位DOS64KB段业务的世界?我从过去就知道了,但事实并非如此?如果你需要知道如何处理它。这个问题读起来很有趣,但这里我们讨论的是jni(C-)代码,而不是java

编译器优化? 我有一些非常巨大的C文件,因为它们是机器生成的,将XML文档库转换为C代码(由一个程序根据XSD定义编写C代码)。在一个应用程序中,我大部分时间只使用了所有C函数的5%,其余的都在Windows dev studio/编译器中进行了优化。当然,我可以重新组织我的源代码来做一些额外的工作,但我需要知道。Android Studio NDK支持的优化效果如何

在这个测试中,除了hello jni示例中的规则外,没有调用额外的C函数。实际上,编译器在这两种情况下(修改后的和原始的hello jni)应该完全相同。但显然不是。请再解释一下环境是如何工作的,这样我就知道了

一般利益
我试图在Android开发人员中找到任何描述编译器行为、内存管理和环境(Java处理方式完全不同,但在C语言编程中需要注意)的地方。我认为对于NDK的使用来说,在这里得到一个很好的答案会很有趣,因为对于环境的一般理解,在Android开发者页面的某个地方,而不是在这里。这还包括编译器如何在不同情况下进行优化。还有如何进行环境设置。

“Android Studio NDK支持中的优化效果如何?”我假设您谈论的是C/C++代码优化。NDK(从R10e开始)包括Clang3.6和GCC4.9(您可以选择要使用哪一种)。我不知道它们与微软的编译器相比如何,但你可能会在某处找到一些基准测试。当然,我已经习惯了微软的开发系统,但问题是要理解而不是按照微软的方式。你的回复帮助我获得了谷歌搜索标签,但是有关于NDK行为的一般文档吗?我一直在Android的深坑里挖掘,学到了很多东西。我不是来评判的,Android是一个OSP,MSV确实是一个商业软件,文化完全不同。当我再深入一点的时候,我相信我的贡献就是编写它,一个更全面的NDK文档,用于Android环境下的新移民。如果有人能告诉我一个项目是如何创建文档的,那就太好了(就像Android中的大多数团队协作一样)?例如,到目前为止,我已经学会了使用大量内存制作大型应用程序/应用程序(比如图片)看起来C语言编程是必须的,因为Java堆是有限的,JNI堆被系统告知是无限的,而不是硬件环境(像通常和Windows之前的一样,总是这样,在Windows中交换有点糟糕)我认为Java很好,但它看起来与C.C非常不同,C.C的一切都是硬事实,一切都必须由你自己完成,但几乎是在完全控制下(在DOS时代是绝对控制的)。Java看起来像C,在表面上看起来像C,但Java包含的东西比Win32 SDK库多1000倍。几乎不需要编写什么,在许多情况下,制作一个应用程序(用户界面)非常简单,而且非常流畅。对于一个C程序员来说,问题在于你并不是唯一一个开车的人,而且你也理解Java家伙在做什么。如果你这样做,它是平滑的。