当前位置: 首页 > news >正文

简要说明网站建设的步骤阿里云做电影网站吗

简要说明网站建设的步骤,阿里云做电影网站吗,企业建设网站的价值,骨干校建设验收网站本篇文章使用的IDE是Android Studio。这里先吐槽一句#xff0c;安卓项目搭建grpc环境#xff0c;不管是引入插件还是引入第三方库#xff0c;对于版本的要求都极为苛刻#xff0c;一旦版本不匹配就会报错#xff0c;所以对于版本的搭配一定要注意。 下面介绍的这个版本搭…本篇文章使用的IDE是Android Studio。这里先吐槽一句安卓项目搭建grpc环境不管是引入插件还是引入第三方库对于版本的要求都极为苛刻一旦版本不匹配就会报错所以对于版本的搭配一定要注意。 下面介绍的这个版本搭配是我研究好久好久才跑通的这在我的电脑上是一组可行的配置如果你使用了同样的配置跑不通那可能是环境中某一部分还是有不同的地方需要你自己再去找一下解决问题的办法那么话不多说直接上配置吧。 各种配置文件 首先我们需要设置三个配置文件如下图所示 我们先来看一下项目设置setting.gradle按照我的理解这里应该是设置一些gradle仓库地址还有项目中包含的模块等等信息。 我的配置是这样写的 pluginManagement {repositories {gradlePluginPortal()google()mavenCentral()} } dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()maven { url https://jitpack.io }maven { url https://repo.eclipse.org/content/repositories/paho-releases/}} } rootProject.name grpc_project_plus include :app接着是项目的的build.gradle这里面需要引入一些插件和进行gradle版本设置其中gradle版本设置也是一个坑版本号要设置对才行 buildscript {repositories {maven{ url https://maven.aliyun.com/repository/jcenter}maven { url https://maven.aliyun.com/repository/google }maven { url https://maven.aliyun.com/repository/gradle-plugin }maven { url https://maven.aliyun.com/repository/public }google()mavenCentral()}dependencies {classpath com.android.tools.build:gradle:7.2.0classpath com.google.protobuf:protobuf-gradle-plugin:0.8.17} }task clean(type: Delete) {delete rootProject.buildDir } 从上面的配置中我们可以看出我们使用的gradle插件的版本是7.2.0然后配置的gradle版本是7.4具体的设置方法就是到gradle的配置文件中指定 当然也有一个简单的办法就是到project structure中去指定 上面这张图按照我的理解上面是插件的版本号下面就是gradle的版本号这两个不对应的话容易出问题这里顺便说一下我的Android Studio的版本应该是2021.3.1就是海豚的图标。经过这次的环境搭建我现在对于版本号真的非常敏感调版本号真的太折磨人了 最后就是模块的build.gradle我找到的一个能跑通demo的设置如下 plugins {id com.android.applicationid com.google.protobuf }android {namespace com.example.grpc_project_pluscompileSdk 32defaultConfig {applicationId com.example.grpc_project_plusminSdk 29targetSdk 32versionCode 1versionName 1.0testInstrumentationRunner androidx.test.runner.AndroidJUnitRunner}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile(proguard-android-optimize.txt), proguard-rules.pro}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}configurations.all {resolutionStrategy.force com.google.code.findbugs:jsr305:3.0.1exclude group: com.google.guava, module: listenablefuture}sourceSets {main {proto {srcDir src/main/proto}}}packagingOptions {pickFirst META-INF/INDEX.LISTpickFirst META-INF/LICENSEpickFirst META-INF/io.netty.versions.properties} }protobuf {protoc {artifact com.google.protobuf:protoc:3.17.2}plugins {/*javalite {artifact com.google.protobuf:protoc-gen-javalite:3.0.0}*/grpc {artifact io.grpc:protoc-gen-grpc-java:1.39.0 // CURRENT_GRPC_VERSION}}generateProtoTasks {all().each { task -task.builtins {java { option lite }}task.plugins {grpc { // Options added to --grpc_outoption lite }}}} }dependencies {implementation androidx.appcompat:appcompat:1.4.1implementation com.google.android.material:material:1.5.0implementation androidx.constraintlayout:constraintlayout:2.1.3testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.3androidTestImplementation androidx.test.espresso:espresso-core:3.4.0/*implementation io.grpc:grpc-okhttp:1.1.2implementation io.grpc:grpc-netty:1.1.2implementation io.grpc:grpc-protobuf-lite:1.1.2implementation io.grpc:grpc-stub:1.1.2implementation javax.annotation:javax.annotation-api:1.2*/// You need to build grpc-java to obtain these libraries below.implementation io.grpc:grpc-netty:1.39.0implementation io.grpc:grpc-okhttp:1.39.0 // CURRENT_GRPC_VERSIONimplementation io.grpc:grpc-protobuf-lite:1.39.0 // CURRENT_GRPC_VERSIONimplementation io.grpc:grpc-stub:1.39.0 // CURRENT_GRPC_VERSIONimplementation org.apache.tomcat:annotations-api:6.0.53 } 编写proto文件并编译 配置好了上述环境后我们需要编译proto文件。 首先在main目录下新建一个文件夹proto然后编写hello.proto文件。 文件的内容如下 syntax proto3;option java_multiple_files true; option java_package io.grpc.examples.helloworld; option java_outer_classname HelloWorldProto; option objc_class_prefix HLW;package helloworld;// The greeting service definition. service Greeter {// Sends a greetingrpc SayHello (HelloRequest) returns (HelloReply) {} }// The request message containing the users name. message HelloRequest {string name 1; }// The response message containing the greetings message HelloReply {string message 1; } 这是一个简单的grpc接口调用具体的语法我就不说了这篇文章主要是讲环境搭建。 接着编译项目如果编译成功的话可以在build文件夹中看到grpc相关的java文件。 编写简单的demo代码 这是最后一步在主Activity中编写简单的客户端和服务端代码测试grpc服务是否可以正常使用。 public class MainActivity extends AppCompatActivity {private static final String TAG GrpcDemo;private static final int PROT 56322;private static final String NAME hello world;private static final String HOST localhost;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d(TAG, start);startServer(PROT);Log.d(TAG, start server.);startClient(HOST, PROT, NAME);Log.d(TAG, start client.);}private void startServer(int port){try {NettyServerBuilder.forPort(port).addService(new GreeterImpl()).build().start();} catch (IOException e) {e.printStackTrace();Log.d(TAG, e.getMessage());}}private void startClient(String host, int port, String name){ManagedChannel mChannel ManagedChannelBuilder.forAddress(host, port).usePlaintext().build();GreeterGrpc.GreeterStub stub GreeterGrpc.newStub(mChannel);HelloRequest message HelloRequest.newBuilder().setName(name).build();stub.sayHello(message, new StreamObserverHelloReply() {Overridepublic void onNext(HelloReply value) {//Log.d(TAG, sayHello onNext.);Log.d(TAG, value.getMessage());}Overridepublic void onError(Throwable t) {Log.d(TAG, sayHello onError.);}Overridepublic void onCompleted() {Log.d(TAG, sayHello onCompleted.);}});}private class GreeterImpl extends GreeterGrpc.GreeterImplBase {public void sayHello(HelloRequest request, StreamObserverHelloReply responseObserver) {responseObserver.onNext(sayHello(request));responseObserver.onCompleted();}private HelloReply sayHello(HelloRequest request) {return HelloReply.newBuilder().setMessage(request.getName()).build();}}} 然后需要在AndroidManifest.xml文件中添加网络权限 ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsuses-permission android:nameandroid.permission.INTERNET/applicationandroid:allowBackuptrueandroid:dataExtractionRulesxml/data_extraction_rulesandroid:fullBackupContentxml/backup_rulesandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.Grpc_project_plustools:targetApi31activityandroid:name.MainActivityandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filtermeta-dataandroid:nameandroid.app.lib_nameandroid:value //activity/application/manifest 运行上述代码如果能在控制台看到下面的这句话就说明环境搭建成功了。 结语 这次的环境搭建真的非常艰难前前后后遇到了各种问题。不得不说安卓编程对于版本太敏感了只要有一个版本没有对应上项目都可能跑不通。 如果你遇到了什么问题欢迎在评论区交流大家一起总结问题少踩坑共勉
http://www.dnsts.com.cn/news/28372.html

相关文章:

  • 下载ppt模板免费的网站太原做网站哪里好
  • 优化网站的公司嵌入式软件开发和硬件开发
  • 如何选择网站托管公司公众号链接转wordpress
  • 运行网站需要多少钱美图秀秀在线制作
  • wordpress 中文链接新网站seo方法
  • 做网站会什么室内装修公司招聘信息
  • 微网站与微信公众号wordpress页面文件路径
  • 怎么注销网站中企动力网站建设精品案例
  • 2 如何写一份详细的网站开发方案wordpress默认密码
  • 手机网站优化指南网站设计计划书的要求
  • 颍上网站建设经典网站源码
  • 网站游戏网站怎么自己做东莞注塑切水口东莞网站建设
  • 做seo网站不用域名宠物网站建站目标
  • 网站建设公司比较创建本地网站
  • 广西城乡建设部网站二手备案域名购买
  • 网站建设服务费记账分录湖南网站开发哪家好
  • 一个网站做数据维护3天正常吗网站素材库免费
  • 郑州公司网站制作安全质量报监建设局网站
  • 制作旅游网站网页的代码wordpress博客文章图片美化
  • 汽车建设网站的能力营销网站功能
  • 海南省建设网站的公司电话号码网络营销方式有哪些各有什么特点
  • 山东公司注册网站iis网站防盗链
  • 乱码网站怎么办谷歌浏览器网页版入口在哪里
  • 桂林网站制作培训班其它区便宜营销型网站建设
  • 关于建立企业网站的方案内容wordpress关键词描述设置
  • 张家港网站建设早晨设计wordpress的安装过程
  • 网站服务器怎么做的英文网站建设方案 PPT
  • 如何做电影网站赚钱吗网站续费合同
  • 两个域名同一个网站做优化福利窝又一个wordpress
  • 一个人做导购网站动画制作软件排行榜