快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

NDK怎么制作一个安卓执行程序-创新互联

本篇文章给大家分享的是有关NDK怎么制作一个安卓执行程序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联2013年开创至今,先为河南等服务建站,河南等地企业,进行企业商务咨询服务。为河南企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

前言

怎么在安卓实现tracerout,因为大部分安卓系统都不带traceroute命令,只能使用ping来实现模拟。
比如ping的-t命令,可以设置ttl,逐步增加调试,测试出路由的每一条。
但是效率很低,想用c写一个方法
我使用ndk做了个so,在里面使用rawsocket实现icmp功能,但是发现权限不足,无法建立socket。
查阅资料发现安卓没有root权限是运行不了rawsocket的。

找到了一个方法可以解决
https://blog.csdn.net/Inconsolabl/article/details/50437588
把二进制文件放入用户空间,然后设置权限700
-rwx------ (700) -- 只有属主有读、写、执行权限。
试验成功,找网上了一个交叉编译的traceout封在app里面,直接调用。

最近又需要做一个tcpping的功能,但是没有找到现成的交叉编译的二进制程序。其实tcpping就是个握手探测,用java也可以写。但是java那边比较忙,我试着写一个交叉编译的tcpping。

实现

https://blog.csdn.net/qushaobo/article/details/81089466
参考代码写了个例子
但是不能执行,显示
"./data/user/0/com.example.myapplication/files/tcpping": error: Android 5.0 and later only support position-independent executables (-fPIE).
发现例子代码是

#include 
#include 
#include 
int main (int argc, char *argv[])
{

    fprintf(stderr, "this is a test...\n");

    return 0;
}

使用的是stderr,很可能安卓的权限很严格,输出到标准错误里也不行,改成printf就ok了。

格式

对例子代码做了一些兼容性修改
Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tcpping
LOCAL_SRC_FILES := tcpping.cpp

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    LOCAL_CFLAGS += -D__ARMV7__
    LOCAL_ARM_MODE := arm
else
    LOCAL_ARM_MODE := arm
endif

#兼容5.0+
LOCAL_CFLAGS += -fPIE -fPIC
LOCAL_LDFLAGS += -fPIE -pie

include $(BUILD_EXECUTABLE)

Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi armeabi-v7a x86
APP_PLATFORM := android-14

进行编译
$NDK/ndk-build DK_DEBUG=1 -B V=1

进入libs目录,拿到tcpping二进制在3个平台下的执行程序

以上就是NDK怎么制作一个安卓执行程序,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:NDK怎么制作一个安卓执行程序-创新互联
地址分享:http://6mz.cn/article/hjhgj.html

其他资讯