androidc语言调试程序(android调用c)

今天给各位分享androidc语言调试程序的知识,其中也会对android调用c进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、如何在Android studio下调试ndk2、c语言中如何使用android ADB命令??3、安卓系统上能运行c语言的程序吗4、C语言 调试程序5、c语言程序exe如何在手机运行

如何在Android studio下调试ndk

android studio ndk调用过程如下:

通过jniaes案例说明调用NDK层配置过程

而我们通过底层来判断签名是否正确,如果正确则继续执行核心代码,否则退出程序,这样就可以防止别人恶意反编译,并进行二次打包。

首先去官网下载一个最新的NDK,随便放到哪都行,像我放在D:\Dev\Android\android-ndk-r10d.

(1) 新建一个项目:名称JniAes

首先在java类中添加native接口,注意写好native接口和System.loadLibrary()即可。代码如下:

1 public synchronized static native String getFromNativeIv();2 public synchronized static native String getStringFromNative();3 public synchronized static native int jniCheckAPP(Context context);4

然后build project得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录:

aes\app\build\intermediates\classes\debug\android\

(2)接下来跟class文件生成相应的.h头文件,执行如下命令即可

点击”View-Tool Windows-Terminal” 即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件.javah -d jni -classpath c:\Users\sodinochen\AppData\Local\Android\sdk\platforms\android-16\android.jar;..\..\build\intermediates\classes\debug com.aes.jniaes.MainActivity

(3)然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫strk.c 。

strk.c文件,用于实现核心代码逻辑,判断包名.哈希值是否合法,如果返回1,为合法。反之,则不合法。入口方法为:jint Java_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv* env, jobject context,      jobject thiz)

接下来在工程的local.properties文件中添加NDK路径(上面下载好的那个NDK),类似其中的SDK路径一样,我的添加后如下:

sdk.dir=D\:\\Dev\\Android\\android-sdk-windowsndk.dir=D\:\\Dev\\Android\\android-ndk-r10d

(4)接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:

defaultConfig {        applicationId “com.aes.jniaes”        minSdkVersion 15        targetSdkVersion 22        versionCode 1        versionName “1.0”        ndk {            moduleName “checkapp-jni”       //生成的so名字            abiFilters “armeabi”, “armeabi-v7a”, “x86”   //输出指定三种abi体系结构下的so库。目前可有可无。        }    }

(5)最后就是添加静态初始化loadLibrary代码,添加如下:

static {         System.loadLibrary(“checkapp-jni”);    //so文件的名字       }

编译出来的so文件在aes\app\build\intermediates\ndk\debug\lib目录下

那么如何将编译好的so文件进行使用,可以通过如下方式:

二 . 引用so文件

(1).在“src/main”目录中新建名为“jniLibs”的目录;

(2).将so文件复制、粘贴到“jniLibs”目录内。

c语言中如何使用android ADB命令??

ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.

先说安装方法, 电脑上需要安装客户端. 客户端包含在sdk里. 设备上不需要安装, 只需要在手机上打开选项settings-applications-development-USBdebugging.

对于Mac和Linux用户, 下载好的sdk解压后, 可以放~或者任意目录. 然后修改~/.bash_profile文件, 设置运行环境指向sdk的tools目录.

具体是打开~/.bash_profile文件(如果没有此文件也可以自行添加), 在里面加入一行:

export PATH=${PATH}:你的sdk目录/tools

然后就可以使用adb命令了.

嫌安装麻烦的同学其实也可以省去上面安装步骤, 直接输入完整路径来使用命令

对于windows xp用户, 需要先安装usb驱动

android_usb_windows.zip (1.33 MB) , 然后如果你只打算使用adb而不想下载整个sdk的话, 可以下载这个单独的adb工具包

adb_win.zip (571.56 KB) 下载后解压, 把里面 adb.exe 和 AdbWinApi.dll 两个文件放到系统盘的 windows/system32 文件夹里就可以了

1.确定手机root了,取得了root权限才能删除系统文件呀.

2.下载Android_db.rar,解压到%windir/%System32下.

3.手机连接数据线,在电脑上打开cmd,然后输入命令

adb remount

adb shell

su

执行完成之后,你会看到:

* daemon not running. starting it now *

* daemon started successfully *

4.接着就是Linux命令行模式了,输入

cd system/app

你会发现没啥变化,然后输入ls回车.

这时候列表显示了system/app里面的所有文件,也就是Rom集成的一些软件了.

5.开始删除吧.比如删除Youtube,他的文件名是Youtube.odex和Youtube.apk

我们要删除这2个文件,敲入以下命令:

rm Youtube.*

重启,Youtube已经删除掉了,注意各位同学千万不要删除你不知道是啥的东西.

指定允许AVD的内存大小:

emulator -avd avdName -partition-size 256

启动一个叫avdName的模拟器,允许内存最大为256MADB常用的几个命令

1. 查看设备

adb devices

这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

2. 安装软件

adb install

这个命令将指定的apk文件安装到设备上

3. 卸载软件

adb uninstall 软件名

adb uninstall -k 软件名

如果加 -k 参数,为卸载软件但是保留配置和缓存文件.

4. 登录设备shell

adb shell

adb shell

这个命令将登录设备的shell.

后面加将是直接运行设备命令, 相当于执行远程命令

5. 从电脑上发送文件到设备

adb push 本地路径 远程路径

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

6. 从设备上下载文件到电脑

adb pull 远程路径 本地路径

用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

7. 显示帮助信息

adb help

这个命令将显示帮助信息

删除Android系统Rom自带的软件

Android系统没有卸载Rom自带软件的功能.可能有些同学很想删除废了武功的Youtube,想删除墙那边的Twitter.

加上Android的快捷方式没法修改没法自己排序没法分页.

安装的程序太多就会发现原来找到自己想要的东西很难.

综上所述,我觉得告知各位菜鸟同学如何删除自带的程序是很有必要的一件事情.1.确定手机root了,取得了root权限才能删除系统文件呀.

2.下载Android_db.rar,解压到%windir/%System32下.

3.手机连接数据线,在电脑上打开cmd,然后输入命令

adb remount

adb shell

su

执行完成之后,你会看到:

* daemon not running. starting it now *

* daemon started successfully *

4.接着就是Linux命令行模式了,输入

cd system/app

你会发现没啥变化,然后输入ls回车.

这时候列表显示了system/app里面的所有文件,也就是Rom集成的一些软件了.

5.开始删除吧.比如删除Youtube,他的文件名是Youtube.odex和Youtube.apk

我们要删除这2个文件,敲入以下命令:

rm Youtube.*

重启,Youtube已经删除掉了,注意各位同学千万不要删除你不知道是啥的东西.

指定允许AVD的内存大小:

emulator -avd avdName -partition-size 256

启动一个叫avdName的模拟器,允许内存最大为256M

以上参考百度经验,希望对你有帮助

安卓系统上能运行c语言的程序吗

可以的,只要编译器支持,C语言程序不像JAVA,最终都会被编译器编译成机器代码的,所以关键是编译器能不能编译成相关CPU和操作系统支持的代码。

dos是的批处理是不支持的。

编写手机软件目前主要还是用C和JAVA,C用得最多

androidc语言调试程序(android调用c)

C语言 调试程序

while(s[i]t[j] s[i]== t[j] ) ;

改成

while(s[i]t[j] (s[i]== t[j]) ) {i++;j++};

c语言程序exe如何在手机运行

Android设备上的应用程序大都是用Java语言编写的,但有时我们需要用C语言进行一些底层的开发,但我们一般的PC机CPU都是Intel x86架构,而大多数移动设备CPU都是ARM架构,因此在Linux上编译运行的可执行程序是不能直接在Android手机上运行的,但是我们可以在PC机上交叉编译出能在ARM平台下运行的程序。

1.安装交叉编译工具

首先,我们需要在Linux下安装 arm-none-linux-gnueabi-gcc 交叉编译工具链下载地址(找了好久~_~)

不多说了,放到usr/local/bin目录下,解压文件包,解压后得到一个arm-2009q1文件夹,然后把arm-2009q1下的bin目录配进环境变量

如果在终端下执行arm-none-linux-gnueabi-gcc -v可以成功的话,就说明配置成功了,如图

2.编译C程序

接着我们就可以写C语言程序并且编译了,随便写一个HelloWorld程序

[cpp]  view plain  copy

#include stdio.h

int main()

{

printf(“Hello world!\n”);

return 0;

}

然后用arm-none-linux-gnueabi-gcc编译(其实下面的编译命令有问题,具体后面再说)

[plain]  view plain  copy

请点击输入图片描述

arm-none-linux-gnueabi-gcc test.c -o test

3.赋予可执行权限

然后,把可执行文件拷贝到手机sdcard中

请点击输入图片描述

尝试运行一下test,结果Permission denied

请点击输入图片描述

明明有执行权限呀,后来得知原因是sdcard目录下是不可以执行程序的,而在根目录的/data/local目录下是可以执行的

先获得管理员权限,这样才能读写根目录

[plain]  view plain  copy

请点击输入图片描述

su

将程序cat到指定的目录中

[plain]  view plain  copy

请点击输入图片描述

cat test  /data/local/test

这时还只有读写权限,我们要添加可执行权限

[plain]  view plain  copy

请点击输入图片描述

chmod 777 test

再次尝试执行

请点击输入图片描述

结果是No such file or directory!

后来经过借鉴网友的经验,发现这个是因为我们的程序使用的是动态链接方式编译的,而Android和Ubuntu的链接库文件路径不同,导致找不到文件

可以用gcc -static命令改用静态链接的方式编译

[plain]  view plain  copy

请点击输入图片描述

arm-none-linux-gnueabi-gcc test.c -o test -static

静态链接后程序大了不少,再重复上述步骤,终于可以成功运行了,Hello world!

请点击输入图片描述

androidc语言调试程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android调用c、androidc语言调试程序的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月29日 19:32:41
下一篇 2024年3月29日 19:38:59

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7200
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6300
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3400
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信