最新文章

android so库生成和使用

一、Android studio ndk环境 点击SDK Manager,如下图所示安装ndk。二、创建NDK项目 File->new -> new project 选择native c++如上图所示。next->next->finish 即可生成NDK示例项目。三、生成jar及so库完成上述两步之后,会看到如下的项目结构:MainActivity通过System.loadLibrary("nattive-lib")方法加载cpp下的natice-lib.cpp文件。打开natice-lib.cpp文件我们可以看到Java_com_yan_ndkdemo_MainActivity_stringFromJNI,它的命名格式就是JAVA_包名_(调用的类名)_方法名。所以我们在其他的项目是不可以直接调用我们的cpp,so库就是cpp写的程序打包成的,也就是说我们如果直接这样打包成so库,那么别人在使用的时候必须建立一个和我们包名、类名、方法名一样的类才可以调用,为了让调用者开发便捷所以我们就得为我们的so库编写调用的sdk供别人使用。1、新建我们的sdk程序类去实现和MainActivity一样的加载so库的方法 和调用cpp的方法,如下图 我新建了个moduleTestJni里面stringFromJNI方法报错是因为我们cpp里面调用的是MainActivity下stringFromJNI,换就话说就是没有cpp去实现TestJni下的stringFromJNI方法。 ndklib的包名须和主工程包名一致。2、更改主工程中nattive-lib.cpp下的代码将类名改成TestJni3、生成so库在主项目build.gradle加入如下代码cmake { cppFlags "" abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'}build-》Rebuild project 生成so库在下图所示位置4.生成jar在ndklib下build.gradle加入如下代码task againMakeJar(type: Copy) { def name = 'NdkLib' //Library名称 delete 'libs/' + name + '.jar' //删除之前的旧jar包 from('build/intermediates/packaged-classes/release/') //从这个目录下取出默认jar包 into('libs/') //将jar包输出到指定目录下 include('classes.jar') rename('classes.jar', name + '.jar') //自定义jar包的名字}againMakeJar.dependsOn(build)点击右侧Gradle找到ndklib下的other-》againMakeJar,生成jar生成的jar文件就在ndklib下的libs文件夹下最后把3、4生成的so库和jar 导入到其他项目就可以使用。如下图项目结构和使用:" >

分类:android
2019-10-11

第一章 Flutter环境搭建并运行Demo

最近公司不是很忙,所以学习了下今年很火的跨平台框架flutter,这篇文章主要是分享学习flutter过程,有什么问题欢迎大家一起讨论研究。中文官方地址:https://flutterchina.club1.使用镜像由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中:2.下载sdksdk下载地址:https://flutter.dev/docs/development/tools/sdk/releases#windows将下载的sdk解压到你想要放置的目录即可。3.Android studio flutter 插件下载 安装 flutter 重启Android studio 即可4. 新建并运行 flutter 项目默认第一个next 然后如下图 选择第二步下载的sdk路径及项目存储的路径即可点击next ->finish 即可完成等待项目Build完成 点击run 连接模拟器或者真机 即可看到效果。。这是我昨天学习的内容 今天在这里分享下。

Android 图片加载

YanImageload一、项目介绍本项目用于加载网络图片,其中包含图片的三级缓存、圆角图片、圆形图片等二、依赖dependencies { implementation 'com.github.yanshao:YanImageload:v1.0' } allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 三、使用在需要的地方直接调用下面代码 YanImageLoad.getInstance().disPlay(imageview, "http://xxxx", 2); 第一个参数 imagview 为imagview控件 第二个参数 图片url 第三个参数 1 圆角 2 圆形 其他值为正常显示代码地址" >

分类:android
2019-03-21

android apk 导出工具

一、概述 现在绝大多数手机apk在安装完成后,会主动删除对应的apk安装包,大家在安装完成后想把这个apk分享给其他人还需要在去找到对应的下载链接才可以分享给亲戚朋友。此项目的主要功能就是将安装过后的文件导出成apk 另存在手机目录,这样大家就可以分享apk给任何人了。二、实现思路 大家都知道apk安装后会生成几个目录 1. /data/data/ 包名 目录 2./data/app/包名 目录目录1为 对应app的缓存及数据库存储路径,目录2下有资源及名称为base.apk的文件上面提到的base.apk是可以安装的该应用的备份apk包 ,所以我们需要做的就是根据包名找到/data/app 目录 并将其目录下的base.apk复制一份到我们指定的目录即可(1)获取手机中所有安装的appList packages = getPackageManager().getInstalledPackages(0);for (int i = 0; i < packages.size(); i++) { PackageInfo packageInfo = packages.get(i); if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0) { //非系统应用 AppInfo tmpInfo = new AppInfo(); tmpInfo.setAppName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString()); tmpInfo.setPackageName(packageInfo.packageName); tmpInfo.setVersionName(packageInfo.versionName); tmpInfo.setVersionCode(packageInfo.versionCode); tmpInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(getPackageManager())); appList.add(tmpInfo); }}(2) 根据包名复制data/app 下的base.apk到指定目录File sd = new File(Environment.getExternalStorageDirectory().getPath()+"/yan");ApplicationInfo applicationInfo= null;try { applicationInfo = getPackageManager().getApplicationInfo(appList.get(position).getPackageName(), 0); Log.e("yy","applicationInfo="+applicationInfo.sourceDir); copyFile(applicationInfo.sourceDir,sd.getAbsolutePath(),appList.get(position).getAppName()+".apk");} catch (PackageManager.NameNotFoundException e) { e.printStackTrace();}public void copyFile(String oldPath, String newPath,String name) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); File newfile = new File(newPath); if (oldfile.exists()) { //文件存在时 InputStream inStream = new FileInputStream(oldPath); //读入原文件 if (!newfile.exists()){ newfile.mkdirs(); newfile.createNewFile(); } File path=new File(newfile.getAbsoluteFile()+"/"+name); FileOutputStream fs = new FileOutputStream(path); byte[] buffer = new byte[1444]; int length; while ( (byteread = inStream.read(buffer)) != -1) { bytesum += byteread; //字节数 文件大小 fs.write(buffer, 0, byteread); } inStream.close(); Toast.makeText(MainActivity.this,"导出成功!导出目录为:"+path,Toast.LENGTH_SHORT).show(); } } catch (Exception e) { System.out.println("复制单个文件操作出错"); e.printStackTrace(); }}apk:下载地址

分类:android
2019-03-18

大杂烩

SQL注入系列教程(6套) 点我查看 rin9 搜索型注入 点我查看 2887 0day系列大全(8套) 点我查看 nbbb 0day视频教程(3套) 点我查看 iifn             C#_ASP.NET视频教程(99套) 点我查看 hr64 C++视频教程(23套) 点我查看 hk24 html视频教程(10套) 点我查看 yf45 javascript视频教程(6套) 点我查看 08gb JAVA视频教程(45套) 点我查看 无 php视频教程(14套) 点我查看 rroe SQL视频教程(3套) 点我查看 5ksv SQL视频教程(6套) 点我查看 uqhj 微信开发视频教程(3套) 点我查看 c9j1 易语言视频教程(24套) 点我查看 2af7 C语言视频教程(110套) 点我查看 5csn delphi视频教程 点我查看 mhog iphone开发视频教程(56套) 点我查看 qznh jsp视频教程 点我查看 raml python视频教程(19套) 点我查看 rb4v VB视频教程(3套) 点我查看 3uzq Android编程(40套) 点我查看   高级Windows程序设计 点我查看 imr1 汇编教程(7套) 点我查看 mh4l Dos教程 点我查看 v183 编程回忆录(7套) 点我查看 vg14 Web前端开发(15套) 点我查看 tzb2 LINUX教程大全(8套) 点我查看 5yzp       MySQL入门到全面精通视频教程 全40讲 点我查看 myl9 PHP100系列教程 点我查看 g9rr SQL SEVER05 08 12教程(3套) 点我查看 saxq 网游编程教程 点我查看 bpda 驱动系列教程(6套) 点我查看 kpok 精易论坛易语言核心支持库全套教程 点我查看 w66k 牛B代码论坛PE格式学习视频教程(29课) 点我查看 sjnv 阳光学院数据结构[24课] 点我查看 sayu       大学吧 点我查看 n71u Cisco思科教程 点我查看 rnce             清华大学计算机学习资源(20套) 点我查看 vi76 吉林大学计算机远程教程(13套) 点我查看 9i47 其它大学计算机课程(5套) 点我查看 qulv 上海交通大学计算机专业课程(45套) 点我查看 1d0d 电脑维修教程(13套) 点我查看 dxpq Apache服务深入解析系列视频教程 点我查看 zwv1 电脑维修(4套) 点我查看 4mi9 新网站SEO五步优化法原版无KEY 点我查看 a52k       电脑技术类教程(3套) 点我查看 baom 图文教程PIN进度保存和修改方法 点我查看 1cgk 雨荷数据恢复教程1-63集 点我查看 u8o8 最新远程控制别人电脑比QQ更快 点我查看 gdnd 经典万能密码进后台 点我查看 lc68 图书教程 点我查看 1gh5       计算机基础技术书籍 点我查看 ysos linuxPDF教程 点我查看 yyti             以下为软件链接 50元软件链接 文件名 链接 提取密码       优酷会员电影免费看 点我查看 3p46       加密狗破解 点我查看 cu3r       录屏工具 点我查看 cmmr             字典 点我查看 ter8       WEB旁注爬虫 点我查看 x16f

PHP 发送电子邮件

PHP mail() 函数PHP mail() 函数用于从脚本中发送电子邮件。语法mail(to,subject,message,headers,parameters)参数描述to必需。规定 email 接收者。subject必需。规定 email 的主题。注释:该参数不能包含任何新行字符。message必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。每行应该限制在 70 个字符内。headers可选。规定附加的标题,比如 From、Cc 和 Bcc。应当使用 CRLF (\r\n) 分隔附加的标题。parameters可选。对邮件发送程序规定额外的参数。注释:PHP 运行邮件函数需要一个已安装且正在运行的邮件系统(如:sendmail、postfix、qmail等)。所用的程序通过在 php.ini 文件中的配置设置进行定义。请在我们的PHP Mail 参考手册阅读更多内容。PHP 简易 E-Mail通过 PHP 发送电子邮件的最简单的方式是发送一封文本 email。在下面的实例中,我们首先声明变量($to, $subject, $message, $from, $headers),然后我们在 mail() 函数中使用这些变量来发送了一封 E-mail:PHP Mail 表单通过 PHP,您能够在自己的站点制作一个反馈表单。下面的实例向指定的 e-mail 地址发送了一条文本消息: 菜鸟教程(runoob.com)

分类:php
2019-03-13

资料

职业: Android开发
QQ: 512454068
微博: Wang丶Yan的微博
QQ群: 程序猿进化群
坐标: 陕西-西安

微信二维码

友情链接:

github
coder立夏

备案信息

版权©所有
陕ICP备18006260号

联系我:

QQ:512454068
微信扫描上面的二维码