今天给各位分享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用得最多
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语言调试程序的信息别忘了在本站进行查找喔。