如何实现在 androidstudio开发jni Studio 上开发系统应用

输入关键字进行搜索
由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向。有不少同学问如何学习安卓,要学些什么,难不难学。现在根据我的学习体验,做个大概的总结。
自学之路是一项很苦逼的差事,自学的人很多,但能真正坚持下去的很少,在准备自学Android之前你需要具备以下基本能力能帮助你坚持到最后。
1.对Android开发、对互联网感兴趣,兴趣是最好的老师,只有发自内心的感兴趣才能真正坚持下去;
2.强大的学习能力,既然是自学,那学习能力肯定是必备,要有很强的求知欲,持续不断的学习能力才有机会走的更远,注意,是持续不断的学习能力;
3.解决问题的能力,自学过程中肯定会遇到各种各样的坑,这个时候不要急躁,不要气馁,不要怕耗时间,一步一个脚印去解决问题,这会为你今后走上工作岗位带来极大的优势;
4.设定一个目标,比如我当初测试转行开发,自学Android的目标简单直接,因为开发比测试工资高,我转行就是为了多挣钱。我想大部分人的目标应该都跟我同感;
5.在网上找一个在线App开发平台制作一个App练练手,看看现在主流的App长什么样、有哪些功能是可以实现的、哪些App的下载量最多。推荐“应用之星”网站,无需编码,小白也能开发App,
2安卓要学些什么,难度如何
安卓开发首先最好有Java基础,没学过可以先简单的去学习一下。推荐两本书《Head First Java》和《Java编程思想》(英文名《Thinking in Java》)。Head First系列的书,特点是简单好懂,适合入门(最好有其他语言编程的基础),但讲解不是很深入,对于理解力够强的人,看起来比较费时间。而后者是Java语言公认的权威经典书籍,如果想全面的学习Java,可以看后面这本书,但是难度偏大,尤其是对于没有学习过面向对象编程语言的人来说。
安卓开发本身的技术知识,无非就是各种封装好的API接口函数(API=Application Programming Interface 应用程序编程接口),你只要按照它的规则去调用就行了。安卓的接口有官方给出的完整说明文档,安装了安卓开发包后,也有自带docs文件夹,里面就是说明文档。对于英文水平欠缺的人可能稍微有点难度,另外,由于谷歌访问不了,网页版的说明文档有些可能会打不开。如果你不想自己看官方英文文档,你可以直接买本安卓开发的书,或者在网上找安卓学习资料。这些资料也是别人根据官方文档和自己学习经验总结出来的。有时候如果需要用到一些别人很少用到的东西,或者网上说的比较含糊,这时官方文档是最权威、准确的参考资料。
3安卓开发可能用到的知识,或研究方向
在Facebook等一些公司,流行一种概念,叫做全栈工程师。所谓全栈工程师,说的直白一点,就是一个人独立完成整个项目,包括客户端开发、前台网页设计、后台服务器搭建等。这对于工程师的要求非常高,不仅要知识面广,而且各个方面的学习都得有一定的深度。安卓开发也一样,需要你涉及很多知识。
首先是平面设计、交互设计、用户体验。移动应用作为大众型产品,用户体验相当重要。如果有过个同类产品,功能接近,用户肯定更喜欢用户体验更好的产品。用户界面需要用到设计方面的知识。当然在大部分公司,一般会有专门的交互设计相关职位,所以对于应用开发者来说,设计方面不需要掌握的太深入,做一点简单了解当然是没错的。
然后上面已经说了很多软件工程方面的问题,数据结构、设计模式、操作系统、计算机网络等等,不再重复。
安卓NDK环境和JNI开发。安卓基于Linux操作系统,主要由Java编程,但是有些时候需要用到C++,例如核心代码需要保密,而Java保密性有所欠缺;有些程序只有C++环境才能实现;要用到一些高性能的算法等的支持,而Java执行效率偏低。这是我们可以使用Java的JNI,调用C++开发的程序库完成功能。C++的开发基本上就和在Linux上编程差不多,区别在于安卓系统中有一定的权限限制。而安卓NDK就是官方给出的、用于快速开发安卓JNI程序的开发环境。
安卓系统有个很大的特点是开源免费,因此我们很容易就能获取安卓系统的源码进行学习,了解安卓系统的设计。了解安卓系统设计,后来我们就可以从事偏底层的安卓开发,系统订制,乃至安卓驱动开发、操作系统开发方面的工作。
这里顺便一提,安卓应用开发相比iOS的一个难点来自安卓系统碎片化问题。安卓系统是开源免费的,这是一大优势,也因此对很多国产和国外手机制造商带来了很大的好处(如果没有安卓,很多手机厂商恐怕都深陷危机之中了,或许移动互联网也不会发展的这么快。不知道现在是不是iOS要称霸天下,或者WP大受欢迎,又或者塞班还会屹立不倒)。但是安卓的这种特点,导致同一款安卓应用至少要同时兼容各种主流手机型号,各种配置,各种屏幕尺寸,各种系统环境。而这也是迄今为止安卓开发者心中永远的痛(╯﹏╰)。
总体来说,学会安卓门槛很低,但是学好安卓绝非易事。看到这里,如果你打退堂鼓了,那我建议你在“应用之星”上开发App,不用你写代码,不用你设计UI,只要你有内容,就能制作出一款精美的App,体验也蛮赞的~
最后,给正在学或者打算学安卓的同学一些建议:
如果你是非科班毕业想要转行编程,一定要有信心与动力,我能,你一样能;如果你接触过一些数据结构、编程语言之类的,想要学习编程,你更应该有信心,你比那些非科班的人已经多了一些基础,你要做的只是坚定信念,坚持走下去;如果你准备或已经在做App开发的人员,你要做的就是做好你当下在做的事,相信你的付出一定能有所收获。
---------------------------------------------------------------------------------------------
学习Android的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入android学习交流群,
群号码: 【长按复制】 我们一起学习Android!
要回复问题请先或
Cassie阿芯
关注: 1 人本文是以源码中development/tools/idegen/README作为指导文档.
环境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源码
由于AS是基于IntelliJ IDEA开发的,所以本文也适用于IntelliJ IDEA
一、修改Android Studio(以下简称AS)的内存配置
因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的机器修改studio.vmoptions)中-Xms和-Xmx的值。文档中使用的是748m,&可自行修改。
&二、配置AS的JDK、SDK
在IDE中添加一个没有classpath的JDK,&这样可以确保使用源码里的库文件
并将其作为要使用的SDK的Java SDK。如下图
三、生成导入AS所需配置文件(*.ipr)
①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)
②检查out/host/linux-x86/framework/目录下是否有idegen.jar
如果idegen.jar不存在,执行:
mmm development/tools/idegen/
在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。
我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。
development/tools/idegen/idegen.sh
等待出现类似下面的结果:
Read excludes: 5ms
Traversed tree: 44078ms
这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件
AS在导入代码时比较慢,建议先修改android.iml,将自己用不到的代码exclude出去.可以仿照过滤.repo文件夹的语法,如:
&excludeFolder url="file://$MODULE_DIR$/.repo" /&
&excludeFolder url="file://$MODULE_DIR$/abi" /&
&excludeFolder url="file://$MODULE_DIR$/art" /&
删除掉所有不需要的module-library项 PS:感谢
这样在导入时就会跳过abi和art文件夹.过滤的越多,AS的处理速度就会越快.
④在AS中打开源码根目录下新生成的android.ipr
如果在导入时AS出现
&则建议按照其给定的解决方法来解决(网址:/display/IDEADEV/Inotify+Watches+Limit),具体内容如下图:
四、解决源码中跳转错误问题
①为当前工程设置正确的SDK和JDK
②设置'Modules'的依赖
先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or directories'选项,依次将frameworks和external文件夹添加进来.如:
注:推荐把frameworks和external这两个移到最上面,这样在代码跳转时会优先从这两个文件夹下查找,而不是在Android.jar中查找。
其它版本的代码在添加frameworks时可能会显示成:
没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的.
如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可.
五、DEBUG源码
我们可以通过给刚导入的工程在'Modules'中添加'Android Framework'来让AS将它作为一个Android工程,从而方便我们调试代码.
可以按照上图中'1'和'2'来添加Android Framework支持.
在代码中加断点,然后选择'Run'-&'Attach&debugger&to&Android&process'或者直接点击下图所示的图标
在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.
代码中很多地方提示Call&requires&API&Level&x.... 出现这个问题是因为AS将我们的工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.
我们只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。
也可以考虑使用build.gradle来解决该问题。
文中所使用的文件地址:/cf3MBa2688eBw (提取码: 64e5)
阅读(...) 评论()Android Studio怎么新建Android公共库模块?
作者:佚名
字体:[ ] 来源:互联网 时间:07-28 09:26:59
Android Studio怎么新建Android公共库模块?Android Studio中想添加公共库类似的,可以直接调用得代码,该怎么让Android公共库还可以使项目模块化?下面我们就来看看详细的教程
java的公共库是直接将公用代码封装jar包,Android的公共库类似,目的都是为了代码的重用。使用Android公共库还可以使项目模块化,以便协同开发和更好地扩展。
软件名称:Android Studio v2.2.2.0 官方最新版(apk应用开发工具)软件大小:1.6GB更新时间:
1、在Android Studio中依次点击【File】&&【New Module】,打开窗体【Create New Module】,选择选项【Android Library】,点击按钮【Next】。
2、输入模块的Library Name和Module Name,然后点击按钮【Finish】。即可完成公共库模块的添加。最终添加的公共库模块如图所示。
相关推荐:
大家感兴趣的内容
12345678910
最近更新的内容2015年7月 移动开发大版内专家分月排行榜第二2015年5月 移动开发大版内专家分月排行榜第二
2015年7月 扩充话题大版内专家分月排行榜第三2015年5月 扩充话题大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。& Android程序如何在开机时自动运行
Android程序如何在开机时自动运行
&&&&& 有时我们需要应用在Android设备开机时自动运行,就像Windows系统中的很多程序一样。比如说有些后台需要从网络上更新内容等等。那么如何让应用在开机时自动运行呢?本文给出一个实例进行详细说明。&&&&&& 该实例要实现的功能是,在Android手机开机后,自动运行实例程序,在屏幕上显示文字&Hello. I started!&。&&&&&& 背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。只要在程序中&捕捉&到这个消息,再启动之即可。记住,高焕堂先生对的总结:Don't call me, I'll call you back。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个。&&&&&&& Android程序开机自动运行的实例代码解析:&&&&&&& 1、界面Activity:SayHello.java
package&com.ghstudio.BootStartD& &&
import&android.app.A& &&&&
import&android.os.B& &&
import&android.widget.TextV& &&
public&class&SayHello&extends&Activity&{& &&&&
&&&&@Override& &&&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{& &&&&
&&&&&&&&super.onCreate(savedInstanceState);& &&&&
&&&&&&&&TextView&tv&=&new&TextView(this);& &&&&
&&&&&&&&tv.setText(&Hello.&I&started!&);& &&
&&&&&&&&setContentView(tv);& &&&&
&&&&}& &&&&
}&&&&&&&& 这段代码很简单,当Activity启动时,创建一个,用它显示&Hello. I started!&字样。&&&&&& 2、接收广播消息:BootBroadcastReceiver.java
package&com.ghstudio.BootStartD& &&
import&android.content.BroadcastR& &&
import&android.content.C& &&
import&android.content.I& &&
public&class&BootBroadcastReceiver&extends&BroadcastReceiver&{& &&
static&final&String&ACTION&=&&android.intent.action.BOOT_COMPLETED&;& &&
@Override& &&
public&void&onReceive(Context&context,&Intent&intent)&{& &&
&&if&(intent.getAction().equals(ACTION)){& &&
&&&Intent&sayHelloIntent=new&Intent(context,SayHello.class);& &&
&&&sayHelloIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);& &&
&&&context.startActivity(sayHelloIntent);& &&
}&&&&&&&&& 该类派生自BroadcastReceiver,覆载方法onReceive中,检测接收到的Intent是否符合BOOT_COMPLETED,如果符合,则启动SayHello那个Activity。&&&&&& 3、配置文件:AndroidManifest.xml
&version=&1.0&&encoding=&utf-8&&&
&xmlns:android=&/apk/res/android&&&
&&&&&&package=&com.ghstudio.BootStartDemo&&&
&&&&&&android:versionCode=&1&&&
&&&&&&android:versionName=&1.0&&&
&&&&&android:icon=&@drawable/icon&&android:label=&@string/app_name&&&
&&&&&&&&&android:name=&.SayHello&&&
&&&&&&&&&&&&&&&&&&android:label=&@string/app_name&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&android:name=&android.intent.action.MAIN&&&&
&&&&&&&&&&&&&&&&&android:name=&android.intent.category.LAUNCHER&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&
&&&android:name=&.BootBroadcastReceiver&&&
&&&&&android:name=&android.intent.action.BOOT_COMPLETED&&&&
&&&&&android:minSdkVersion=&3&&&&
&&&&android:name=&android.permission.RECEIVE_BOOT_COMPLETED&&&
&&&&&&&&& 注意其中粗体字那一部分,该节点向系统注册了一个receiver,子节点intent-filter表示接收android.intent.action.BOOT_COMPLETED消息。不要忘记配置android.permission.RECEIVE_BOOT_COMPLETED权限。&&&&&& 完成后,编译出apk包,安装到模拟器或手机中。关机,重新开机。&&&&&& 运行截图:&&&&&& 延伸思考:在多数情况下,要自动运行的不是有界面的程序,而是在后台运行的service。此时,就要用startService来启动相应的service了。
本文发布:
本文地址:
发布:鸡啄米
&&( 21:35:10)&&( 22:3:38)&&( 22:46:36)&&( 22:12:17)&&( 23:0:46)&&( 21:32:49)&&( 22:27:17)
完全随机文章}

我要回帖

更多关于 android studio c开发 的文章

更多推荐

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

点击添加站长微信