Android NDK之JNI陷阱

Android NDK(native develop kit)内容。这里只想记录下JNI(java native interface)经常遇到到问题。 问题1.  忘记delete local reference。带New到方法(如:NewByteArray)这样到方法比较好辨认,需要手动调用DeleteLocalRef()来释放(返回值除外)。比较特殊的一个方法是:GetByteArrayELement必须要调用ReleaseByteArrayElements进行释放。当然如果你只是取bytearray中到byte,那么完全可以用GetByteArrayRegion实现。 问题2. 没有NewGlobalRef。 在不同线程调用java方法,需要保存jobject对象,这时需要对jobject对象做全局引用, ......

Android Studio你必须学会的快捷键(Eclipse转AS必看)

前言:从Eclipse转到Android Studio之后,一开始把keymap设置成Eclipse,却发现有些常用的快捷键都失效了,大概是冲突了。想了下,觉得与其重新设置快捷键,不如去适应AS的快捷键,毕竟听说AS新增了好些有用的快捷键。于是把keymap又改回Default。事实也证明,熟悉起来还是挺快的,大概花了两天时间,就能很熟练了。以下是个人整理的Eclipse和AS的常用快捷键对照表,方便刚转AS的小伙伴们快速入手。 功能 Eclipse Android Studio 快速查找类、文件 Ctrl + Shift + T/R Ctrl + N 、Ctrl + Alt + N 查找、替换 Ctrl + F Ctr ......

JNI的某些数组和字符串类型转换

jbytearray转c++byte数组 C代码   jbyte * arrayBody = env->GetByteArrayElements(data,0); jsize theArrayLengthJ = env->GetArrayLength(data); BYTE * starter = (BYTE *)arrayBody; jbyteArray 转 c++中的BYTE[] C代码   //jbytearray strIn jbyte * olddata = (jbyte*)env->GetByteArrayElements(strIn, 0); jsize  oldsize = env->GetArrayLength(strIn); BYTE* bytearr = (BYTE*)olddata; int len = (int)oldsize; C++中的BYTE[]转jbyteArray C代码   //nOutSize是BYTE数组的长度 BYTE pData[ ......

Java层与Jni层的字节数组传递【适用于其他基本类型数组】

Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从Socket接收到的数据流返回给Java层。我简单地总结了一下,从Java层到Jni层,从Jni层到JAVA层,各有3种传递方式,下面用代码示例简单地介绍一下。 示例代码的主要文件有两个,一个是Native.java,是Java层的类;另一个是Native.c,是JNI层的文件,关键的地方我都用注释添加到代码中了,完整的代码见博文后面的附件。 一、 从Java传递数组到Jni层 ......

Android获取Mac地址,兼容6.0以下,6.0-7.0、7.0以上三种情况

package com.uiuno.common; import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.Reader; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import android.content.Context; import android.content.pm.PackageManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; impo ......

hPrivacy Policy

hPrivacy Policy General Description This privacy policy describes how we and our other group companies (referred to collectively in this policy as ‘we’, us’ and ‘our’) collect, use, process and share information that we collect about you. If you choose to use our product (including games, websites, advertising activities and other services), it means that you acknowledge and accept the terms of the existing content and probably updating content.   This p ......

Android 开发之接入Google支付

众所周知,Google Play是Google Android官方的应用商店,也是将应用发布到世界各地一个重要的渠道。支付作为盈利的一个重要手段,可以借助Google in-app Billing api来达到目的。 Google Play in-app Billing的接入过程需要阅读接入文档。官方的接入文档地址为: https://developer.android.com/google/play/billing/api.html (1)Google Play开发者控制台 Google Play开发者控制台是管理应用,配置商品和发布的后台。参考地址为: https://developer.android.com/distribute/googleplay/developer-console.html Google Play的帮助 ......

给 Android 开发者的 RxJava 详解

需阅读原文请点击:http://gank.io/post/560e15be2dca930e00da1083 前言 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么? 鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用过程中对 RxJava 有了一些理解,我 ......

Android 在 Eclipse 项目中使用 Leakcanary 内存泄露检测

一、前言 Leakcanary 是 Square 公司推出的一款开源项目,如果说没听说过 Leakcanary 的话,那 Square 的其他产品应该有听说过吧,曾推出过 okhttp,retrofit,picasso 等开源项目。Leakcanary 呢,是用于检测项目的内存泄露的,使用起来也很简单,但是这个项目是用于 Android Studio 的,至于 在 Android Studio 里怎么使用这里就不说了,打开上面的 Leakcanary 那个 Github 链接里面有说,由于一些人习惯用 Eclipse,或者一些之前在 Eclipse 中开发的老项目还没转成 Android Studio 的那怎么用这个 Leakcanary来检测内存泄露 ......

JNI与C++的数据类型转换

std::string转jstring jstring ToJString(JNIEnv* env, const std::string& value) { return env->NewStringUTF(value.c_str()); } jstring转std::string std::string ToCppString(JNIEnv* env, jstring value) { jboolean isCopy; const char* c_value = env->GetStringUTFChars(value, &isCopy); std::string result(c_value); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(value, c_value); return result; } bool转jboolean jboolean ToJBool(bool value) { return valu ......

Android适配——drawable和values的加载规则

Google搞了一大套 dip、sp、mdpi、hdpi、xhdpi之类的这些东西,简单说来,就是为了让我们轻松实现“与设备密度无关的视觉大小一致性”,这里需要明确的“视觉大小一致性”,就是说无论是在手机、低分辨率平板、高分辨率平板上,这个控件或者图片在物理尺寸上都是一样的。 这里我们借 @雨打萍 的一张图片来看看: (出处: http://blog.csdn.net/xiebudong/article/details/37040263) 其中,黑色和蓝色矩形的视觉大小就是一致的。 另外一个需要明确的是屏幕密度、分辨率、物理尺寸之间的关系: 以一个分辨率为1920×1200,物理尺 ......

Android P预览版发布,新特性不容错过!

文章转载至:http://club.huawei.com/thread-15344398-1-1.html 导读: 北京时间2018年3月8日,谷歌Android P开发者预览版在万众瞩目中发布,安卓绿色联盟邀请华为专家为广大开发者及各大加固厂商解读P版本中那些不容错过的新特性。华为终端开放实验室也将围绕P版本开展一系列的测试、交流活动,欢迎关注!     Android P 应用适配新特性 1  Private API     Android P 禁止应用通过发射调用系统hide标注的类、方法和属性,加入黑名单的私有接口被反射调用会返回null或者出现异常。     从目前的情况来看黑名单是空 ......

Android热更新技术的研究与实现(三)

微信 Tinker 看完上面的Qzone超级补丁方案,我们不禁会想有没有那么一种方案,能做到开发透明,但是却没有QZone方案的缺陷呢?肯定是有的,比如我们完全可以使用新的Dex,那样既不出现Art地址错乱的问题,在Dalvik也无须插桩。当然考虑到补丁包的体积,我们不能直接将新的Dex放在里面。但我们可以将新旧两个Dex的差异放到补丁包中,最简单我们可以采用BsDiff算法。 Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。 Tinker和以往的HotFix库思路不太一 ......

Android热更新技术的研究与实现(二)

Sophix—阿里终极热修复方案 不过阿里作为大厂咋可能没有个自己的热更新框架呢,所以阿里爸爸最近还是做了一个新的热更新框架SopHix 巴巴再次证明我是最强的,谁都没我厉害!!!因为我啥都支持,而且没缺点。。简直就是无懈可击! 那么我们就来项目集成下看看具体的使用效果吧! 先去创建个应用: 获取AppId:24582808-1,和AppSecret:da283640306b464ff68ce3b13e036a6e 以及RSA密钥**。三个参数配置在application节点下面: <meta-data android:name="com.taobao.android.hotfix.IDSECRET" android:v ......

Android热更新技术的研究与实现(一)

Android热更新技术的研究与实现(一) ——必备引言—— 本文因为篇幅较长,可能会有错别字出现,望见谅。 第一部分重点是将当下热门的热更新方案实现之后再研究,第二部分则是自己动手实现一个自己的热更新框架。 Android热更新技术的研究与实现之研究篇 ———概念讲解——– 热更新 相关概念 这个词出现的时间已经很久了,感觉现在要找工作才来看是晚了不少,但是好东西什么时候学习都不晚的。 今天看到一句话,和大家分享下,人一生有三样东西是别人抢不走的: 吃进胃里的食物 藏在心中的梦想 读进大脑里的书所以趁着我们的时光正好,多学 ......

Android热更新方案之阿里AndFix 原理以及源码解析

源码路径:https://github.com/alibaba/AndFix 原理: 修复过程: 源码解析过程如下: patchManager=newPatchManager(context); patchManager.init(appversion);//current version   patchManager做了以下工作: public PatchManager(Context context) {    mContext = context;    mAndFixManager = new AndFixManager(mContext);    mPatchDir = new File(mContext.getFilesDir(), DIR);    mPatchs = new ConcurrentSkipListSet<Patch>();    mLoaders = new ConcurrentHashMap<String, ClassLoader>(); ......

Android5.0,6.0,7.0,8.0新特性整理

Android 5.0行为变更 API级别:21 1. Android Runtime(ART) 大多数 Android 应用无需任何更改就可以在 ART 下工作。不过,部分适合 Dalvik 的技术并不适用于 ART。如需了解有关最重要问题的信息,请参阅在 Android Runtime (ART) 上验证应用行为。如存在以下情况,应特别注意: 您的应用使用 Java 原生接口 (JNI) 运行 C/C++ 代码。 您使用生成非标准代码的开发工具(例如,一些代码混淆工具)。 您使用与压缩垃圾回收不兼容的技术 2. 声音和振动 如果您当前使用 Ringtone、MediaPlayer 或 Vibrator 类向通知中添加声音和振动,则移 ......

GDCB勒索病毒免费破解

2018-02-28遭遇第一次病毒,起源于http://www.mob.com的一个网页,在Google浏览器中打开提示字体更新,下载字体后,就被迅速的篡改成GDCB文件了。

经过两天和数据公司的人讲价,最终放弃了,自己寻思国外找一下是否有破解之法,于是搜索到了。

最终下载得到一下软件:

http://download.csdn.net/download/guluo2010/10267014

 

请各位看官看清楚,本人为google得到资源,该软件是否存在后门,是否也是病毒我不得而知。请各位自行考虑下载,其他后果,概不负责