Articles of AndroidNDK

如何从编译的二进制文件(.so)中删除string

如何从/混淆编译的二进制文件中删除string? 目标是避免让人们阅读里面的函数/方法的名字。 它是一个dynamic库(.so),由Android的C ++代码和NDK工具(包括GCC)编译而成, 我使用-O3编译,并且已经使用了arm-eabi-strip -g mylib.so来删除debugging符号,但是当我执行strings mylib.so所有函数/方法的名称仍然是可读的。

从Delphi直接调用Android NDK函数的困难

可以通过JNI和NDK从Delphi调用Android C函数。 为了实现这一点,相当多的工作,并build议直接调用NDK函数。 为此,我创build了一个小的示例文件来声明一个外部的C函数,这些函数是我在Delphi源代码中find的。 在<path to delphi>\source\rtl\android更具体。 我创build了一个非常小的testing程序来testing直接从Delphi调用C函数的function。 所有源代码,你会发现下面,这是我目前正在testing。 unit DLL_external; interface const MIDI_Lib = '/usr/lib/libmiditest.so'; test_fun = 'test_1'; function test_1 (n: Integer): Integer; cdecl; external MIDI_Lib name test_fun; implementation initialization finalization end. 初始化和终结是必要的,因为链接错误是指一些缺less的初始化和终止代码。 调用类: unit DLL_Test_Main; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, DLL_external; //{$I Androidapi.inc} type TForm1 […]

需要一个简单的Linux C ++ IDE(Android NDK)

我需要一个IDE,必须: 允许运行〜/ android-ndk-r7 / ndk-build脚本进行编译; 拦截gcc输出并显示给我; 当我点击一个错误行时,转到错误位置:在提到的行打开提到的文件。 我有一个大的现有的C + +项目,并将其移植到Android / NDK。 (Code :: Blocks和Eclipse都不是第三个,也许我错过了一些东西?)

为Android构build的共享库(.so)文件可以包含/链接并在Android应用程序中使用吗?

我正在开发一个项目,我需要在Android应用程序中包含NGSpice模拟库,当然也可以使用它。 我尝试使用SWIG和Android NDK在我的android应用程序中包含NGSpice窗口DLL,但事实certificate它甚至不可能,所以现在我开始考虑将NGSpice作为Linux的共享库 。 现在我的问题是,我可以像在我的Android应用程序中一样使用Linux的共享库,或者它需要build立不同的方式来处理我的Android应用程序。 谢谢。

NDKBuild失败

我无法让我的NDK在Android Studio中正确编译。 每当我尝试运行编译我收到以下错误。 错误:任务“:app:ndkBuild”的执行失败。 启动过程中发生了一个问题'command'ndk-build.cmd'' 我有以下设置 而我的build.gradle文件如下。 import org.apache.tools.ant.taskdefs.condition.Os apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "edu.uky.cs.www.diagramaphone" minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" sourceSets.main{ jniLibs.srcDir 'src/main/libs' jni.srcDirs = [] //disable automatic ndk-build call } project.ext.versionCodes = ['armeabi':1, 'armeabi-v7a':2, 'arm64-v8a':3, 'mips':5, 'mips64':6, 'x86':8, 'x86_64':9] //versionCode digit for each supported […]

“你的APP_BUILD_SCRIPT指向一个未知的文件:./jni/Android.mk”

我搜查了所有的networking(我认为)。 以及说过我曾经试过但没有运气仍然无法正常工作。 即时通讯testing它在cygwin和Windows下 这是我的文件/项目的目标: D:\Java_2\workspace_indigo\JniTest\.classpath D:\Java_2\workspace_indigo\JniTest\.project D:\Java_2\workspace_indigo\JniTest\AndroidManifest.xml D:\Java_2\workspace_indigo\JniTest\assets D:\Java_2\workspace_indigo\JniTest\bin D:\Java_2\workspace_indigo\JniTest\files D:\Java_2\workspace_indigo\JniTest\gen D:\Java_2\workspace_indigo\JniTest\native D:\Java_2\workspace_indigo\JniTest\proguard.cfg D:\Java_2\workspace_indigo\JniTest\project.properties D:\Java_2\workspace_indigo\JniTest\res D:\Java_2\workspace_indigo\JniTest\src D:\Java_2\workspace_indigo\JniTest\bin\classes D:\Java_2\workspace_indigo\JniTest\bin\res D:\Java_2\workspace_indigo\JniTest\bin\classes\com D:\Java_2\workspace_indigo\JniTest\bin\classes\jni D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni\JniTestActivity.class D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni\R$attr.class D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni\R$drawable.class D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni\R$layout.class D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni\R$string.class D:\Java_2\workspace_indigo\JniTest\bin\classes\com\testjni\R.class D:\Java_2\workspace_indigo\JniTest\bin\classes\jni\Natives.class D:\Java_2\workspace_indigo\JniTest\gen\com D:\Java_2\workspace_indigo\JniTest\gen\com\testjni D:\Java_2\workspace_indigo\JniTest\gen\com\testjni\R.java D:\Java_2\workspace_indigo\JniTest\native\Android.mk D:\Java_2\workspace_indigo\JniTest\native\Application.mk D:\Java_2\workspace_indigo\JniTest\native\include D:\Java_2\workspace_indigo\JniTest\native\lib.c D:\Java_2\workspace_indigo\JniTest\native\main.c D:\Java_2\workspace_indigo\JniTest\native\Makefile D:\Java_2\workspace_indigo\JniTest\native\testlib D:\Java_2\workspace_indigo\JniTest\native\testlib.c D:\Java_2\workspace_indigo\JniTest\native\include\jni_Natives.h D:\Java_2\workspace_indigo\JniTest\native\include\jni_Natives.h_orig D:\Java_2\workspace_indigo\JniTest\res\drawable-hdpi D:\Java_2\workspace_indigo\JniTest\res\drawable-ldpi D:\Java_2\workspace_indigo\JniTest\res\drawable-mdpi D:\Java_2\workspace_indigo\JniTest\res\layout D:\Java_2\workspace_indigo\JniTest\res\values D:\Java_2\workspace_indigo\JniTest\res\drawable-hdpi\ic_launcher.png D:\Java_2\workspace_indigo\JniTest\res\drawable-ldpi\ic_launcher.png D:\Java_2\workspace_indigo\JniTest\res\drawable-mdpi\ic_launcher.png D:\Java_2\workspace_indigo\JniTest\res\layout\main.xml D:\Java_2\workspace_indigo\JniTest\res\values\strings.xml D:\Java_2\workspace_indigo\JniTest\src\com D:\Java_2\workspace_indigo\JniTest\src\jni D:\Java_2\workspace_indigo\JniTest\src\com\testjni D:\Java_2\workspace_indigo\JniTest\src\com\testjni\JniTestActivity.java […]