大牛们是怎么阅读 Android 小说付费阅读系统源码码的

21989人阅读
android源码学习(2)
android基础架构(91)
有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权。此时即便是在AndroidManifest.xml中添加了相应的permission,依旧会得到没有xx访问权限的问题。比如android.permission.ACCESS_SURFACE_FLINGER 。
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
&&&&&&& 1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId=&android.uid.system&这个属性。
&&&&&&& 2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
&&&&&&& 3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。
第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:
&&&&&&& 1. 同上,加入android:sharedUserId=&android.uid.system&这个属性。
&&&&&&& 2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
&&&&&&& 3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。
&&&&&&& 4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在我的Android源码目录中的位置是&build\target\product\security&,下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在&build\tools\signapk&下,用法为&signapk platform.x509.pem platform.pk8
input.apk output.apk&,文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
&&&&&&& 这样最后得到的apk和第一个方法是一样的。
&&&&&&& 最后解释一下原理,首先加入android:sharedUserId=&android.uid.system&这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。
&&&&&&& 只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform. key,就是上面第二个方法提到的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。
&&&&&&& 这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到platform.pk8和platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示&Package ... has no signatures that match those in shared user android.uid.system&,这样也是保护了系统的安全。
&&&&&&& 最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。
REF:/go.php?url=http%3A%2F%%2Fblog%2F%3Fuid-49302-action-viewspace-itemid-907
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1753852次
积分:18060
积分:18060
排名:第539名
原创:170篇
转载:358篇
评论:201条
(11)(2)(4)(4)(3)(2)(1)(2)(11)(3)(2)(6)(18)(3)(5)(2)(1)(2)(43)(31)(21)(66)(97)(160)(1)(11)(4)(5)(8)
框架,界面,联网
框架,界面,联网
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'中国领先的IT技术网站
51CTO旗下网站
大牛谈:Java程序员转Android开发必读经验分享
Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好。
作者:来源:博客园| 10:15
碌乃邓Java和Android程序的区别:
Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好。
言简意赅的说说&转&前的准备:
其实Java程序员要自学安卓开发的基础知识还是没有什么难度的,毕竟语言相通,特性相似,阅读安卓源代码的门槛以比较低一些,作为能够考虑&转&的合格的程序员的你,自学能力和相关的基础知识应该不是问题,学习安卓也相对比较轻松一些。
所以Java程序员转安卓开发可以看做是一次&增量更新&,只需要学习一下安卓的基本组件:Activity、ContentProvider、Service、BroadcastReceiver;
了解一下安卓中的Intent,Handler,Adapter以及各类事件的传递方式(onClick,onTouch等);
同时辅助一定的代码量,像JNI、AIDL什么的都可以看一下;
你还要摒弃&UI元素像素位置&这个概念,安卓本身是允许通过设定元素位置来制作UI的,如果你这样做导致的结果便是大批机器不适配,那么显示效果就有点惨不忍睹了,所以不要妄想通过获取屏幕大小来调整UI,像LinearLayout在swing或者swt上可有可无的东西,在安卓上是必须要精通的。
还有熟悉ide,安卓提供的开发框架、Java及其他编程知识等。
当然,小编在此说的只是九牛一毛,还有很多在开发过程中需要注意的细节问题是我们没有提到的。
下面小编跟大家分享一下前人关于技术开发转移动应用开发的经验,希望对大家有借鉴的作用:
刘铁峰,海豚浏览器CTO
因为具体的开发场景不一样,目标的读者的经验也各不一。分享一点转型过程中,所需要补充的知识点和逻辑上的转变。
移动开发和PC上的开发带来了哪些不一样?
在我看来,从2002年之后,传统桌面的开发者基本都转向了J2EE/.NET/LAMP等以Web技术或者服务器端开发技术为主的开发方式。使用C/C++/MFC/Delphi等开发C/S模式的用户越来越少,甚至工作的需求也开始变得越来越少。
这样在技术体系上,开发者的经验开始基本上覆盖在:
1.HTML + CSS + JavaScript
2.各种脚本语言(PHP/http://ASP.NET/JSP/Python/Ruby)操作服务器API
3.服务器数据处理逻辑(O/R Mapping, 数据库连接池,各种如AOP等设计模式,甚至DSL等等)
4.大型服务器的架构设计(分布式架构,各种负载均衡,服务器连接优化)
5.数据库(分布式数据库,事务处理,大规模数据的存储、查询优化)
6.大数据处理(Hadoop, Hive)等等。
那对于移动开发上需要什么?
不管是Android / iOS /WP , 其实对于开发的需求上逐渐回到了2002年之前,大概类比MFC/Delphi的时代,更加合适。
移动开发者的技能需求发生了转变,需要的经验变成了:
充分理解各移动平台的进程架构和程序生命周期逻辑(程序启动,程序被系统suspend/kill, Services)
1.界面设计(各种UI控件,事件处理)
2.数据处理逻辑(客户端缓存、多线程并发)
3.网络数据处理
4.平台相关特性(系统API调用,系统通知机制等)
5.各种性能处理。
因此,在学习的路线和需要的经验上有了不同。
如果需要从非移动开发者往移动开发者进行转型,哪怕同样使用的是Java语言,需要的就是了解不同的库以及处理不同领域的具体问题。
在移动设备的开发上,我归结为三大类问题:性能的问题,界面响应的问题,产品的稳定性。这些是技术人员可以需要最为注意和保障的。
季逸超,Peak Labs创始人
记得当时iPhone出来后,让人们看到了一个与传统的&窗口&完全不同概念的逻辑:界面方面一个应用占满整块屏幕,程序方面代码也都是在严格的沙箱内运行。当时我就意识到这将是一整套全新的规则体系,后来渐渐从表面往深层看,写了几年烂代码慢慢我也有了点心得:
1.淡化文件的存在,而凸显应用和工作流。
2.尽量避让主线程/UI线程,避免锁界面。因为桌面应用锁UI的话只不过是一个窗口,而移动应用会给人感觉是&手机&这个整体挂了...
3.能迅速完成的操作/运算就不要指望后台,自己的程序随时可能被kill掉。后台只留给VOIP、网络操作之类的。
4.尽量加快启动速度。移动产品用的频繁,但单次使用远比桌面要短,所以不要出现Photoshop那样让用户傻等的情况。即使用个&假象&也要让用户觉得启动挺快的。
5.同一个功能最好有多种交互/操作方式。不像Windows一统桌面江湖,现在各个版本的android、iOS用户之间使用习惯迥异,最好能让人们的习惯都能work。
6.最好不要让UI控件太显眼(比如街机游戏中硕大的摇杆遮住了人物),但也别太隐晦(猛犸浏览器4,哈哈哈)。
.用户其实很在意耗电和发热量,桌面用户从不在乎&
8.很多功能别人说做不到或说平台不允许不开放的时候,总有人用匪夷所思的奇葩手段实现了&
个人拙见请勿轻信哈~
王思达,爱安卓,爱刷机,爱移动互联网
从桌面端转向移动端,一定要认识到二者不同的侧重点。桌面端包括web更侧重于逻辑复杂,高级的任务,而移动端的娱乐性明显更强。
就从操作方式说起吧,桌面端主要靠鼠标键盘和touchpad,所以操作精度要高得多,很容易将很多功能集成到一个界面里;但同样的思路就完全不适用于移动端了 (反例我是实在想不起来了,大家可以帮忙想想),相信一个cluttered ui的app,就算功能再强大,用户盯着你的界面超过3s就会头晕,点击某个button要点好几下才会成功,也必定是一个糟糕的app。
那什么样的操作方式是适用于移动端的呢?
ListView的滑动操作就是一个很好的例子,不需要用户任何的思考,只需顺着期待的内容出现的方向滑动,这样 intuitive的设计便是王道。类似的设计还有来自Tweetie的下拉刷新,Android 4.0引入标准库的ViewPager等等。上述的操作都有一个共同特点&&手势操作。既然移动端(不管是手机还是平板)是拿在手上的设备,那手势操作成为其杀手锏就毫不奇怪了,自然也就成了区分移动端和桌面端的一个重要特质。PeakJi大神的猛犸浏览器和输入法(忘记名字了)同样也体现了这一点。
有了简单直观的手势操作,还有一个不得不提的feature&&push notification。用户很懒,一台机器装了上百个app,可能一个月你的app也就被打开一两次,这当然不是你希望看到的。如果你的app是网站客户端性质的,那么push notification就是一个很好地利器了。怎么做呢?我总结了下面的流程:
1. 与社交网络连接,获取用户资料,分析用户兴趣
2. 记录用户在你的网站或客户端的使用习惯,逐渐逼近用户真正的兴趣
3. 根据得到的用户兴趣,推送他感兴趣的内容
可以看到,不仅仅是&通知&那么简单,像新浪微博那样的,一天一条的palm news,多了只能让人感到annoying,并不能起到和用户很好的沟通的效果;只有推送用户感兴趣的内容,才会引起他们的注意,增加你的app在用户心中的权重。
最后一点我认为很重要的,就是consistency,和操作系统要保持操作习惯的一致性。比如左上角的返回button,Android 4.0的ViewPager滑动换标签等,这样做最大的好处就是降低了用户的学习成本,让你的app和OS融为一体。当然在OS的大框架下,也不乏有新意的app,比如Android下的一款类siri应用Maluuba,大胆地采用了Metro风格的设计,但操作起来并不会觉得陌生,最大的原因就是 ViewPager的滑动操作被保留了下来。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
关注热点原创原创聚焦
24H热文一周话题本月最赞
讲师:89647人学习过
讲师:108828人学习过
讲师:133431人学习过
精选博文论坛热帖下载排行
本书是一本从头至尾都使用现实世界例子讲述有关编写Web应用程序的书籍。WebWork所强调的内容是:利用框架实现你的项目,而不是被框架所阻碍...
订阅51CTO邮刊知乎上有哪些 Android 开发的大牛? - 知乎1373被浏览41792分享邀请回答212 条评论分享收藏感谢收起159 条评论分享收藏感谢收起查看更多回答14 个回答被折叠()成为Android顶尖程序员所必须的书,吃透这几本书绝对是业界大牛
成为Android顶尖程序员所必须的书,吃透这几本书绝对是业界大牛
大家好,最近一段时间,Android 方面的书籍可谓是百花齐放,这几本书的作者都是在一线互联网公司奋斗的工程师,他们把多年的工作经验,身心耕植,汇聚成一本书。作为菜鸟的我们,只有一睹大神的风采了。所以借这个周末,我也列举了一些书,作为一个Android 开发工程师,这些书都是不可多得的好书,书中知识迟早是要掌握的。我们都知道开发Android App 是用Java 语言的,当然你也可以使用其他语言来开发Android,当然主流还基本上都是用Java,所以先来给大家推荐几本Java 书籍,这几本书籍不必都看完采取学习Android,但随着学习的深入,就有点捉襟见肘了,所以要提升Java 的技能的。《深入浅出Java》作为入门书籍,深入浅出系列,一直是浅显易懂,所以作为入门太合适不过了。、《Think in Java (Java 编程思想)》如果你是初学者,可以跳过这本书,但你稍微有点经验,这本书就逃脱不过了,当你觉得Java 水品想要从菜鸟向大神进阶,那就拿这本书自虐吧。《第一行代码》郭霖大神的书,之前自学,看他的博客也使受益匪浅。书中讲述了Android 中基本的内容,比如四大组件,数据存储,网络请求,数据库等。如果你想快速入门Android,那么这本书你不该错过。《Android Programming: The Big Nerd Ranch Guide (2nd Edition)(Android 编程:权威指南)》这本书是国外知名培训机构Bignerdranch(我想说,这才叫培训机构,国内的xx,我就无力吐槽了) 出的入门书籍,书中以项目为主题,从最项目相关的知识点开始,循序渐进,从最简单的,慢慢来提升。《Head First Android Development(深入浅出Android 开发)》又一深入浅出系列的书,不过这本好像还没有翻译成中文,书中的内容也是很基础的,和《第一行代码》中讲的内容重合度很高,如果你英文不错,你可以来尝试来读。《Android 群英传》作者名宜生,在群里被我们唤作医生,不过医生的博客何在慕课网的教学视频,都是非常值得读的,他出的书,也是非常值得看的。作为进阶书,书中不仅将的新手比较难以掌握的View 绘制,性能优化,也讲述Android Studio 的使用和Android 5.0 的新特性。《Android 开发艺术探索》作为新手,从写UI,使用框架,写多了就像小学生交作业一样,也仅仅停留在了只会使用的层面上,那么这本书,则带你去更深次的去理解Android 开发,让你开发更加得心应手,书中讲解View 的工作原理和事件体系,性能分析,深入理解动画,JNI 等等。《Android 设计模式源码分析》在Android 中,总有一些代码使用感觉很熟悉,比如像AlertDialog,对的,在Android 中一样有大量使用设计模式。这本书深入分析Android 源码中使用到的设计模式。《Android 开发精要》作者是豌豆荚Android 负责人范怀宇,书的内容, 从Android 源码中抽次剥茧的“精华”和“要点”,虽然书本不是特别厚,但拿着这本书就像武功宝典,书中的内容吃透了,你就练就了盖世神功。《App 研发录》这本书相对于其他书,这本显得更加特别独特,其他都是讲的纯Android 技术,这本书从更加宏观的角度,讲怎么规范开发,让开发更高效,比如重构,封装网络库,还分析了一些经典的场景,崩溃分析,持续集成(CI)等等。市面上的书多如牦牛,能发现一本好书也是不易的。上面的书,也希望能为大家Android 开发有一些帮助,当然了,书中的有些内容,随着时间的迁移,书中的内容也会变得落后,所以除了看书,我们也应该时刻关注Android 官方的博客和Android 发布的新版本。我有一个Java学习交流群,大家在群里多参与发言与解决问题也让自个也能找到自个的一些不足之处,好快点解决。有爱好Android的兄弟可以加下:
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 创业者、蓝海经济下的开拓者!
作者最新文章}

我要回帖

更多关于 小说付费阅读系统源码 的文章

更多推荐

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

点击添加站长微信