Tinker贪玩蓝月为什么这么火火

Android(60)
热更新火了这么久,还没亲自玩过,一直很惭愧,现在有空了,就花点时间学习下。
详细流程建议参考:
1.buggly热更新接入文档:
2.buggly热更新接入视频教程:
3.buggly热更新接入Demo:
(下载的文件里面包含四个Demo。我参考的是:BuglyHotfixDemo)
反正三个我都看了(不止一遍)。
## 注意1:在接入的过程中,不要想着instant run运行项目,等接入完成后,我会告诉你怎么使用instant run安装apk。
准备工作:
1.用自己的QQ账号在Buggly里面创建一个产品,方便热更新的测试。(直接用公司的账号,会造成垃圾数据)
2.新建一个demo工程,不要直接在项目里面接入你还没接触过的代码。不然出现什么问题,项目不能正常打包。到时候你就懵逼了。
切换到Project结构:
第一步:在app目录下,创建tinker-support.gradle并打开,将如下内容复制进去:
apply plugin: 'com.tencent.bugly.tinker-support'
def bakPath = file("${buildDir}/bakApk/")
* 此处填写每次构建生成的基准包目录
def baseApkDir = "app--33"
* 对于插件各参数的详细解析请参考
tinkerSupport {
enable = true
autoBackupApkDir = "${bakPath}"
autoGenerateTinkerId = true
overrideTinkerPatchConfiguration = true
baseApk = "${bakPath}/${baseApkDir}/app-release.apk"
baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"
baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"
tinkerId = "1.0.1-base"
isProtectedApp = true
enableProxyApplication = false
supportHotplugComponent = true
* 一般来说,我们无需对下面的参数做任何的修改
* 对于各参数的详细介绍请参考:
* https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
tinkerPatch {
ignoreWarning = false
useSign = true
dexMode = "jar"
pattern = ["classes*.dex"]
loader = []
pattern = ["lib/*/*.so"]
pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
ignoreChange = []
largeModSize = 100
packageConfig {
sevenZip {
zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
buildConfig {
keepDexApply = false
## 第二步:添加插件依赖
Project目录下“build.gradle”文件中添加:
buildscript {
repositories {
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath "com.tencent.bugly:tinker-support:1.1.1"
allprojects {
repositories {
task clean(type: Delete) {
delete rootProject.buildDir
## 第三步:集成SDK
app module的“build.gradle”文件中添加:
apply plugin: 'com.android.application'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
compile "com.android.support:multidex:1.0.1"
compile 'com.tencent.bugly:crashreport_upgrade:1.3.4'
compileSdkVersion 26
dexOptions {
jumboMode = true
signingConfigs {
storeFile file("./keystore/release.keystore")
storePassword "testres"
keyAlias "testres"
keyPassword "testres"
} catch (ex) {
throw new InvalidUserDataException(ex.toString())
storeFile file("./keystore/debug.keystore")
defaultConfig {
applicationId "demo.xiaoxi"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
multiDexEnabled true
buildTypes {
minifyEnabled true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable true
minifyEnabled false
signingConfig signingConfigs.debug
sourceSets {
jniLibs.srcDirs = ['libs']
repositories {
dirs 'libs'
lintOptions {
checkReleaseBuilds false
abortOnError false
apply from: 'tinker-support.gradle'
**## 注意2:applicationId “demo.xiaoxi”(你的包名)**
这时候,你会发现项目报错了,不要紧张,底部有Demo,按着我的步骤来解决它们。
将Demo的资源拷进来,具体内容:
![](https://user-gold-cdn.xitu.io//160c01f9b15a2178?w=3352&h=2054&f=jpeg&s=772269)
三个红框的内容覆盖到本地文件,复制完后需要修改如下内容:
**## 注意3:如下修改**
**修改1:AndroidManifest.xml的package=”com.xiaoxi”(你的包名),还需要把application的name指向自定义的地址【 android:name=”.SampleApplication”】**
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xiaoxi"&
android:allowBackup="true"
android:name=".SampleApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"&
android:name=".MainActivity"&
android:name="android.intent.action.MAIN"/&
android:name="android.intent.category.LAUNCHER"/&
**修改2:布局activity_main.xml的tools:context=”com.xiaoxi.MainActivity”(你的包名.MainActivity)**
**修改3:SampleApplication的super里面的第二个参数修改成SampleApplicationLike的完整地址【com.xiaoxi.SampleApplicationLike】**
public SampleApplication() {
super(ShareConstants.TINKER_ENABLE_ALL, "com.xiaoxi.SampleApplicationLike",
"com.tencent.tinker.loader.TinkerLoader", false);
**修改4:SampleApplicationLike的如下方法的第二个参数改成你在Buggly申请的产品的appid**
Bugly.init(getApplication(), "27a9fcf105", true);
**修改5:Rebuild Project一下**
![](https://user-gold-cdn.xitu.io//160c04d5b9cb3830?w=3352&h=2054&f=png&s=525701)
## 第四步:打包发布,打补丁包修复bug
简单说明一下热更新打包流程:
* 第一步:编译打包发布,一天后,收到bug反馈
* 第二步:修复bug,打出补丁包
* 第三步:发布补丁包,用户收到补丁包后,自动修复bug
我们按步骤来操作一下,由于我们对bakApk这个目录还不是很熟悉,所以先Clean Project一下。
**## 注意4:打包和打补丁包的区别是:**
**1.打包是【assembleRelease】**
**2.打补丁包是【buildTinkerPatchRelease】**
* 1.编译打包发布:【assembleRelease】
Android Studio右侧Gradle–&app–&Tasks–&build–&assembleRelease:鼠标右键运行
鼠标在app-release.apk上右键,Reveal in Finder 打开apk所在文件夹。然后打开终端,执行 adb install 把这个apk拖进终端,回车
## 注意5:你需要运行该app,将tinkerId上报到Buggly后台
点击显示结果,出现如下界面:
2.修复bug,打出补丁包
修改代码:BugClass的bug方法里面的最后一行注释解开,然后其它代码注释,如下:
修改tinker-support.gradle,如下:
def baseApkDir = “app--46”【将这个值改为刚才assembleRelease生成的目录】
每个apk的tinkerId是唯一的,那么我们的补丁包也应该有一个不一样的tinkerId,为了便于区分,暂时设为:tinkerId = “1.0.2-patch”
接下来打补丁包:
Android Studio右侧Gradle–&app–&tinker-support–&buildTinkerPatchRelease:鼠标右键运行
补丁包:patch_signed_7zip.apk,其它的都是妖魔鬼怪,不要用。
3.发布补丁包:【buildTinkerPatchRelease】
鼠标在patch_signed_7zip.apk上右键,Reveal in Finder 打开apk所在文件夹,基线版本发布后,用户安装了,点击按钮闪退,然后我们根据经验,找到了bug,并且也修复了,然后一系列的配置有都完成了,补丁包也打出来了,做了这么多,就以为了一个也许是几kb的小文件,心酸的泪啊,控制不住了,产品那边在催了,先完成工作在哭吧。我们登录Buggly的后台,找到发布补丁包的地方:
然后手机app界面等着下发结果:
重启应用后再点,【显示结果】至此bug修复。
热修复完成了。
然而我们在调试的情况下,发现instant run安装apk的时候报错了。【这就是我刚才说的,接入Buggly的过程,不要用instant run方式来安装apk】
## 注意6:使用instant run方式安装apk需要做如下修改
tinker-support.gradle的tinkerSupport的【enable = true】改为:【enable = false】
tinker-support.gradle的tinkerSupport的【overrideTinkerPatchConfiguration = true】改为:【overrideTinkerPatchConfiguration = false】
tinker-support.gradle的tinkerPatch的【//
tinkerId = “1.0.1-patch”】注释解开
apply plugin: 'com.tencent.bugly.tinker-support'
def bakPath = file("${buildDir}/bakApk/")
* 此处填写每次构建生成的基准包目录
def baseApkDir = "app--33"
* 对于插件各参数的详细解析请参考
tinkerSupport {
enable = false
autoBackupApkDir = "${bakPath}"
autoGenerateTinkerId = true
overrideTinkerPatchConfiguration = false
baseApk = "${bakPath}/${baseApkDir}/app-release.apk"
baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"
baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"
tinkerId = "1.0.1-base"
isProtectedApp = true
enableProxyApplication = false
supportHotplugComponent = true
* 一般来说,我们无需对下面的参数做任何的修改
* 对于各参数的详细介绍请参考:
* https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
tinkerPatch {
ignoreWarning = false
useSign = true
dexMode = "jar"
pattern = ["classes*.dex"]
loader = []
pattern = ["lib/*/*.so"]
pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
ignoreChange = []
largeModSize = 100
packageConfig {
sevenZip {
zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
buildConfig {
keepDexApply = false
tinkerId = "1.0.1-patch"
tinker不支持instant run模式,你需要找到File-&Settings-&Build,Execution,Deployment-&instant run并关闭,日常调试可以tinker关闭来使用instant run。
配置完成后,就可以instant run了:他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Tinkercad中文版|3D建模软件(tinkercad)下载 v1.0 官方版_最火软件站
您的位置: >
> 3D建模软件(tinkercad) v1.0 官方版下载
3D建模软件(tinkercad) v1.0 官方版
运行环境:WinXP/Vista/Win7/8/10
更新时间: 16:51:27
论坛转帖:
有无插件:无插件,请您放心使用!
分&享&到:
3D建模软件(tinkercad)是一款网页版的3D建模软件,Tinkercad中文版操作简单方便,功能强大实用,设计师、业余爱好者、教师和孩子都可使用 Tinkercad 来制作玩具、样机、家居装饰、Minecraft 模型、珠宝首饰等,有需要的朋友快来下载使用吧。
Alt + 鼠标左键复制对象
Shift + 鼠标左键选择多个对象
Shift + 按住进行旋转45& 旋转
Alt + 按住侧控制柄缩放(一维)
Alt + 按住角点控制柄缩放(二维)
Shift + 按住角点控制柄缩放(三维)
Shift + Alt + 按住角点控制柄缩放(三维)
Shift + Alt + 按住顶部控制柄缩放(三维)
Shift + 鼠标右键平移视图
tinkercad中文版主要特性
1、基于 Web:Tinkercad 可以在 Windows、Mac 或 Linux 上支持 HTML5/WebGL 的任何 Web 浏览器中运行。 和
性能最佳。
2、Gen6:几何内核可在包含大量计算机的大型计算群集中执行所有编辑操作。这使得 Tinkercad 速度非常快!
3、云存储:使用 Tinkercad 创建的三维设计存储在云中,因此只要连接 Internet 就可以轻松访问。
tinkercad中文版主要功能
1、合并:将一组形状组合到一起,以根据需要创建尽可能详细的模型。
2、调整:在空间中自由地移动、旋转和调整形状。使用标尺等工具可以输入精确的尺寸。
3、放置:形状是 Tinkercad 的基本构建块。形状可以添加或删除材料。可以导入您自己的形状,也可以使用现有形状。
tinkercad中文版主要优势
Tinkercad专注于帮助用户使用3D打印机制作&有趣、有意义&的东西,而3D打印正是当前的一 个热门话题,目前已经被Autodesk收购,把Tinkercad加入到该公司的123D系列应用和服务中。与Tinkercad类似,这一系列服务和应用旨在消除技术门 槛,帮助非专业技术人员使用CAD工具。Autodesk还计划在123D系列产品中整合Tinkercad的功能,简化该服务的使用。
Autodesk宣布了所有的收费功能都将免费开放,可以无限制地存储设计模型,不仅可以通过简单地拖拽几何形状进行组合,甚至可以使用&超级脚本&进行更高水平的3D建模。Autodesk团队还计划继续研发该3D建模应用平台,加入更强大的导入、导出功能。
免费帐号可以无限制地存储的设计模型(以前只能存一个模型),支持导入STL格式的3D网格和SVG格式的2D文件。可以使用形状脚本工具,生成参数化3D模型&&以前只对收费用户开放。
点击链接开始下载6441人阅读
热点技术(18)
在Android开发中,新技术不断涌现。对于GitHub上如此众多的项目,有人不断Mark,有人分享自己的经验,不管怎么样,如果能让你真的有所学习有所收获,我们的目的也就达到了。
1、DataBinding与MVP
今年的 Google IO 大会上,Android 团队发布了一个数据绑定框架(Data Binding Library)。Data Binding Library 是一个 support 库,支持 Android 2.1+ 版本 (API level 7+)。 在2015年,它还是beta版本,但是就 Android Studio 2 的 Preview 版本发展来看,Google 在这个库上还是很花心思的,我们有理由相信,在2016年 DataBinding 将会迎来第一个正式版。
MVVM 与 MVP 模式,正在 Android 开发中越来越流行。在这里为大家强烈推荐我的:TheMVP 项目,可以直接引入项目作为 module 依赖。(详情请在 github 搜索 TheMVP )
2、热修复与插件化
插件化:一个程序划分为不同的部分,以插件的形式加载到应用中去,本质上它使用的技术还是热修复技术,只是加入了更多工程实践,让它支持大规模的代码更新以及资源和SO包的更新。-- 插件化技术:DroidPlugin、DynamicAPK DynamicLoadApk。
热修复:当线上应用出现紧急BUG,为了避免重新发版,并且保证修复的及时性而进行的一项在线推送补丁的修复方案。-- 热修复动态加载技术:HotFix、Nuwa、DroidFix、AndFix 等。
在2015年,涌现出了一大批热修复动态加载技术:HotFix、Nuwa、DroidFix、AndFix 等等,以及同样原理的插件化技术:DroidPlugin、DynamicAPK。就连 Android
Studio 2 的 Preview 版本中体现的 Instant Run 功能,本质上也是一种热修复技术。
无论是dexposed还是AndFix,都利用了Java hook的技术来替换要修复的方法,这就需要我们理解dalvik虚拟机加载、运行java方法的机制,并要掌握libdvm中一些关键的数据结构和函数的使用。
我猜想,在2016年一定会有基于 Instant Run 思想做出的热修复技术涌现。
& Android热修复技术选型——三大流派解析-腾讯QQ空间的超级补丁技术和微信的Tinker ;阿里AndFix以及.阿里巴巴的AndFix、Dexposed;百度的DynamicLoadApk;360手机助手的 DroidPlugin
对于修复紧急BUG这个场景,阿里百川HotFix的更为合适,它更加轻量,可以在不重启的情况下生效,且对性能几乎没有影响。微信Tinker、QQ空间超级补丁技术更多地把场景定位在发布小的新功能上,采用ClassLoader的模式,牺牲较高的性能代价去实现类、资源新增或替换的功能。阿里百川HotFix对应用本身做到无侵入,无性能损耗。
插件化:百度的任玉刚。。
QQ空间超级补丁技术和微信Tinker 支持新增类和资源的替换,在一些功能化的更新上更为强大,但对应用的性能和稳定会有的一定的影响;阿里百川HotFix虽然暂时不支持新增类和资源的替换,对新功能的发布也有所限制,但是作为一项定位为线上紧急BUG的热修复的服务来说,能够真正做到BUG即时修复用户无感知,同时保证对应用性能不产生不必要的损耗,在热修复方面不失为一个好的选择。
》 热修复,比较著名的有阿里巴巴的HotFix(AndFix)、Dexposed,腾讯QQ空间的超级补丁技术和微信的Tinker。
QQ空间超级补丁技术,超级补丁技术基于DEX分包方案,使用了多DEX加载的原理,大致的过程就是:把BUG方法修复以后,放到一个单独的DEX里,插入到dexElements数组的最前面,让虚拟机去加载修复完后的方法。
微信Tinker,微信针对QQ空间超级补丁技术的不足提出了一个提供DEX差量包,整体替换DEX的方案。主要的原理是与QQ空间超级补丁技术基本相同,区别在于不再将patch.dex增加到elements数组中,而是差量的方式给出patch.dex,然后将patch.dex与应用的classes.dex合并,然后整体替换掉旧的DEX,达到修复的目的。
阿里百川推出的热修复HotFix服务,相对于QQ空间超级补丁技术和微信Tinker来说,定位于紧急bug修复的场景下,能够最及时的修复bug,下拉补丁立即生效无需等待。(BUG修复的即时性)
AndFix不同于QQ空间超级补丁技术和微信Tinker通过增加或替换整个DEX的方案,提供了一种运行时在Native修改Filed指针的方式,实现方法的替换,达到即时生效无需重启,对应用无性能消耗的目的。
》 接入三种热修复服务,根据腾讯提供超级补丁技术和Tinker的数据,那么会变成以下的场景:
阿里百川HotFix:启动时间几乎无增加,不增加运行期额外的磁盘消耗。
QQ空间超级补丁技术:如果应用有700个类,启动耗时增加超过2.5s,达到5.5s以上。
微信Tinker:假设应用有5个DEX文件,分别修改了这5个DEX,产生5个patch.dex文件,就要进行5次的patch合并动作,假设每个补丁1M,那么就要多占用7.5M的磁盘空间。
QQ空间超级补丁技术和微信Tinker 支持新增类和资源的替换,在一些功能化的更新上更为强大,但对应用的性能和稳定会有的一定的影响;阿里百川HotFix虽然暂时不支持新增类和资源的替换,对新功能的发布也有所限制,但是作为一项定位为线上紧急BUG的热修复的服务来说,能够真正做到BUG即时修复用户无感知,同时保证对应用性能不产生不必要的损耗,在热修复方面不失为一个好的选择。
安卓App热补丁动态修复实现 http://www.jianshu.com/p/56facb3732a7#
Android 超级补丁包技术- Android 热补丁动态修复框架小结- http://blog.csdn.net/lmj/article/details//
Android热更新实现原理- http://blog.csdn.net/lzyzsd/article/details/
热点技术的原理分析及四大组件原理分析- http://blog.csdn.net/yueqian_scut/article/category/2152617
Android 热补丁技术——资源的热修复- http://blog.csdn.net/sbsujjbcy/article/details/iOS 动态更新方案上,我们跟进了对 JSPatch 和 React Native. JSPatch Demo--https://github.com/bang590/JSPatch/tree/master/Demo/DribbbleDemo
Android 彻底组件化方案实践- http://blog.csdn.net/wemedia/details.html?id=41294
模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在Android工程中如何实施,目前有两种途径,也是两大流派,一个是组件化,一个是插件化。
在快速编译上,采用组件级别的增量编译。在抽离组件之前可以使用代码级别的增量编译工具如freeline(但databinding支持较差)、fastdex等
动态更新方面,暂时不支持新增组件等大的功能改进。可以临时采用方法级别的热修复或者功能级别的Tinker等工具,Tinker的接入成本较高。
3、Rx(RxJava,RxVolley,RxBus)
& 1) RxJava
优雅(也许仅体现在lambda表达式)的链式表达,轻松的线程切换,让 RxJava 在 2015 年已然得以如日中天。如果此时你还不了解 RxJava 究竟是什么的话,我建议你一定要仔细反思一下自己是否已与世界脱轨。
(Android开发中,强烈推荐使用retrolambda这个gradle插件,这样你就可以在你的代码中使用lambda了。
gradle-retrolambda-- https://github.com/evant/gradle-retrolambda
RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据。。。)
一个Observable可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。
Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。
1.Observable和Subscriber可以做任何事情
Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。
2.Observable和Subscriber是独立于中间的变换过程的。在Observable和Subscriber中间可以增减任何数量的map。整个系统是高度可组合的,操作数据是一个很简单的过程。)
RxJava核心库- https://github.com/ReactiveX/RxJava
RxJava在Android中使用的扩展库- https://github.com/ReactiveX/RxAndroid
Android控件对RxJava的支持库- https://github.com/JakeWharton/RxBinding
使SharedPreferences支持 RxJava- https://github.com/f2prateek/rx-preferences
帮助RxJava在Android中生命周期的控制,避免内存溢出等问题- https://github.com/trello/RxLifecycle
Retrofit- https://github.com/square/retrofit
数据库对RxJava的支持- https://github.com/pushtorefresh/storio
rxjava_for_android- https://github.com/cn-ljb/rxjava_for_android
& 2) RxVolley
RxVolley,让 Volley 支持了 RxJava 后,让你的代码很轻松的脱离了回调地狱。同时移除掉了复杂的 HttpClient ,以及可选支持 OkHttp 与 ImageLoader,让你使用自己习惯编码风格的同时极大缩减了项目体积。
& 3) RxBus、RxBinding
得益于 RxJava 繁多的操作符与特性,结合此类基于 RxJava 的库,将使你的代码更加简洁,开发效率大大提高。
RxBus,值得一提的是 RxBus 并不是一个库,而是一种设计思维,它可以巧妙利用 RxJava 的特性,完美替换掉了原事件总线类库(EventBus/Otto等)
RxBinding, RxJava 封装的 View 事件处理,事件的改变以流的形式进行传递。
4、React Native
React Native是从 Web 前端开发框架 React 延伸出来的解决方案,主要解决的问题是 Web 页面在移动端性能低的问题,React Native 让开发者可以像开发 Web 页面那样用 React 的方式开发功能,同时框架会通过 JavaScript 与 Objective-C 的通信让界面使用原生组件渲染,让开发出来的功能拥有原生APP的性能和体验。
这里会有一个学习成本的问题,大部分 iOS 开发者并不熟悉 Web 前端开发,当他们需要一个动态化的方案去开发一个功能模块时,若使用 React Native,就意味着他需要学习 Web 前端的一整套开发技能,学习成本很高。所以目前一些使用 React Native 的团队里,这部分功能的开发是由前端开发者负责,而非终端开发者。
但前端开发者负责这部分功能也会有一些学习成本的问题,因为 React Native 还未十分成熟,出了 Bug 或有性能问题需要深入 React Native 客户端代码去排查和优化。也就是说 React Native 是跨 Web 前端开发和终端开发的技术,要求使用者同时有这两方面能力才能使用得当,这不可避免地带来学习成本的提高。
跨平台典型的适用场景是电商活动页面,以展示为主,重开发效率轻交互体验,但不适用于功能性的模块。对 Android 来说目前热更新方案十分成熟,Android 十分自由,可以直接用原生开发后生成 diff 包下发运行,这种无论是开发效率和效果都是最好的。所以若是重体验的功能模块,Android 使用原生的热更新方案,iOS 使用 JSPatch 开发,会更适合。
5、Kotlin 语言作为 Android 阵营的 Swift ,在2015年也迎来了它的正式版。Kotlin 拥有很多 Java 所不具备的特性, 比如空指针安全,函数默认参数,默认包含模板类,对 lambda 的原生支持(在 Android 开发中, 常常使用 RxKotlin )等特性。
6、直播(H5直播,Android/iOS原生直播)
直播技术- http://lib.csdn.net/base/liveplay
【Dev Club 分享第五期】H5 视频直播那些事-- http://dev.qq.com/topic/57a42ee6503dfcb22007ede8
H5视频直播扫盲-- http://www.nihaoshijie.com.cn/index.php/archives/615
移动直播技术秒开优化经验(含PPT)--
webview实现h5视频全屏播放兼容Android7.0,自己添加webview库兼容全部版本-http://blog.csdn.net/insist_hui/article/details/
https://github.com/lshAndroid/WebviewTBS/tree/master
手机游戏直播:悟空TV客户端设计与技术难点-- http://geek.csdn.net/news/detail/105515
VR视频播放器
(推荐)谷歌google vr demo-
http://www.androidauthority.com/developing-with-the-google-vr-sdk-and-ndk-699472/
VRDemo- https://github.com/xiangzhihong/VRDemo
https://github.com/uncleleonfan/VRDemo
最新的google VR sdk,VR SDK包括unity版本和Java版本,两个版本功能差不多,一个用于unity平台,一个用于Android平台.
制作VR视频播放器 (Google VR for Android)- http://www.jianshu.com/p/ http://blog.csdn.net/qq_/article/details/
Google VR for Android
进入Google VR主页,发现官方给我们提供了两套解决观看VR视频的方式:Daydream;C给我们提供了三个平台的API,分别是:Unity 3D 、Android、ios;
Daydream is a much higher end VR experience. I have Cardboard, and it's neat, but in some ways, it feels like a tech demo. (白日梦是一个更高的终端虚拟现实体验。纸板,它很简洁,但在某些方面,感觉技术演示。)
那么就此看来,应该是这样的情况:Cardboard是Google先推出的简陋版/测试版/经济适用版,现在占用了很大市场;Daydream 是今年新推出的豪华版/完善版/高端玩家版,会冲击Cardboard的市场。也就是说Cardboard短期不会死 ,Daydream还在发展中。
gvr-android-sdk-
1,libraries
2,ndk-beta
samples目录中有四个Demo,分别是:
1,SDK-controllerclient(Daydream的控制端)
2,SDK-simplepanowidget(全景图)
3,SDK-simplevideowidget(全景视频 也就是VR视频)
4,SDK-treasurehunt(寻宝项目)这个是我们想要的,其他暂时不要管
Unity VR/AR:
Unity3D官方VR的Demo:https://unity3d.com/cn/learn/tutorials/topics/virtual-reality
Unity3D全景视频播放AVPro Video插件- http://download.csdn.net/download/java886o/9592531
OpenCV AR实现思路- http://blog.csdn.net/linshuhe1/article/details/
OpenCV- http://blog.csdn.net/linshuhe1/article/category/6189251
在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的。
基于opencv实现的Android移动端口红包AR
算法的主要思路首先是通过人脸检测寻找到人脸区域,一旦找到之后就会使用跟踪算法对人脸部位进行跟踪、人脸检测算法可以选择Face++或者opencv自带的算法,然后对下部区域进行嘴唇检测,找到之后,选择不同光照下的嘴唇图像,提取ROI.
那些使用Web前端技术实现的梦幻VR虚拟现实效果- http://igeekbar.com/igeekbar/post/247.htm
基于web的VR类库,例如, A-frame, forge.js等
https://forgejs.org/
AI 苹果对增强现实(AR)和虚拟现实(VR),VR电影/游戏
Web端VR开发初探- https://mp.weixin.qq.com/s/3xwWzKsbHJZ4VonE8esBBg
WebVR 开发的方式,在Web上开发VR应用,有下面三种方式:
HTML5+ Java Scnipt + WebGL + WebVR API
传统引擎 + Emscripten[1]
第三方工具,如A-Frame[2]
第一种方法是使用WebGL与WebVR API结合,在常规Web端三维应用的基础上通过API与VR设备进行交互,进而得到对应的VR实现。第二种是在传统引擎开发内容的基础上,比如Unity、Unreal等,使用Emscripten将C/C++代码移植到Java Scnipt版本中,进而实现Web端的VR。第三种是在封装第一种方法的基础上,专门面向没有编程基础的普通用户来生产Web端VR内容。在本文中我们主要以第一和第三种方法为例进行说明。
https://github.com/bugrunnerzhang/hellowebvr.git
Apple App VR-
VR开发、智能硬件开发等
[人工智能技术发展及机器人、无人驾驶汽车领域]}

我要回帖

更多关于 旅行青蛙为什么这么火 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信