大家好,今天来介绍gradle使用教程(android studio怎么用真机运行项目)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
机友分享 导入机智云Android开源项目的正确姿势
以下文章来源于小雨编程 ,作者小雨tt
“使用机智云AIoT平台支持项目自生成APP源码,即可轻松解决Android开源项目啦,”开发者下载源码后,只需要优化UI和设计设备控制界面控制逻辑,源码的控制页面编写了机智云SDK控制设备的标准流程,APP源码二次开发过程中只需按照该流程进行相关代码的优化即可快速完成针对自身产品的智能控制APP。
因此只要我们将源码工程文件成功导入Android Studio,那么我们便可以自由定制我们的应用程序,那么如何正确导入到Android Studio中,编译成功并在真机上运行呢?
01下载项目
在机智云官网,我们定义好数据点后,在服务->应用开发子菜单中,下载工程文件。
机智云APP代码自动生成服务介绍:http://docs.gizwits.com/zh-cn/UserManual/devApp.html
02方法
由于本地环境与开源工程文件中不同,理论上我们把开源工程文件中的环境修改成和我们本地相同的就可以顺利导入了。
为了正确修改开源工程配置文件,我们可以新建一个本地工程文件夹,对照参考。
第一步
修改根目录下的build.gradle文件
将开源工程项目中的build.gradle与本地工程保持一致。
第二步
修改gradle/wrapper文件夹里gradle-wrapper.properties配置文件
将distributionUrl中的gradle版本保持与本地项目一致;
第三步
我们再修改app目录下的build.gradle文件
这时候开源项目与我们的本地项目区别就有点大了,我们只需择其重点进行修改
将机智云版 本的 compileSdkVersion , buildToolsVersion , minSdkVersion , targetSdkVersion 与本地保持一致;这里由于自2018年底开始Android已经抛弃了 compile ,所以这里我们需要将 compile 换成 implementation ,同时将 com.android.support:design , com.android.support:appcompat 换成与本地版本相一致的28.0.0版本
下面乎闭巧是修改之后的版本:
第四步
导入项目再配置
打开AndroidStudio修改 基本的配置参数已经修改的差不多了,这时我们导入项目试一试,打开Android Studio欢迎界面,点击Open an existing Android Studio project;
在工程界面工具栏,点击编译按钮,这时候可能还会 报 一些小错误,比如:
它表示最小开发版本不需要在清单文件中解释,我们只需点击蓝色下划线,跳转到如下界面。
点击方框内容,打开清单文件
删除改行,再Try Again重新同步一下gradle工程。
第五步
修改部分过时的函数
点击小锤子重新编译一下工程,此时仍会报如下错误:
这里报错(找不到符号变量 MAXRIX_SAVE_FLAG ) 这是因为我们的sdk版本较高,新的sdk已经对之前老版本里的方法进行了修改,调用 canvas.save(Canvas.CLIP_SAVE_FLAG) ;方法编译器报错,我们只需要 save() 方法里的参数删除即可,直接调用岁键 canvas.save() 方法就编译通过了。
此时,我们的APP已经可以运行啦!
end..
这篇教程是以使用机智云AIoT平台的源码为例,如何正确的编译项目。其实对于大多数网上的Android开源项目都可以用这种方法来导入。
错过了#秋天态纤的第一杯奶茶,那我们一起来敲代码吧
今日份推荐,安排加购鸭..
中移Cat.1 4G DTU模组ML302-GC211支持OTA免开发快速接入机智云
Android Studio怎么用
第一步、下载并安装Android Studio,可以自行设置安装目录。安装好后点击studio.exe,圆铅如果不能打开,用记事本打开“android-studioin”目录下的“studio.bat”,将“SET VM_OPTIONS_FILE=%IDE_BIN_DIR%studio%BITS%.exe.vmoptions”改为“SET VM_OPTIONS_FILE=%IDE_BIN_DIR%studio%BITS%.exe”就可以使用了。
运行时的欢迎界面和eclipse有点像。
启动完成后,就是一个引导页面,可以新建项目,可以导入项目。
还是从Helloword开始吧,选择“New project”,然后出现的界面如图所示和eclipse创建项目差不多,输入项目名,选择编译宴腔喊环境,然后亮点就是可以选择theme了,还是挺不错的。
再下一步还是有eclipse上面的创建项目中选择图标一样。
选择一个activity模板和eclipse一样。
最后点击“finish”按钮后,耐心等一会,然后再出来了一个创建新项目的进度条,第一次有点慢,会下载一些gradle的东西晌野。
至此,Android Studio的下载安装基本完成,大家就可以写自己的项目了。
为什么okhttpclient不能builder
一、概述
最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了。再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为不做评价。为了更好的在应对网络访问,学习下okhttp还是蛮必要的,本篇博客首先介绍okhttp的简单使用,主要包含:
一般的get请求
一般的post请求
基于Http的文件上传
文件下载
加载图片
支持请求回调,直接返回对象、对象集合
支持session的保持
最后会对上述几个功能进行封装,完整的封装类的地址见:https://github.com/hongyangAndroid/okhttp-utils
使用前,对于Android Studio的用户,可以选择添加:
compile 'com.squareup.okhttp:okhttp:2.4.0'1
或者Eclipse的用户,可以下载最新的jar okhttp he latest JAR ,添加依赖就可以用了。
注意:okhttp内部依赖okio,别忘了同时导入okio:
gradle: compile 'com.squareup.okio:okio:1.5.0'
最新的jar地址:okio the latest JAR
二、使用教程
(一)Http Get
对了网络加载库,那么最常见的肯定就是http get请求了,比如获取一个网页的内容。
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
final Request request = new Request.Builder()
.url("https://github.com/hongyangAndroid")
.build();
//new call
Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
}
@Override
public void onResponse(final Response response) throws IOException
{
//String htmlStr = response.body().string();
}
});
123456789101112131415161718192021222324
以上就是发送一个get请求的滑竖步骤,首先构造一个Request对象,参数最起码有个url,当然你可以通过Request.Builder设置更多的参数比如:header、method等。
然后通过request的对象去构造得到一个Call对象,类似于将你的请求封装成了任务,既兆咐然是任务,就会有execute()和cancel()等方法。
最后,我们希望以异族让纯步的方式去执行请求,所以我们调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。
看到这,你会发现,整体的写法还是比较长的,所以封装肯定是要做的,不然每个请求这么写,得累死。
ok,需要注意几点:
onResponse回调的参数是response,一般情况下,比如我们希望获得返回的字符串,可以通过response.body().string()获取;如果希望获得返回的二进制字节数组,则调用response.body().bytes();如果你想拿到返回的inputStream,则调用response.body().byteStream()
看到这,你可能会奇怪,竟然还能拿到返回的inputStream,看到这个最起码能意识到一点,这里支持大文件下载,有inputStream我们就可以通过IO的方式写文件。不过也说明一个问题,这个onResponse执行的线程并不是UI线程。的确是的,如果你希望操作控件,还是需要使用handler等,例如:
@Override
public void onResponse(final Response response) throws IOException
{
final String res = response.body().string();
runOnUiThread(new Runnable()
{
@Override
public void run()
{
mTv.setText(res);
}
});
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
我们这里是异步的方式去执行,当然也支持阻塞的方式,上面我们也说了Call有一个execute()方法,你也可以直接调用call.execute()通过返回一个Response。
(二) Http Post 携带参数
看来上面的简单的get请求,基本上整个的用法也就掌握了,比如post携带参数,也仅仅是Request的构造的不同。
Request request = buildMultipartFormRequest(
url, new File[]{file}, new String[]{fileKey}, null);
FormEncodingBuilder builder = new FormEncodingBuilder();
builder.add("username","张鸿洋");
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
mOkHttpClient.newCall(request).enqueue(new Callback(){});12345678910
大家都清楚,post的时候,参数是包含在请求体中的;所以我们通过FormEncodingBuilder。添加多个String键值对,然后去构造RequestBody,最后完成我们Request的构造。
后面的就和上面一样了。
(三)基于Http的文件上传
接下来我们在介绍一个可以构造RequestBody的Builder,叫做MultipartBuilder。当我们需要做类似于表单上传的时候,就可以使用它来构造我们的requestBody。
File file = new File(Environment.getExternalStorageDirectory(), "balabala.mp4");
RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(Headers.of(
"Content-Disposition",
"form-data; name=\"username\""),
RequestBody.create(null, "张鸿洋"))
.addPart(Headers.of(
"Content-Disposition",
"form-data; name=\"mFile\";
filename=\"wjd.mp4\""), fileBody)
.build();
Request request = new Request.Builder()
.url("http://192.168.1.103:8080/okHttpServer/fileUpload")
.post(requestBody)
.build();
Call call = mOkHttpClient.newCall(request);
call.enqueue(new Callback()
{
//...
});1234567891011121314151617181920212223242526
上述代码向服务器传递了一个键值对username:张鸿洋和一个文件。我们通过MultipartBuilder的addPart方法可以添加键值对或者文件。
其实类似于我们拼接模拟浏览器行为的方式,如果你对这块不了解,可以参考:从原理角度解析Android (Java) http 文件上传
ok,对于我们最开始的目录还剩下图片下载,文件下载;这两个一个是通过回调的Response拿到byte[]然后decode成图片;文件下载,就是拿到inputStream做写文件操作,我们这里就不赘述了。
关于用法,也可以参考泡网OkHttp使用教程
接下来我们主要看如何封装上述的代码。
三、封装
由于按照上述的代码,写多个请求肯定包含大量的重复代码,所以我希望封装后的代码调用是这样的
附上出处链接:http://blog.csdn.net/lmj623565791/article/details/47911083
android studiao buildgradle 导包之后怎样立即生效
修改gradle之后,AS会升敏提示吵型枝是否租旦sync,点击【Sync Now】即可。
本文地址:https://gpu.xuandashi.com/81266.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!