androidappcode
㈠ 想学android app编程,没有java基础,求推荐个入门书籍
Android应用开发详解-郭宏志 ,我就是参考该本书入门开发的,示例一定要逐个理解去code,JAVA的基础知识参考 [Java核心技术(原书第8版)卷I_基础知识].(美)昊斯特曼。
㈡ Android的App中线程池的使用,具体使用多少个线程池
是这样的,你在线程中读取网络数据,如果网络中断了,就会抛出一系列的异常 这时候,你就要捕获这些异常做不同的提示 以下是一些网络连接中常见的异常 // 处理网络异常 public String ExceptionCode(Exception e) { if(e instanceof HttpException) { return contextworkFailure); // 网络异常 }else if (e instanceof SocketTimeoutException) { return contextworkError); // 网络异常 }else if (e instanceof JSONException) { return context.getString(R.string.json_error); //json格式转换异常 }else { return context.getString(R.string.canNotGetConnected); // 无法连接网络 } }已经封装好了,你直接调用就好了
㈢ Android APP怎样防止工具逆向破解
首先
所需要的工具有: IDA、 C32Asm、 DexFixer!
我们新建一个测试类。为了绕过Dalvik运行时代码验证,BadCode.java要保证不被调用。(否则运行app,会出现java.lang.verifyerror常)
然后
1
生成apk,用ida打开classes.dex。并找到BadCode类的aaa方法。选中的三行代码对应”System.out.println("aaaa");”
2
切换到HexView-a视图,记录下指令码 “62 00 02 04 1A 01 8E 076E 20 19 10 10 00” 和对应偏移“0003A2A4”
3
使用C32asm,以十六进制的方式打开dex文件。按快捷键“Ctrl + G”,定位到“0003A2A4”
把“62 00 02 04 1A 01 8E 07 6E 20 19 10 10 00”改为“12 01 38 01 03 00 FF FF 00 00 00 00 00 00”
Opcodes解释:
1
12 01 //const/4 v1, 0 //v1=0
38 01 03 00// if-eqz v1, loc_3A2AC //if(v1==0) 跳转到 loc_3A2AC:
FF FF //FFFF (Bad opcodes) //本行代码被跳过永远不会执行
// loc_3A2AC:
2
保存dex。把修改后的dex文件拖入DexFixer进行修复。
3
用修复后的dex覆盖原apk中的dex文件。
4
删除META-INF签名文件
5
使用签名工具,对apk重新签名。
6
Apk安装到手机,运行成功
㈣ 设计一个app,需要用到哪些软件
app有两个阵营,不知道题主说的安卓阵营的还是苹果阵营!下面两个都说一下吧!
安卓app开发工具可以用安卓自己家推出的Android studio或者eclipes等等。
苹果app的开发工具可以使用coderunner,appcode或者chocalat等等。
欲善其功,必先利其器!选择一款好的开发工具可以帮助你更快的深入了解!
㈤ 安卓系统上有哪款app可以像电脑上的codeblocks一样运行代码。
网页链接这个是一个网页编辑器和集成开发环境,在你的Android设备开发HTML / CSS / JavaScript。
网页链接这个是一个Android Java集成开发环境,可以让你在Android系统内进行Android软件和游戏的开发。
网页链接这个可在手机端模拟Linux终端控制台执行adb、shell命令,获取了root权限的手机可以用这个工具直接在手机端刷新recovery、radio。
望采纳,谢谢
㈥ android中哪些东西不能做代码混淆
常见的不能混淆的AndroidCodeAndroid
程序
,下面这样代码混淆的时候要注意保留。
Android系统组件,系统组件有固定的方法被系统调用。
被Android
Resource
文件引用到的。名字已经固定,也不能混淆,比如自定义的View
。
Android
Parcelable
,需要使用android
序列化的。
其他Anroid
官方建议
不混淆的,如
android.app.backup.BackupAgentHelper
android.preference.Preference
com.android.vending.licensing.ILicensingService
Java序列化方法,系统序列化需要固定的方法。
枚举
,系统需要处理枚举的固定方法。
本地方法,不能修改本地方法名
annotations
注释
数据库驱动
有些resource
文件
用到反射的地方
㈦ android 如何监听某app中 intent传参
//Bundle bundle = new Bundle(); //这句是多余的
Bundle bundle = this.getIntent().getExtras();
categorySelected = bundle.getString("category");
pcode = bundle.getString("pcode");
上面说的问题与你提的问题关系不大,感觉你的问题不太可能啊,请检查传入的时候:
bundle.putString("category", category);
请检查传入的时候category本来就是空指针。
检查过了,传入的时候是有值的,但是获取的时候就是null,pcode那个参数就可以,好郁闷啊
值都保持在一个map中,应该对汉字不汉字没有啥区别:Map<String, Object> mMap = null;
检查下,一,名字是否正确,二,是否有异常输出,如果获取失败,看源代码有异常输出的:
public String getString(String key) {
unparcel();
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (String) o;
} catch (ClassCastException e) {
typeWarning(key, o, "String", e);
return null;
}
}
㈧ 有没有类似于 code4app 这样的 android 站
你算问着了,嘿 “植物保卫战”与 DOTA感觉神似 控制英雄,每一场从一级开始升级,学技能,对方有怪,刷怪升级 对方也有英雄 胜利标志亦为拆对方家 游戏很好,效果已经很不错了。 我周围很多人在玩,试试吧
㈨ 与Android应用程序相关的文件目录都有哪些
在搭建Android开发环境及简单地建立一个HelloWorld项目后,本篇将通过HelloWorld项目来介绍Android项目的目录结构。本文的主要主题如下:
1、HelloWorld项目的目录结构
1.1、src文件夹
1.2、gen文件夹
1.3、Android 2.1文件夹
1.4、assets
1.5、res文件夹
1.6、AndroidManifest.xml
1.7、default.properties
图1、HelloWorld项目目录结构
下面将分节介绍上面的各级目录结构。
1.1、src文件夹
顾名思义(src, source code)该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:
package helloworld.test; import android.app.Activity; import android.os.Bundle; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文 件。他导入了两个类android.app.Activity和android.os.Bundle,HelloWorld类继承自Activity且重 写了onCreate方法。
以下说明针对没有学过Java或者Java基础薄弱的人
@Override
在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
例如,public void onCreate(Bundle savedInstanceState){…….}这种写法是正确的,
如果你写成public void oncreate(Bundle savedInstanceState){…….}这样编译器回报如下错误——
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,
以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
android.app.Activity类:因为几乎所有的活动 (activities)都是与用户交互的,所以Activity类关注创建窗口,你可以用方法setContentView(View)将自己的UI放 到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的Activity子类都实现的:
onCreate(Bundle): 初始化你的活动(Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地 交互的小部件(widgets)。setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关 操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。
onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。
更多的关于Activity类的详细信息此系列以后的文章将做介绍,如果你想了解更多请参阅相关文档。
android.os.Bundle 类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供了公有方法—— public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。该类实现了Parceable和Cloneable接口,所以 它具有这两者的特性。
1.2、gen文件夹
该 文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类 中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。看我们的HelloWorld项目是不是如此,如下图:
图2、R.java对应res
通过R.java我们可以很快地查找我们需要的资源,另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
1.3、Android 2.1文件夹
该 文件夹下包含android.jar文件,这是一个Java 归档文件,其中包含构建应用程序所需的所有的Android SDK 库(如Views、Controls)和APIs。通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。例如上面的HelloWorld.java源文件中 的:
import android.app.Activity; import android.os.Bundle;
这里两行代码就是从android.jar导入包。
1.4、assets
包含应用系统需要使用到的诸如mp3、视频类的文件。
1.5、res文件夹
资源目录,包含你项目中的资源文件并将编译进应用程序。向此目录添加资源时,会被R.java自动记录。新建一个项目,res目录下会有三个子目录:drawabel、layout、values。
drawabel-?dpi:包含一些你的应用程序可以用的图标文件(*.png、*.jpg)
layout:界面布局文件(main.xml)与WEB应用中的HTML类同,没修改过的main.xml文件如下(HelloWorld的就没有修改过):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
values:软件上所需要显示的各种文字。可以存放多个*.xml文件,还可以存放不同类型的数据。比如arrays.xml、colors.xml、dimens.xml、styles.xml
1.6、AndroidManifest.xml
项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网 服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此 Activity。AndroidManifest.xml将包含如下设置:application permissions、Activities、intent filters等。
HelloWorld项目的AndroidManifest.xml如下所示:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="helloworld.test" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloWorld" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
关于AndroidManifest.xml现在就讲这么多,此系列后面的文章将单独详细介绍。
1.7、 default.properties
记录项目中所需要的环境信息,比如Android的版本等。
HelloWorld的default.properties文件代码如下所示,代码中的注释已经把default.properties解释得很清楚了:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-7
㈩ 大牛们是怎么阅读 Android 系统源码的
由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行.
但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结.
知识
Java
Java是AOSP的主要语言之一. 没得说, 必需熟练掌握.
熟练的Android App开发
Linux
Android基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 12.04. 所以熟练的使用并了解Linux这个系统是必不可少的. 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发. 如果再深入到驱动层, 那么Kernel相关的知识也要具备.
Make
AOSP使用Make系统进行编译. 了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的.
Git
AOSP使用git+repo进行源码管理. 这应该是程序员必备技能吧.
C++
Android系统的一些性能敏感模块及第三方库是用C++实现的, 比如: Input系统, Chromium项目(WebView的底层实现).
硬件
流畅的国际网络
AOSP代码下载需要你拥有一个流畅的国际网络. 如果在下载代码这一步就失去耐心的话, 那你肯定没有耐心去看那乱糟糟的AOSP代码. 另外, 好程序员应该都会需要一个流畅的Google.
一台运行Ubuntu 12.04的PC.
如果只是阅读源码而不做太多修改的话, 其实不需要太高的配置.
一台Nexus设备
AOSP项目默认只支持Nexus系列设备. 没有也没关系, 你依然可以读代码. 但如果你想在大牛之路走的更远, 还是改改代码, 然后刷机调试看看吧.
高品质USB线
要刷机时线坏了, 没有更窝心的事儿了.
软件
Ubuntu 12.04
官方推荐, 没得选.
Oracle Java 1.6
注意不要用OpenJDK. 这是个坑, 官方文档虽然有写, 但还是单独提一下.
安装:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
Eclipse
估计会有不少人吐槽, 为什么要用这个老古董. 其实原因很简单, 合适. 刚开始搞AOSP时, 为了找到效率最优的工具, 我尝试过Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最终结果还是Eclipse. 主要优点有:
有语法分析 (快速准确的类, 方法跳转).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等调试工具.
为了提高效率, 花5分钟背下常用快捷键非常非常值得.
调整好你的classpath, 不要导入无用的代码. 因为AOSP项目代码实在是太多了. 当你还不需要看C++代码时, 不要为项目添加C++支持, 建索引过程会让你崩溃.
Intellij IDEA
开发App必备. 当你要调试系统的某个功能是, 常常需要迅速写出一个调试用App, 这个时候老旧的Eclipse就不好用了. Itellij IDEA的xml自动补全非常给力.
巨人的肩膀
这个一定要先读. 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里. 这是一切的基础.
这个其实是给App开发者看的. 但是里面也有不少关于系统机制的介绍, 值得细读.
此老罗非彼老罗. 罗升阳老师的博客非常有营养, 基本可以作为指引你开始阅读AOSP源码的教程. 你可以按照博客的时间顺序一篇篇挑需要的看.但这个系列的博客有些问题:
早期的博客是基于旧版本的Android;
大量的代码流程追踪. 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置.
邓凡平老师也是为Android大牛, 博客同样很有营养. 但是不像罗升阳老师的那么系统. 更多的是一些技术点的深入探讨.
Android官方Issue列表. 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录. 当然你可以提一些新的, 有没有人改就是另外一回事了.
一定要能流畅的使用这个工具. 大量的相关知识是没有人系统的总结的, 你需要自己搞定.
其它
代码组织
AOSP的编译单元不是和git项目一一对应的, 而是和Android.mk文件一一对应的. 善用mmm命令进行模块编译将节省你大量的时间.
Binder
这是Android最基础的进程间通讯. 在Application和System services之间大量使用. 你不仅要知道AIDL如何使用, 也要知道如何手写Binder接口. 这对你理解Android的Application和System services如何交互有非常重要的作用. Binder如何实现的倒不必着急看.
HAL
除非你对硬件特别感兴趣或者想去方案公司上班, 否则别花太多时间在这一层.
CyanogenMod
这是一个基于AOSP的第三方Rom. 从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西. 比如如何支持Nexus以外的设备.
DIA
这是一个Linux下画UML的工具, 能够帮你梳理看过的代码.
XDA
这里有最新资讯和最有趣的论坛.
想到了再补充.