我在C方面非常有经验,对Android和Java来说还很陌生,但这是编程方面的环境问题。
我已经在ANSI-C中开发了一个管理应用程序,可以移植到任何操作系统,只需在依赖于操作系统的代码中添加UI。它使用了相当多的内存,特别是对于庞大的用户文件。我有一个有效的Win32程序,尝试使用带有NDK的Android Studio制作Android应用程序。
我已经安装并制作了一个带有NDK的Win7终极Android Studio 1.3,并在模拟器中编译并运行了ActionbarStyled(非NDK)hello-jni(NDK)示例,流畅而美观。我也在模拟器中成功运行了带有一堆额外c文件的Hello-jni示例(未调用,目前只是垃圾,编译时没有错误,在此步骤中)
然后我尝试连接我的三星TAB3 SM-T110模板(一个需要Win7三星驱动程序SAMSUNG_USB_Driver_for_Mobile_Phones.zip)到我的Win7并尝试了。 ActionbarStyled示例工作得很好。 Hello-JNI样本也是如此。
使用一堆额外的c文件运行Hello-jni示例我收到此错误消息: 启动本机调试会话时出错:java.lang.IllegalArgumentException:无法在设备上找到com.example.hellojni的进程samsung-sm_t110-47900bc50c0c3100
我试着了解问题是什么?是缺乏内存,三星充满了活跃的运行应用程序,模拟器显然不是。
是什么让三星电脑停止申请?错误信息不是那个描述?
我们正在讨论Android studio 1.3捆绑NDK,早期设置(文章中)有多少适用于这个新的未来NDK标准使用?
运行纯Hello-jni示例我有大约6Mb内存(使用5Mb),这对我的需求来说非常差,我需要做些什么让我的应用获得更多的内存分配?是否由于内存不足而导致错误消息?
可以使用多大的Android应用程序?我们是否再次进入8位DOS 64Kb细分市场?我从过去就知道,但事实并非如此?如果需要知道处理它。 Library for unrestricted heap memory for bitmaps using NDK on Android这个问题很有意思,但在这里我们讨论的是jni(C-)代码而不是java。
我有一些非常庞大的C文件,因为它们是机器生成的,将XML文档库转换为C代码(使程序从XSD定义编写C代码)。在一个应用程序中,我大部分时间只使用所有C函数的5%,其余的都在Windows dev studio /编译器中进行了优化。当然,我可以将我的源代码重新组织为一些额外的工作,但我需要知道。 Android Studio NDK中的优化如何支持?
在这个测试中,没有额外的C函数被调用,除了与hello-jni样本中相同的常规函数。实际上编译器在两种情况下都应该完全相同(修改后的和原始的hello-jni)。但显然它没有。请详细解释一下环境是如何运作的,所以我知道吗?
我试图在Android开发人员中找到描述编译器行为,内存管理和环境之类的东西(Java处理这样完全不同,但在C编程中需要注意)。我认为对于NDK的使用,在Android开发者页面的某个地方,而不是在这里获得环境的一般理解,这将是一个有趣的答案。这还包括编译器在不同情况下的优化方式。还有如何制定环境。