Android插件化-携程

近期学习Android插件化管理,需要从大侠搬砖。整理一下文章: 携程: http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading 本文为携程无线基础团队投稿,介绍它们已经开源的Android动态加载解决方案DynamicAPK,本文作者之一,携程无线研发总监陈浩然将会在ArchSummit北京2015架构师大会上分享架构优化相关内容,欢迎关注。 携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验。本文将详细介绍Android平台插件式开发和动态加载技术的原理 ......

Android-aapt/dx命令编译打包APK

命令工具 AndroidSDK/build-tools/apixx/aapt.exe AndroidSDK/build-tools/apixx/aapt/dx.bat JDK/bin/javac.exe 注: 以下命令中[]都表示可选 一.aapt命令 功能: 1.编译res目录xml文件 2.编译AndroidManifest.xml 3.生成R.java 4.生成Resources.arsc 1.查看APK包文件列表 aapt l[ist] [-v] [-a] file.{zip,jar,apk} List contents of Zip-compatible archive 这个命令没什么用, .APK和.zip文件没什么区别,可以直接使用压缩解压工具打开,增删改查文件都非常方便 2.查看编译后的xml ......

Android aapt 命令 详细解析

Android aapt 命令 详细解析 2015年10月23日 20:11:55 阅读数:7455 aapt即 Android Asset Packaging Tool。该工具在SDK/tools目录下,如果你没有设置环境变量,那需要进入该目录下才能运行aapt命令,如果设置了环境变量则可以在任何目录下运行aapt命令了。 1、列出压缩文件目录 aapt l[ist] [-v] [-a] file.{zip,jar,apk} 参数: -v:会以table的形式输出目录,table的表目有:Length、Method、Size、Ratio、Date、Time、CRC-32、Name。其中Method表示压缩形式,有Deflate和Stored两种,即该Zip目录采用的算法是压缩模式 ......

java 23种设计模式 深入理解

以下是学习过程中查询的资料,别人总结的资料,比较容易理解(站在各位巨人的肩膀上,望博主勿究) 创建型 抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html 工厂方法 http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html 建造者模式  http://www.cnblogs.com/java-my-life/archive/2012/04/07/2433939.html 原型模式 http://www.cnblogs.com/java-my-life/archive/2012/04/11/2439387.html 单态模式 http://www.cnblogs.com/java-my-life/archive/2012/03/31/2425631.html 结构型 ......

abd-logcat, main、system、radio、events

在Android中不同的log写到不同的设备中,共有/dev/log/system, /dev/log/main, /dev/log/radion, /dev/log/events四中类型。其中默认Log.v等写入/dev/log/main中。Slog写入/dev/log/system中。 我们在使用logcat 抓去日至的时候, 可以指定buffer,来请求不同的环形缓冲区 (‘main’, ‘system’, ‘radio’, ‘events’,默认为”-b main -b system”),因为Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区 ......

Ant编译

ANT编译流程分析 https://blog.csdn.net/kevin_nazgul/article/details/48767101 自己动手生成Android Apk https://blog.csdn.net/chenkai19920410/article/details/60589100 Android 热修复三部曲之基本的Ant打包脚本 https://blog.csdn.net/lisdye2/article/details/52049857 android ant多渠道混淆打包 https://blog.csdn.net/junfeng120125/article/details/9234651 android Ant 批量多渠道打包 总结! https://blog.csdn.net/tenggangren/article/details/8051937 ant打多渠道包混淆签名   https://blog.csdn.net/wangli ......

Android自定义View之带小圆圈的倒计时圆形进度条

文章来源:https://blog.csdn.net/xiaxiazaizai01/article/details/52415377 package com.example.customcountdownprogress; import android.animation.Animator; import android.animation.ValueAnimator; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.os.CountDownTimer; import android.os.Handler; ......

Cocos2dx编译错误收集

make.exe: *** No rule to make target `jni/.cpp’, needed by `obj/local/armeabi/objs-debug/cocos2dcpp_shared/.o’. Stop. make.exe: *** Waiting for unfinished jobs…. 这个问题,是由于cpp文件中带有空格。 make: *** No rule to make target  常见版本:https://blog.csdn.net/roserose0002/article/details/38397537 乾坤大挪移,全部搬过来: 在用Tornado编译的时候,遇到编译器报如下错误:  make: *** No rule to make target `e:/Tornado2.2_Project/FTTB/utils/h/nos/nos_cli.h’, neede d ......

Android Ble蓝牙开发(客户端)

最近项目里面需要集成一个蓝牙的连接功能,作为一枚刚刚毕业不久的新生,大学几年又白过的。只好在几天内搜搜百度,脑补一下。文章部分内容摘至各大Blog,加上本dust的见解,写了一份Client端和Service端的小呆毛。 参考链接–Link:http://m.blog.csdn.net/article/details?id=50504406 先来叨叨下历史 蓝牙我们应该很早就听过,最常见的就是原来我们偶尔通过手机上的蓝牙来传输文件。貌似在低功耗蓝牙(Bluetooth Low Energy)出现之前,蓝牙我们使用的并不多,蓝牙的产品貌似也不是很多。2010年6月30号蓝牙技术联盟推出了低功耗 ......

android.mk中引用第三方库的方法

一、集成第三方jar包: 1.在项目目录下创建目录libs(不创建也行,一会儿指向对应路径就好),将第三方的jar包放进去。 2.在Android.mk文件中进行配置: include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := smartphotolib:../../libs/smartphotolib.jar #前面为自定义的名(umeng_message_push),起什么名都可以,“:”后面的为jar包在项目下对应的路径。 include $(BUILD_MULTI_PREBUILT) 3.引用,在LOCAL_STATIC_JAVA_LIBRARIES中加入smartphotolib 即可 LOCAL_STATIC_JAVA_LIBRARIES := smartphotolib 或 ......

Android兼容(Nougat-7)-FileProvider

需要阅读官方文档请移步: https://developer.android.com/about/versions/nougat/android-7.0-changes.html 权限更改 Android 7.0 做了一些权限更改,这些更改可能会影响您的应用。 系统权限更改 为了提高私有文件的安全性,面向 Android 7.0 或更高版本的应用私有目录被限制访问 (0700)。此设置可防止私有文件的元数据泄漏,如它们的大小或存在性。此权限更改有多重副作用: 私有文件的文件权限不应再由所有者放宽,为使用 MODE_WORLD_READABLE 和/或 MODE_WORLD_WRITEABLE 而进行的此类尝试将触发 SecurityException。 ......

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.tools.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; ......

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 有了一些理解,我 ......