标签: native-code

如何将C#应用程序分发到具有.Net未知版本的计算机?

我写了一个小应用程序,我需要分发到700多台计算机,问题是计算机可以运行任何版本的Windows(尽管很可能是XP或更好)与任何版本的.Net框架安装的互联网连接都来自OC3拨号.

我考虑过将.Net与我的应用程序捆绑在一起,但.net安装程序至少为39mb,这对于拨号的人来说确实需要几个小时.

那么有没有办法可以捆绑应用程序需要的特定DLL,或者将整个东西转换为本机代码?

谢谢 - 迈克

.net cil distribution native-code

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

jni启动问题


我开始研究JNI,据我所知,如果加载的dll出现问题,jvm可以在现场终止.
即,过程无法受到保护,例如捕获异常时.
因此,如果我的理解是正确的,那么我的问题是在使用jni时是否存在针对这种情况的标准方法/模式.
或者以不同的方式说明,使用jni设计的流程是为了避免这些问题吗?或者预计不会出现这样的问题?

谢谢.

c java dll java-native-interface native-code

5
推荐指数
0
解决办法
311
查看次数

Android Native NDK OpenGL ES:未实现的API

我正在努力用C++ for Android完全实现OpenGL ES 2.0.

目前,我们的程序在项目中没有JNI或任何java类运行,而只使用NativeActivity.

关注应用程序渲染部分本身,我们得到了一个简单的方法:

renderWorld()
{   GLfloat vVertices[] = {  0.0f,  0.5f, 0.0f,
                            -0.5f, -0.5f, 0.0f,
                             0.5f, -0.5f, 0.0f };
    glClear ( GL_COLOR_BUFFER_BIT );

    glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices );
    glEnableVertexAttribArray ( 0 );

    glDrawArrays (GL_TRIANGLES, 0, 3 );
}
Run Code Online (Sandbox Code Playgroud)

在Android.mk中包括:

LOCAL_LDLIBS    := -landroid -llog -lEGL -lGLESv1_CM -lOpenSLES -lGLESv2
Run Code Online (Sandbox Code Playgroud)

并在AndroidManifest.xml中通知:

    <uses-feature android:glEsVersion="0x00020000"></uses-feature>
Run Code Online (Sandbox Code Playgroud)

因此,程序调试和编译没有问题.设置为运行时,会显示以下消息:

    error  libEGL   called unimplemented OpenGL ES API
Run Code Online (Sandbox Code Playgroud)

论坛给出了一个可用于java的建议 - Android:GLES20:称为未实现的OpenGL ES API,包括命令setEGLContextClientVersion:

    GLSurfaceView surfaceView = new GLSurfaceView(this);
    surfaceView.setEGLContextClientVersion(2);
Run Code Online (Sandbox Code Playgroud)

但是,setEGLContextClientVersion是一种适用于java的包装器方法.

setEGLContextClientVersion不属于OpenGL …

c++ opengl-es setup-deployment native-code android-ndk

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

在4.0.3之前的Android下运行时,本机库中的分段错误

libFidoCore.so是我的原生库,我在Android的ICS 4.0.3版本中从这个库调用java函数这个库运行良好而不会崩溃,但在Android 2.3.3或Android 2.3.4上我的应用程序崩溃了以下日志.为什么?

05-21 09:20:17.539: I/DEBUG(73): Build fingerprint: 'google/soju/crespo:2.3.3/GRI40/102588:user/release-keys'
05-21 09:20:17.539: I/DEBUG(73): pid: 725, tid: 756  >>> com.fido.android.framework.service <<<
05-21 09:20:17.539: I/DEBUG(73): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000043
05-21 09:20:17.539: I/DEBUG(73):  r0 00000033  r1 00000001  r2 00000000  r3 00000000
05-21 09:20:17.539: I/DEBUG(73):  r4 00000033  r5 002a8d90  r6 00000000  r7 4051a9c0
05-21 09:20:17.539: I/DEBUG(73):  r8 001dfb38  r9 0000002d  10 804cbc7c  fp 804b4108
05-21 09:20:17.539: I/DEBUG(73):  ip afa03108  sp 44b3bd20  lr 8004be0f  pc 80054a7c  cpsr 60000030
05-21 …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface android native-methods native-code

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

如何在android上调试纯本机代码?

我已经从纯C++代码构建了二进制可删除代码,并且在Android设备上运行时会提示时间错误.

我如何调试Android的纯本机代码?似乎现有方法不适用于纯本机代码.

debugging android native-code

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

C#中的本机代码?

我从去年10月开始观看Microsoft构建大会,我注意到他们宣布,要构建新的Metro风格应用,开发人员可以使用C#编写本机代码。这怎么可能?我只是好奇。C#是否不是设计(作为CLI标准的一部分)首先被编译为中间字节代码然后在虚拟机上运行的?在虚拟机上运行的东西如何称为“本机代码”?

c# bytecode managed-code virtual-machine native-code

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

应用程序崩溃与Android 4.0或更高版本

我正在开发一个app,我将使用android NDK和JNI.每当我在任何Android 4.0或更高版本上运行我的应用程序...我的应用程序将崩溃并给出以下错误...

A/libc(18556): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
D/libEGL(18606): loaded /system/lib/egl/libGLES_android.so
D/libEGL(18606): loaded /system/lib/egl/libEGL_adreno200.so
D/libEGL(18606): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
D/libEGL(18606): loaded /system/lib/egl/libGLESv2_adreno200.so
I/Adreno200-EGLSUB(18606): <ConfigWindowMatch:2078>: Format RGBA_8888.
D/OpenGLRenderer(18606): Enabling debug mode 0
Run Code Online (Sandbox Code Playgroud)

主要问题是 Fatal signal 11 (SIGSEGV) at 0xdeadbaad(code=1)

如果有人知道这个...然后告诉我原因.

java-native-interface android native-code android-ndk

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

5
推荐指数
0
解决办法
986
查看次数

使用硬件加速的Android MediaCodec解码器在本机代码中访问冲突

我的目标是使用Android MediaCodec解码视频流,然后使用输出图像在本机代码中进行进一步的图像处理.

平台:华硕tf700t android 4.1.1.测试流:H.264全高清@ 24 frm/s

有了Tegra-3 SoC,我依靠硬件支持视频解码.在功能上,我的应用程序表现得如预期的那样:我确实可以访问解码器图像并正确处理它们.但是,我遇到了非常高的解码器CPU负载.

在以下实验中,过程/线程负载由adb shell中的"top -m 32 -t"测量.为了从"top"获得可靠的输出,所有4个cpu内核都通过运行一些永久循环以最低优先级循环的线程来强制激活.这通过重复执行"cat/sys/devices/system/cpu/cpu [0-3]/online"来确认.为了简单起见,只有视频解码,没有音频; 并且没有时序控制,因此解码器尽可能快地运行.

第一个实验:运行应用程序,调用JNI处理函数,但所有进一步的处理调用都被注释掉了.结果:

  • 吞吐量:25 frm/s
  • 1%加载应用程序的线程VideoDecoder
  • 24%负载的进程/系统/ bin/mediaserver的线程Binder_3

似乎解码速度受CPU限制(四核CPU的25%)......启用输出处理时,解码图像正确并且应用程序正常工作.唯一的问题:解码时cpu负载过高.

经过大量的实验,我考虑给MediaCodec一个表面来绘制它的结果.在所有其他方面,代码是相同的.结果:

  • 吞吐量55 frm/s(不错!!)
  • 2%加载应用程序的线程VideoDecoder
  • 1%加载进程/ system/bin/mediaserver的线程mediaserver

实际上,视频显示在提供的Surface上.由于几乎没有任何CPU负载,这必须是硬件加速......

如果提供Surface,de MediaCodec似乎只使用硬件加速?

到现在为止还挺好.我已经倾向于使用Surface作为解决方法(不是必需的,但在某些情况下甚至是一个很好的).但是,如果提供表面,我无法访问输出图像!结果是本机代码中的访问冲突.

这真让我困惑!我没有看到的访问限制任何想法,任何或文档中http://developer.android.com/reference/android/media/MediaCodec.html.此外,谷歌I/O演示文稿http://www.youtube.com/watch?v=RQws6vsoav8中也未提及此方向.

那么:如何使用硬件加速Android MediaCodec解码器并以原生代码访问图像?如何避免访问冲突?任何帮助都会被激活!也有任何解释或提示.

我敢肯定的MediaExtractor和MediaCodec正确使用,因为该应用程序是functionaly OK(只要我不提供表面).它仍然是非常实验性的,在todo列表上有一个很好的API设计;-)

请注意,两个实验之间的唯一区别是变量mSurface:null或"mDecoder.configure(mediaFormat,mSurface,null,0)中的实际Surface";

初始化代码:

mExtractor = new MediaExtractor();
mExtractor.setDataSource(mPath);

// Locate first video stream
for (int i = 0; i < mExtractor.getTrackCount(); i++) {
    mediaFormat = mExtractor.getTrackFormat(i);
    String mime = mediaFormat.getString(MediaFormat.KEY_MIME);
    Log.i(TAG, String.format("Stream %d/%d %s", i, mExtractor.getTrackCount(), mime));
    if (streamId …
Run Code Online (Sandbox Code Playgroud)

android access-violation native-code

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

Android本机代码如何针对多种处理器类型?

据我所知,Android上的本机代码是直接与特定设备的处理器一起工作的代码.因此,如果我想利用某个处理器,我会使用本机代码.

但是,如果我想创建一个包含本机代码的应用程序,但是针对多个处理器,会发生什么?

我是否必须制作多个应用程序,每个架构一个?或者有没有办法将多个版本的本机代码放在一个应用程序中,选择与其运行的设备的处理器匹配的应用程序?

performance android native-code android-ndk

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