android studio运行卡添加bmob后运行报错,怎么改

如何用 Android Studio 导入开源项目以及常见错误的解决办法
时间: 00:52:06
&&&& 阅读:17717
&&&& 评论:
&&&& 收藏:0
标签:声明:这篇文章完全,感谢大神的相助。这篇文章纯粹是为了备份。
本篇以Github上最热门的MaterialDesign库,来介绍怎样使用Android Sudio导入开源项目的,如果你和我一样刚刚从Eclipse转到AS,那本篇文章非常适合你。
如果不引入任何第三方库,不做自动化分渠道打包等操作,那可以在完全不了解Gradle的情况下进行Android项目的开发。但如果要想导入Github上的热门项目,必须首先熟悉Gradle。
Gradle是以Groovy为基础,面向java应用,基于DSL语法的自动化构建工具。是google引入,替换ant和maven的新工具,其依赖兼容maven和ivy。
简单来说,Gradle就是Andriod Studio引入的一种自动构建工程的工具,很好的解决了Android项目的构建。大概能解决以下开发过程中的痛点:
不用把第三方库下载下来。以前用Eclipse必须得把第三方库下载下来,然后在自己的项目中引入那个第三方library才行。但使用Gradle,几行代码就搞定第三方库的依赖,降低了耦合性。
不用手动修改N次代码,把代码打N个包发到N个市场。以前可能需要针对不同的渠道发不同的APK文件包,现在只需要在gradle中的几行代码就能一次生成多个渠道包。具体可参考此文章:。
如果你用AS新建一个项目,那此项目的默认项目结构如图所示,图中打开的文件是TestMe/build.gradle,已经给出了每句话的含义。
图中新建项目名为TestMe,使用了Project的目录结构。此目录下可见以下几个gradle文件,分别是:
TestMe/build.gradle,全局gradle,在这个文件里的设置会在整个项目里通用。
TestMe/app/build.gradle,模块的gradle,仅在app模块通用。
TestMe/settings.gradle,用于指定哪个目录是模块model。里面的内容默认是include ‘:app‘,表示app这个文件夹是一个模块。
而TestMe/app/build.gradle文件内容如图所示,具体解释参见图中注释。
2. 导入MaterialDesignLibrary项目
我们的目标是把MaterialDesignLibrary项目在AS里面成功运行,并在手机上运行成功。
2.1 第一步
首先,用git的clone命令将下载到本地。
2.2 第二步
进入AS,File-&Import Project,然后找到MaterialDesignLibrary目录,双击该目录下的build.gradle即可导入项目。
2.3 第三步
可以看导入好的Github上的MaterialDesignLibrary项目包含两个module,包括MaterialDesignDemo和一个MaterialDesign。
MaterialDesign的build.gradle文件第一行为:apply plugin: ‘com.android.library‘,表示这是一个Library。
MaterialDesignDemo的build.gradle文件第一行为:apply plugin: ‘com.android.application‘,表示这是一个应用。
他的这个项目使用的是引用本地已有的MaterialDesign库,而本文第三部分要讲的是引用网上中心库的MaterialDesign库。两种方法都可以,但后一种更加方便更常用,第一种方法不太常用。 第二步之后,可能会出现很多错,通常是因为配置问题,这部分详见本文下面的常见错误。&注意:一定要确保根目录下的setting.gradle里面是include ‘:MaterialDesign‘, ‘:MaterialDesignDemo‘。表示以上两个文件夹都是module。
3. 在自己的项目中引用MaterialDesignLibrary
还是之前的TestMe项目,只需要在TestMe/app/build.gradle中的dependencies中加入compile ‘com.github.navasmdc:MaterialDesign:即可,如下:
dependencies {
// 编译libs目录下的所有jar包
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) //多个文件
//compile files(‘libs/foo.jar‘)
//单个文件这样写
compile ‘com.android.support:appcompat-v7:22.0.0‘ //编译第三方库
compile ‘com.github.navasmdc:MaterialDesign:
4. 常见错误
AS在导入开源的项目或者第三方库的时候经常会出现的错误如下。其实很多都是各种工具的版本问题。
Error:failed to find Build Tools revision 21.1.1&
是因为该开源库对应的Build Tools的版本你的AS里面没有。解决方法是点击他的链接进行下载。或者更改每个model里面的build.gradle文件中的buildToolsVersion "21.1.1"为本机里面有的Build Tolls版本。
Error:failed to find target android-18 : /Users/xujin/develop/adt-bundle-mac-x86_64-/sdk
是因为该开源库对应的android sdk的版本你的机器里面没有。解决方法同上,要么下载,要么改改配置。更改每个model里面的build.gradle文件中的compileSdkVersion 21为本机里面有的sdk版本。
Error:(44, 30) 错误: -source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
出错的原因是因为代码中有&List&Car& cars = new ArrayList&&();,java在1.7引入了钻石运算符&&,解决办法有两种。一是更改编译的java sdk版本,而是将出错代码改为List&Car& cars = new ArrayList&Car&();
Error:(37) No resource identifier found for attribute &checked& in package &com.gc.materialdesign&
是因为第37行的materialdesign:checked="true",命名空间materialdesign里面没有checked属性,改成check即可,代码如下。(之前遇到过,姑且说说。)
&com.gc.materialdesign.views.CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#1E88E5"
materialdesign:check="true"
参考资料标签:
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!17:49 提问
求解Android studio导入bmob,在初始化过程中出错
按照官网指示到这一步时,出现错误
这个包没办法添加,鼠标靠近提示是Unexpected token
按赞数排序输入关键字进行搜索
在android studio2.0中编译,genymotion中运行
以下是权限
&uses-permission android:name=&android.permission.INTERNET& />
&!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& />
&!--获取wifi网络状态的信息 -->
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& />
&!--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 -->
&uses-permission android:name=&android.permission.WAKE_LOCK& />
&!--获取sd卡写的权限,用于文件上传和下载-->
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& />
&!--允许读取手机状态 用于创建BmobInstallation-->
&uses-permission android:name=&android.permission.READ_PHONE_STATE& />
这是project的配置
buildscript {
repositories {
mavenCentral()
maven { url & }
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
allprojects {
apply plugin: &eclipse&
apply plugin: &idea&
version = '1.0'
appName = 'my-japanese-game'
gdxVersion = '1.6.1'
roboVMVersion = '1.2.0'
box2DLightsVersion = '1.3'
ashleyVersion = '1.4.0'
aiVersion = '1.5.0'
repositories {
mavenCentral()
maven { url & }
maven { url & }
maven { url & }
//Bmob的maven仓库地址,必须填写
maven { url & }
project(&:core&) {
apply plugin: &java&
dependencies {
compile &com.badlogicgames.gdx:gdx:$gdxVersion&
compile &com.badlogicgames.gdx:gdx-box2d:$gdxVersion&
project(&:android&) {
apply plugin: &android&
configurations { natives }
dependencies {
compile project(&:core&)
compile &com.badlogicgames.gdx:gdx-backend-android:$gdxVersion&
natives &com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi&
natives &com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a&
natives &com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86&
compile &com.badlogicgames.gdx:gdx-box2d:$gdxVersion&
natives &com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi&
natives &com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a&
natives &com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86&
compile fileTree(dir: 'libs', include: ['*.jar'])
'com.j256.ormlite:ormlite-android:4.48'
tasks.eclipse.doLast {
delete &.project&
这是module的配置
apply plugin: 'com.android.application'
compileSdkVersion 22
buildToolsVersion &23.0.3&
defaultConfig {
applicationId &com.example.myapplication&
minSdkVersion 21
targetSdkVersion 22
versionCode 1
versionName &1.0&
buildTypes {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.1'
//以下SDK开发者请根据需要自行选择
//bmob-sdk:Bmob的android sdk包,包含了Bmob的数据存储、文件等服务,以下是最新的bmob-sdk:
compile 'cn.bmob.android:bmob-sdk:3.4.6'
compile 'com.squareup.okhttp:okhttp:2.4.0'
//自V3.4.3版本开始,使用okhttp优化SDK的网络框架
compile 'com.squareup.okio:okio:1.4.0'
compile 'com.android.support:support-v4:22.2.0'
//注:bmob-sdk:3.4.6需要依赖okhttp(2.4.0)、okio(2.4.0),如果需要兼容Android6.0系统,则还需要添加support-v4(23.2.1)及org.apache.http.legacy包,具体可查看下面注释[1]的解释
compile 'cn.bmob.android:bmob-sdk:3.4.6'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okio:okio:1.7.0'
这是javabean
public class Game extends BmobObject {
public String getName() {
public void setName(String name) {
this.name =
这是Activity代码
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bmob.initialize(this, &我的key&);
setContentView(R.layout.activity_main);
TextView tv= (TextView) findViewById(R.id.ii);
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Game game=new Game();
game.setName(&nemaaaaaaa&);
game.save(getApplicationContext(), new SaveListener() {
public void onSuccess() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),&sssss&, Toast.LENGTH_SHORT).show();
public void onFailure(int code, String msg) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),&error&,Toast.LENGTH_SHORT).show();
以下是错误日志
04-29 04:42:01.023 /com.example.myapplication W/System.err: com.android.volley.NoConnectionError: java.net.UnknownHostException: Unable to resolve host &&: No address associated with hostname
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.android.volley.toolbox.BasicNetwork.performRequest(SourceFile:154)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.android.volley.NetworkDispatcher.run(SourceFile:112)
04-29 04:42:01.023 /com.example.myapplication W/System.err: Caused by: java.net.UnknownHostException: Unable to resolve host &&: No address associated with hostname
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at java.net.InetAddress.lookupHostByName(InetAddress.java:457)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at java.net.InetAddress.getAllByName(InetAddress.java:215)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.Call.getResponse(Call.java:273)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:230)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:201)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.squareup.okhttp.Call.execute(Call.java:81)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at cn.bmob.v3.requestmanager.I.performRequest(SourceFile:70)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at com.android.volley.toolbox.BasicNetwork.performRequest(SourceFile:97)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
... 1 more
04-29 04:42:01.023 /com.example.myapplication W/System.err: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at libcore.io.Posix.android_getaddrinfo(Native Method)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
04-29 04:42:01.023 /com.example.myapplication W/System.err:
... 17 more
04-29 04:42:01.062 /com.example.myapplication W/EGL_emulation: eglSurfaceAttrib not implemented
04-29 04:42:01.062 /com.example.myapplication W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe39a5480, error=EGL_SUCCESS
依赖注释的原因是因为 发现有错误以为是gradle下载依赖失败,然后 把官网demo的libs添加进去了
activity中只有简单的 增加一条数据的操作。。实在不知道哪里错了
管理员呢!!!
我也遇到一样的问题,请问仁兄是怎么解决的?
你做什么操作然后遇到的报错是?
我添加一条数据就是出错了
要回复问题请先或
关注: 3 人1. This fragment should provide a default constructor (a public constructor wit
代码不规范,这个错误是在提示你需要添加一个空的构造函数
Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead(Error when building APK in android studio打包时报错)
这个错误说要使用默认构造函数外加setArguments(Bundle)来代替,去android的官网上查看Fragment的例子都是下面这个样子的
CharSequence mL
* Create a new instance of MyFragment that will be initialized
* with the given arguments.
static MyFragment newInstance(CharSequence label) {
MyFragment f = new MyFragment();
Bundle b = new Bundle();
b.putCharSequence("label", label);
f.setArguments(b);
既然人家这么写例子肯定还是有道理的,我们只需要依葫芦画瓢就可以了,去掉带参的构造函数,创建一个newInstanc
public class TestFragment extends Fragment
public static TestFragment newInstance(String name, string passwd) {
TestFragment newFragment = new TestFragment();
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("passwd", passwd);
newFragment.setArguments(bundle);
return newF
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main, null);
,这个错误就消失了,在Fragment所依赖的Activity中,用以下语句创建Fragment实例即可
Fragment testFragment=TestFragment.newInstance(“name”,”passwd”);
//对于从Activity传递到Fragment中的参数我们只需要在Fragment的onCreate中获取就可以了
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null) {
name = args.getString("name");
passwd = args.getstring("passwd");
android studio 对于自定义控件的属性不识别
通常我们会这样写:xmlns:app=”/apk/res/包路径”
当遇到错误时候,可能是当前工程是座位lib使用了,或者在AS中使用不识别,此时只需要将它改为:xmlns:app=”/apk/res-auto”即可
&导入项目的问题4
一般AS导入工程,需要构建工具gradle的支持,gradle版本的不统一给我们开发者带来了巨大的烦恼,尤其国内的墙很高,很难下载下全gradle的配置,当你能成功新建一个as工程时候,你的as中gradle就有了一个版本,这时候你需要看清是哪个版本,我这里是1.2.3的,导入工程后module不显示是很正常的问题,你需要看清提示,一般情况下:
1.gradle版本不一样
1.gradle版本不一样,需要你手动更改gradle.build文件内容为你的版本(新建一个工程对比下),gradle.build有2个,一个是全局的,一个是你的module的,都需要更改,另外在module外还有一个gradle文件夹,里面的第二个文件的最后一行也需要更改,我的是2.1.2-all.zip,假如你引进的gradle版本比1.1还低,估计会提示android()不识别,这时候需要你删除gradle.build文件的这个方法,或者多余的方法,gradle版本的不一导致里面构建代码也不一,对比你的新建工程,然后合理的删除gradle.build代码块,最后rebuild工程,这时你会发现module出现了。
2.project的sdk没有指定api版本
2.project的sdk没有指定api版本,需要你在设置中配置一下,file-&project Stucture -&选中你的module进行配置,另外project Stucture中能配置本工程大多数的配置,包括jar包、依赖库、等等
3.android studio可以直接导入eclispe工程
3.android studio可以直接导入eclispe工程,需要选择import project(Eclipse Adt,Gradle,etc) ,使用gradle构建工具构建即可完成
4.依赖库的版本需要与你sdk依赖库版本统一
4.依赖库的版本需要与你sdk依赖库版本统一,我的是22.1.1,打开sdk,查看extra中support library的版本号,即可知道你的版本号
dependencies {
compile 'com.android.support:appcompat-v7:22.1.1'
compile project (':library')
5.setting.gradle
5.setting.gradle 中 配置的是你的库library以及你的工程module。
include ':myapp', ':library', ':mylibrary'
6.AS很耗时,构建太慢,真是蛋疼的问题
阅读(...) 评论()}

我要回帖

更多关于 android studio运行卡 的文章

更多推荐

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

点击添加站长微信