如何导入并查看android导入jar包官方案例

Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)
前言:github对开发者而言无疑是个宝藏,但想利用它可不是件简单的事,用 studio导入开源项目会遇到各种问题,今天我就以github上的一个图片轮播项目为例,解决导入过程中的常见问题.
1.下载项目压缩包
2.由于android studio采用gradle自动构建,而每个项目的gradle版本不一致会导致编译异常,所以要修改开源项目的gradle版本,过程如下
打开自己本地建立工程下的build.gradle文件,将其全部复制.
然后用记事本或其他软件打开开源项目下的build.gradle文件,全部粘贴并保存
3.导入开源项目 , File ---& import project 注意不是选择整个文件夹,而是找到文件夹里面的build.gradle文件,点击OK
4.解决第一个异常
解决方法:将箭头所示文件夹下的build.gradle文件打开,将runProguard false改成minifyEnabled false
打开如图目录,你会发现你的gradle版本,我用的是2.2.1,官方文档说,gradle的版本2.0.0以后,unProguard 就要改成minifyEnabled
5:解决第二个异常
问题解决:打开目录下xxx.iml文件,将右边红框内代码删除
6:解决第三个异常:
异常显示:类文件显示J,(其实是android studio识别不出来)
问题解决:如图操作,选一个SDK版本,然后Rebuild Project
7:异常解决,运行,世界如此美好你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
这里是以AndroidStudio v1.4版本为例
新版AndroidStudio已经可以直接导入eclipse的项目了,具体步骤看下边(会的飘过)
有一点要注意:as导入eclipse的项目,如果项目有引入library项目,并且library项目路径正确,as在导入eclipse的项目的同时会自动导入library为module
启动as 进入起始页,有些设置的是启动直接打开项目了,可以在设置里先设置下:
设置了之后,在启动就是进入到启动界面了:
选择Import project(Eclipse ADT, Gradle, etc)选项开始选择导入eclipse创建的Android项目
然后选择项目路径,这里以最新版环信demo2.2.4为例
注意:环信的ChatDemoUI这个demo里边因为研发的同事为了照顾老版本的as使用者,已经用eclipse生成了build.gradle文件,所以如果要导入新版as 请把build.gradle删除
然后选择项目目的路径(相当于工作空间,带上项目目录名)
提示目录不存在,不存在就对了
继续默认 Finish
然后就是等待,这个一般有时会卡住,因为有时需要下载gradle的包,会很慢很慢,解决办法就是自己去gradle官网去下载gradle包,至于怎么解决看下这篇:
导入成功,打开项目就是这样了
下边多说一句,就是如果自己创建的项目想要引用EaseUI这个库(不只是这个库,其他任何的library库),可以直接在项目界面,点击菜单栏File-&New-&Import Module 然后选择easeui路径就ok
同步发表到个人博客:
= = 我能说官方文档写的是open吗。。坑。。
要回复文章请先或
知识价值的认可,源自您的赞赏
扫描二维码,你的支付将由imGeek代收后转给对方
感谢您的赞赏
一个开放、互助、协作、创意的社区
一个开放、互助、协作、创意的社区
京ICP备号-3输入关键字或相关内容进行搜索
一个简单的原生日历提醒插入。。。。native.js调用原生实现。。。。&!DOCTYPE html&
&meta charset=&utf-8&&
&meta name=&viewport& content=&width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no& /&
&title&&/title&
&script src=&js/mui.min.js&&&/script&
&link href=&css/mui.min.css& rel=&stylesheet& /&
&script type=&text/javascript& charset=&utf-8&&
mui.init();
&button onclick=&addEvent()&& 插入事件&/button&
var calanderURL = &content://com.android.calendar/calendars&;
var calanderEventURL = &content://com.android.calendar/events&;
var calanderRemiderURL = &content://com.android.calendar/reminders&;
var calId;
function addEvent() {
var Cursor = plus.android.importClass(&android.database.Cursor&);
var Uri = plus.android.importClass(&android.net.Uri&);
var Calendar = plus.android.importClass(&java.util.Calendar&);
var main = plus.android.runtimeMainActivity();
var userCursor = plus.android.invoke(main.getContentResolver(), &query&, Uri.parse(calanderURL), null, null, null, null);
if (plus.android.invoke(userCursor, &getCount&) &= 0) {
console.log(&添加账号& + plus.android.invoke(userCursor, &getCount&));
initCalendars();
console.log(&开始插入:& + plus.android.invoke(userCursor, &getCount&));
plus.android.invoke(userCursor, &moveToLast&);
calId = plus.android.invoke(userCursor, &getString&, plus.android.invoke(userCursor, &getColumnIndex&, &_id&));
var ContentValues = plus.android.importClass(&android.content.ContentValues&);
var events = new ContentValues();
events.put(&title&, &测试中==》呵呵&);
events.put(&description&, &Frankie受空姐邀请,今天晚上10点以后将在Sheraton交流.lol~&);
// 插入账户
events.put(&calendar_id&, calId);
console.log(calId);
events.put(&eventLocation&, &地球-华夏&);
var mCalendar = Calendar.getInstance();
plus.android.invoke(mCalendar, &set&, Calendar.HOUR_OF_DAY, 11);
plus.android.invoke(mCalendar, &set&, Calendar.MINUTE, 0);
var start = plus.android.invoke(plus.android.invoke(mCalendar, &getTime&), &getTime&);
var end = plus.android.invoke(plus.android.invoke(mCalendar, &getTime&), &getTime&);
events.put(&dtstart&, start);
events.put(&dtend&, end);
events.put(&hasAlarm&, 1);
events.put(&eventTimezone&, &Asia/Shanghai&); // 这个是时区,必须有,
// 添加事件
var newEvent = plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), &insert&, Uri.parse(calanderEventURL), events);
// 事件提醒的设定
var id = plus.android.invoke(newEvent, &getLastPathSegment&);
var values = new ContentValues();
values.put(&event_id&, id);
// 提前10分钟有提醒
values.put(&minutes&, &10&);
values.put(&method&, &1&);
plus.android.invoke(main.getContentResolver(), &insert&, Uri.parse(calanderRemiderURL), values);
mui.toast(&插入事件成功,可打开本地日历查看&);
//添加账户
function initCalendars() {
var TimeZone=plus.android.importClass(&java.util.TimeZone&);
var timeZone = TimeZone.getDefault();
ContentValues=plus.android.importClass(&android.content.ContentValues&);
var value = new ContentValues();
var Calendars=plus.android.importClass(&android.provider.CalendarContract.Calendars&);
value.put(&name&, &yy&);
value.put(&account_name&, &&);
value.put(&account_type&, &com.android.exchange&);
value.put(&calendar_displayName&, &mytt&);
value.put(&visible&, 1);
value.put(&calendar_color&, -9206951);
value.put(&calendar_access_level&,&700&);
value.put(&sync_events&, 1);
value.put(&calendar_timezone&,plus.android.invoke(timeZone, &getID&));
value.put(&ownerAccount&,&&);
value.put(&canOrganizerRespond&, 0);
var Uri=plus.android.importClass(&android.net.Uri&);
var calendarUri=Uri.parse(&content://com.android.calendar/calendars&);
var buildUpon = plus.android.invoke(calendarUri, &buildUpon&);
var CalendarContract = plus.android.importClass(&android.provider.CalendarContract&);
plus.android.invoke(buildUpon, &appendQueryParameter&, CalendarContract.CALLER_IS_SYNCADAPTER, &true&);
plus.android.invoke(buildUpon, &appendQueryParameter&, &account_name&, &&);
plus.android.invoke(buildUpon, &appendQueryParameter&, &account_type&, &com.android.exchange&);
calendarUri = plus.android.invoke(buildUpon, &build&);
plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), &insert&, calendarUri, value);
mui.toast(&添加账号成功&);
求IOS的日程提醒
大神ios的这么写
好吧~代码流程上的坑基本被我踩完,见id为12779的article
兄弟,你这不厚道啊,解决了发下解决办法啊,让大家伙少走点弯路啊
大佬啊,你这挖了个小小白很难填的坑啊。
你写句这个。
var Calendars=plus.android.importClass(&android.provider.CalendarContract.Calendars&);
可是没有哪里用到Calendars这个变量的啊。
重点是我这的测试手机报错像下面这样的空指针错误
Uncaught java.lang.NullPointerEat importClass android.provider.CalendarContract.Calendars at index.html:1
注释掉后,就不报空指针的错了。
但是我这测试手机又在这一句
value.put(&calendar_color&, -9206951);
报了个什么字符串的错
把-9206951这个用引号括起来就好了。
至此,暂时把大佬挖的坑填上了。
请问有ios版本的麽 ~
大神,ios的怎么写呢
同问,IOS版的该怎么写
同问,IOS版的该怎么写
自己已经解决了
额,,,你得手机是什么型号的
Uncaught java.lang.NullPointerEat importClass android.provider.CalendarContract.Calendars at index.html:1 我这里报了这个错 把event_put里面改成了字符串还是不行 求解决
同问,IOS版的该怎么写。。
请问下,这个问题解决了吗,我现在也遇见了这个情况
Uncaught ReferenceError: android is not defined 是什么个情况,大家有遇到的吗...?
我错了,应该改这句:
events.put(&hasAlarm&, 1);
1改为字符串就好
events.put(&hasAlarm&, &1&);
红米下面提示
Uncaught argument 2 should have type java.lang.Byte, got java.lang.Iat android.content.ContentValues.put at index.html:1
events.put(&calendar_id&, calId);
calId 是 t java.lang.Integer
java.lang.Byte,
怎么转换呢?
额,我这边没有小米的,没办法给你调。小米和华为的问题都会比较多吧。。。。
我现在的项目需求是IOS
数遍验证下安卓效果,我的手机是红米NOTE,没显示界面,控制台提示:
开始插入:3 at index.html:34
没有成功显示。
我也需求IOS版本的
额。。。我这边没有小米note,我试过了,三星,THC,一加,索尼都可以把,,,,估计小米和华为的有些不行,,,
楼主写得不错
藏马:IOS版研究怎样,可以贴代码出来吗?谢谢
在我的小米note上有点问题,插入后打开os日历,新日程闪了一下就不见了。
嗯 谢谢。。。。 由于没学过iOS
希望朋友做好你了分享一下。,。。 谢谢。。。。。
太屌了!我改天研究一下ios的再跟楼主交流
要回复文章请先或Android应用开发中Fragment的静态加载与动态加载实例
转载 &更新时间:日 11:46:08 & 作者:高杰才_Android
这篇文章主要介绍了Android应用开发中Fragment的静态加载与动态加载实例,例子中包括动态的添加更新以及删除Fragment等操作,很有借鉴意义,需要的朋友可以参考下
1、Fragment的静态使用
Fragment是作为Activity的UI的一部分,它内嵌在Activity中,多个Fragment可以把一个Activity分成多个部分,这在大屏幕手机或者平板电脑中会比较多的用到,这样就不用使用多个Activity来切换这么麻烦了。当然Fragment也可以不显示,只在后台处理一些数据,这篇文章中就暂时不谈到这个。以下来看怎么静态地在Activity的布局文件中添加Fragment.
  自定义的Fragment通常要继承Fragment这个类,也有一些特殊的是继承ListFragment,DialogFragment等。继承Fragment类通常要实现三个方法:onCreate(), onCreateView(), onPause();
  我在Activity中定义了两个Fragment,一个是放在左边的LeftFragment,一个是放在右边的RightFragment.以下是代码:首先我们要实现自己的Fragment类
LeftFragment类:
public class LeftFragment extends Fragment
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
System.out.println("LeftFragment onCreate");
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
System.out.println("LeftFragment onCreateView");
// 第一个参数是这个Fragment将要显示的界面布局,第二个参数是这个Fragment所属的Activity,第三个参数是决定此fragment是否附属于Activity
return inflater.inflate(R.layout.leftfragment, container, true);
public void onResume()
super.onResume();
System.out.println("LeftFragment onResume");
public void onPause()
super.onPause();
System.out.println("LeftFragment onPause");
public void onStop()
super.onStop();
System.out.println("LeftFragment onStop");
这里实现了几种回调函数,主要是为了看清Activity和Fragment生命周期之间的关系.其中onCreateView()方法是将本Fragment对应的布局返回给Activity的布局,让Activity进行加载. inflater.inflate(R.layout.leftfragment, container, true)方法中的第一个参数R.layout.leftfragment是这个Fragment对应的布局文件ID, 第二个参数container是要插入的目标Activity, 第三个参数是决定这个Fragment是否依附于这个container.
LeftFragment对应的布局文件:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_dark"
android:orientation="vertical" &
android:id="@+id/previous_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/previous_button" /&
android:id="@+id/next_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/next_button" /&
android:id="@+id/exit_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/exit_button" /&
&/LinearLayout&
RightFragment类:和LeftFragment类似
public class RightFragment extends Fragment
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
System.out.println("RightFragment onCreate");
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
System.out.println("RightFragment onCreateView");
return inflater.inflate(R.layout.rightfragment, container, true);
public void onResume()
super.onResume();
System.out.println("RightFragment onResume");
public void onPause()
super.onPause();
System.out.println("RightFragment onPause");
public void onStop()
super.onStop();
System.out.println("RightFragment onStop");
RightFragment对应的布局文件:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" &
android:id="@+id/show_message"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_blue_dark"
android:text="@string/show_message" /&
&/LinearLayout&
最后是Activity的布局文件:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" &
android:id="@+id/left_fragment"
android:name="com.sunflower.LeftFragment"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="3" /&
android:id="@+id/right_fragment"
android:name="com.sunflower.RightFragment"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1" /&
&/LinearLayout&
在Activity中的布局文件中加入Fragment标签,其中android:name属性对应的就是自定义Fragment类的全名,系统会根据这个调用指定的Fragment的onCreateView()方法来得到这个Fragment的布局,然后加入Activity中. onCreateView()方法中的Container参数就是这时候传递过去的。
看看显示结果:
打开程序时生命周期显示:
按返回键时生命周期显示:
2、动态地使用Fragment
上面已经演示了最简单的使用Fragment的方式,下面分享一下如何动态的添加、更新、以及删除Fragment。
&首先是,MainActivity的布局文件activity_main.xml,该文件布局文件上面的顶部是一个TitleFragment,是一个静态声明的Fragment。
中间也是一个Fragment,但是这个Fragment是动态使用的。
最下面是四个按钮。用include标签包含外部的布局文件进来的。
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" &
android:id="@+id/id_fragment_title"
android:name="com.example.dynamicfragment.TitleFragment"
android:layout_width="fill_parent"
android:layout_height="45dp" /&
android:id="@+id/id_ly_bottombar"
android:layout_width="fill_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
layout="@layout/bottombar" /&
&FrameLayout
android:id="@+id/id_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/id_ly_bottombar"
android:layout_below="@id/id_fragment_title" /&
&/RelativeLayout&
然后是,MainActivity.java文件。也是我们这个demo当中最重要的代码文件,首先是将上面的布局文件通过setContentView()加载进来.然后是通过setDefaultFragment();将默认的ContentFragment动态的加载进来。接下来就是通过我们在最下面防止的四个按钮可以随意的动态切换Fragment。这也是为什么Fragment会有如此火的原因吧~~~^^
public class MainActivity extends ActionBarActivity implements OnClickListener {
private ImageButton mTabW
private ImageButton mTabF
private ImageButton mTabD
private ImageButton mTabMe;
private ContentFragment mWeiXinF
private FriendFragment mFriendF
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initView();
public void initView() {
// 初始化控件和声明事件
mTabWeixin = (ImageButton) findViewById(R.id.weixin);
mTabFriend = (ImageButton) findViewById(R.id.friend);
mTabWeixin.setOnClickListener(this);
mTabFriend.setOnClickListener(this);
// 设置默认的Fragment
setDefaultFragment();
@SuppressLint("NewApi")
private void setDefaultFragment() {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
mWeiXinFragment = new ContentFragment();
transaction.replace(R.id.id_content, mWeiXinFragment);
transaction.commit();
@SuppressLint("NewApi")
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
// 开启Fragment事务
FragmentTransaction transaction = fm.beginTransaction();
switch (v.getId()) {
case R.id.weixin:
if (mWeiXinFragment == null) {
mWeiXinFragment = new ContentFragment();
// 使用当前Fragment的布局替代id_content的控件
transaction.replace(R.id.id_content, mWeiXinFragment);
case R.id.friend:
if (mFriendFragment == null) {
mFriendFragment = new FriendFragment();
transaction.replace(R.id.id_content, mFriendFragment);
// transaction.addToBackStack();
// 事务提交
transaction.commit();
从上面的代码,我们可以看出,我们可以使用FragmentManager对Fragment进行动态的加载,这里使用的replace方法~~~下一节我们会详细的介绍FragmentManager的常用API。。。。^^
注:如果使用android3.0一下的版本,需要引入v4的包,然后Activity继承FragmentActivity,然后通过getSupportFragmentManager()获得FragmentManager对象,不过还是建议把Menifest文件的uses-sdk的minSdkVersion和targetSdkVersion都改为11以上,这样就不必引入v4的包了。
代码的中间有俩个动态加载进来的Fragment,这个和静态使用Fragment的声明方式是一样的,写一个继承Fragment的类,然后设置相应的布局,由于时间的关系,我这里只写了俩个Fragment,现在把这俩个的代码页贴出来:
第一个Fragment和他相应的布局文件:
public class ContentFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
return inflater.inflate(R.layout.fragment_content, container, false);
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" &
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="weixin"
android:textSize="20sp"
android:textStyle="bold" /&
&/LinearLayout&
第二个Fragment和他相应的布局文件:
public class FriendFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
return inflater.inflate(R.layout.fragment_friend, container, false);
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" &
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="friend"
android:textSize="20sp"
android:textStyle="bold" /&
&/LinearLayout&
好了,现在基本的代码都有了,我们把demo的运行图贴出来给大家分享一下(注:时间原因,没注意布局以及图片的美化,只是功能的实现),这是分别点击下面第一个和第二个按钮的效果图,从而实现了中间用一个Fragment动态的加载这俩个Fragment的显示。
ps:为了代码的简洁,就不添加按钮的点击变化什么的了,主要讲解功能了~~~
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具博客分类:
Android Studio到现在已经发展到0.8+的版本了,最近也在试着使用它,原因是多方面的,一个毕竟是未来的趋势,二则是github上越来越多的大牛开源项目都是基于Android Studio的,因此会使用Android Studio就成为一件必须的任务。
关于Android Studio的下载和安装,网上一搜一大堆的文章,本文不准备累赘地谈论这些问题,主要说一下如何在Android Studio中导入已有的项目进去。
在具体下面的工作之前,有两个概念是与Eclipse不大相同的,即Project和Module。在Android Studio中,一个Project并不是Eclipse的project,倒是有点像workspace(或者说任务吧),而Module才是与Eclipse的project相似的。所以,一个Project中可以包含多个Module,多个Module在一起共同构成一个Project,每个Module可以是一个库,也可以是一个可运行的Module(对应可运行的apk)。
好了,现在进入正题。
1、启动Android Studio,本文使用的是0.8.0版的。
2、准备需要在Android Studio中打开的项目。这里以 https://github.com/AndroidAlliance/EdgeEffectOverride/ 为例,请将对应的zip文件下载下来并解压缩,这是一个滚动控件如ScrollView滚动到超出边界时会出现高光现象的项目。之所以以这个项目为例,是因为在导入这个项目时,出现了几个问题需要解决。
3、修改项目中所需的Gradle软件包需求。
找到 EdgeEffectOverride-master\gradle\wrapper下面的gradle-wrapper.properties文件,使用Notepad++之类的文本文件工具打开它,里面的这一行(红色部分):
#Wed Oct 02 23:50:13 BST 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-all.zip
请将红色部分改为你的机器上已安装的Gradle版本,比如我这里是gradle-1.12-all.zip,如图所示(在C:\Users\Administrator\.gradle\wrapper\dists\gradle-1.12-all\2apkk7d25miauqf1pdjp1bm0uo,你的机器可能与这略有不同,因为最后一个文件夹名是随机生成的):
如果不做这步修改的话,不同的项目要求的Gradle版本不同,Android Studio不得不下载多份Gradle软件包放到C:盘上,其实没有必要,因为每个Project会提出它所需的Gradle最低版本要求,可以打开Project中的build.gradle文件看到(红色部分):
buildscript {
repositories {
mavenCentral()
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
这里的例子是要求0.6以上版本的Gradle,因为我们的机器可能已经存在比这个版本更高的Gradle,因此不需要像上面要求的那样去下一份gradle-1.8-all.zip的文件,直接用机器中已有的即可。顺便说一下,可以通过http://services.gradle.org/distributions/xxx.zip(请将蓝色部分xxx.zip改为所需的文件名,比如gradle-1.12-all.zip,其它版本也是一样),这样手工下载下来,然后放到C:\Users\Administrator\.gradle\wrapper\dists\gradle-1.12-all\2apkk7d25miauqf1pdjp1bm0uo里面,不需要解压缩,Android Studio会自己解压缩的。
4、点击Import Project。
定位到项目所在的目录,找到其中的build.gradle文件,然后点击OK按钮。
5、遇到的问题
首先会提示一个错误,大意是使用了不支持的Gradle版本,请使用Gradle1.10,如下:
此时点击下面的“Gradle settings”蓝色链接,出现下面的窗口:
选中“Use default gradle wrapper(recommended)”推荐的选项,点击OK按钮即可。回到前一个界面时,再点击Fix Gradle wrapper and re-import project蓝色链接,这样就开始修正并自动构建Project了。
在gradle构建project过程中,底部出现下图所示的提示信息,见红色感叹号的两行:
其中第一个是说DefaultGroovMavenDeployer缺少了nexusUsername属性,第二个是说必须使用更新版本的Android Gradle插件。
先纠正第一个问题,在Android Studio中打开EdgeEffectOverride模块中的build.gradle文件,删掉最后那行(见截图底部蓝色选中部分):
好了,删掉最后这行,Android Studio会自动保存。注意,如果是误修改的话,可以按Ctrl+Z后退,但若要重新前进的话,快捷键是Ctrl+Shift+Z,而不是平常惯用的Ctr+Y,Ctrl+Y在Android Strdio中是删除当前行的意思。
接下来处理第二个问题,打开EdgeEffectOverride-master项目下面的build.gradle文件,如下图所示:
蓝色选中部分就是要修改的内容,奇怪的是Android Studio已经自动帮我们改好了,已经是当前的Gradle插件版本了。
最后,点击顶部的“Try Again”链接,如图所示。
不过,又是出现新的问题:
意思是说项目使用的SDK Build Tools版本18.0.1太低了,最低要使用19.1.0,没办法,只好按照提示改了。
继续在Android Studio中分别打开EdgeEffectOverride和EdgeEffectOverrideSample这两个模块下面的build.gradle文件,将其中的buildToolsVersion后面的数字统统改成19.1.0,如下图中的红色标记部分,记得两个build.gradle文件都要改。
好了,点击编辑器顶部的“Try Again”,经过Gradle一番忙碌之后,一切终于好了,下载终于可以运行了。
6、点击绿色的三角箭头,EdgeEffectOverrideSample跑起,其中EdgeEffectOverride是EdgeEffectOverrideSample运行依赖的模块(相当于Eclipse中的library)。
浏览 89165
浏览: 113486 次
来自: 杭州
请问“unable to connect to 192.168 ...
你好,我导入build.gradle 的时候,出现这个错误。U ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 android怎么导入项目 的文章

 

随机推荐