导航:首页 > 编程语言 > java安卓源码

java安卓源码

发布时间:2022-06-30 00:21:14

‘壹’ 求安卓源码,第一个java是个列表项,列表项设置了点击监听事件进入第二个java,第二个java

你的意思是只想要两个JAVA文件的界面,而不需要xml的配置文件对吧,我刚才有空做了两个activity,如下
public class PureJavaListActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView mListView = new ListView(this);
mListView.setLayoutParams(new LayoutParams(-1, -1));

mListView.setAdapter(new BaseAdapter() {
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
TextView tv = new TextView(PureJavaListActivity.this);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
tv.setPadding(20, 20, 20, 20);
tv.setTextColor(Color.BLACK);
convertView = tv;
}

TextView tv = (TextView) convertView;
tv.setText("TextView:" + position);

tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(PureJavaListActivity.this,
PureJavaDetailsActivity.class).putExtra(
"content", "content:" + position));
}
});

return tv;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public int getCount() {
return 50;
}
});
}

}
这是列表,下面的是详情
public class PureJavaDetailsActivity extends Activity {

/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView mTextView=new TextView(this);
mTextView.setLayoutParams(new LayoutParams(-1, -1));
mTextView.setTextSize(20);
mTextView.setText(getIntent().getStringExtra("content"));
}

}
这只是一些非常简单的DEMO,仅供参考,但是要提醒一句Activity想要运行的话,必须要在AndroidManifest.xml文件中配置

‘贰’ java编译的安卓app可以看到源码吗能反编译吗

大公司的无法反编译,加蜜了。小公司或者个人的没有加蜜

‘叁’ java问题。安卓手机源代码怎么运行

既然你安装了eclipse那你就可以配置sdk环境,然后建一个android project,把你的源代码放进去,选择在你自己的手机上运行就会自动安装到你手机上了。嫌麻烦的话可以发给我,我帮你运行一下直接给你app文件

‘肆’ android sdk下的Java源码与JDK的Java源码的区别在哪

Android 使用的Java 库是Apache的Harmony, 与官方Java库接口相同,里面实现不一样。

就在06年的时候Sun公司宣布会将JDK开源,但是直到2009年4月才正式发布,而Android已经在2008年发布第一步部智能手机了。所以Google最早的时候使用了当时Apache的Java开源实现Harmony项目。


到这个Harmony可是大有来头,2005年的时候Java并不是开源的,当是Apache搞了一个提案,就是Harmony项目,目标是开发出一个独
立并且与现有 JDK 兼容的 Java SE 实现,它是开源的并且Apache授权对开发者友好,于是得到了飞速发展。

可惜Sun公司一直不承认Harmony,前不久Harmony那一帮人怒了,给Oracle放狠话说再不承认我我就抵制Java7,结果反倒把Google吓坏了,于是就出现了google宣布切换到openjdk上这条新闻。

‘伍’ 如何在Android源码里查找Java中native方法对应的C++实现

android源码只包含android app java的客户端代码。
native部分可能有可能没有,先全局搜索.c或者.cpp文件,有这些文件才可能有。
如果是标准的android native support 工程,那么eclipse里面打开之后,在工程目录/jni下面就是 native的C++代码。
Android源码中很多关键代码都是C++实现的,java通过jni来调用,经常会看到java中这样的代码:
static native Thread currentThread();

如何根据方法名找到其对应的C++实现,有两个方法。
先来个java代码的示例VMThread.java:

package java.lang;

class VMThread {
Thread thread;
int vmData;

VMThread(Thread t) {
thread = t;
}

native static void create(Thread t, long stackSize);

static native Thread currentThread();
static native boolean interrupted();
static native void sleep (long msec, int nsec) throws InterruptedException;
static native void yield();

native void interrupt();

native boolean isInterrupted();

......
}

我们要查找currentThread方法的实现。
方法一:
由于Android源码中对每个native实现都会写一个java方法名和C++方法名映射的列表,所以我们直接搜索这个列表内容即可。
zkw@zkw $ grep -rns '"currentThread"' ./*
./art/compiler/dex/quick/dex_file_method_inliner.cc:108: "currentThread", // kNameCacheCurrentThread
匹配到二进制文件 ./dalvik/vm/native/.java_lang_VMThread.cpp.swp
./dalvik/vm/native/java_lang_VMThread.cpp:241: { "currentThread", "()Ljava/lang/Thread;",
./external/android-mock/tests/com/google/android/testing/mocking/AndroidMockGeneratorTest.java:249: Method method = Thread.class.getMethod("currentThread");
./external/android-mock/tests/com/google/android/testing/mocking/AndroidMockGeneratorTest.java:407: Method method = Thread.class.getMethod("currentThread");

可以看到,在文件./dalvik/vm/native/java_lang_VMThread.cpp中找到currentThread方法相关的信息,后面()Ljava/lang/Thread代表这个方法的返回值。
进入java_lang_VMThread.cpp这个文件可以看到:

17 /*
18 * java.lang.VMThread
19 */
20 #include "Dalvik.h"
21 #include "native/InternalNativePriv.h"
22
23
24 /*
25 * static void create(Thread t, long stacksize)
26 *
27 * This is eventually called as a result of Thread.start().
28 *
29 * Throws an exception on failure.
30 */
31 static void Dalvik_java_lang_VMThread_create(const u4* args, JValue* pResult)
32 {
33 Object* threadObj = (Object*) args[0];
34 s8 stackSize = GET_ARG_LONG(args, 1);
35
36 /* ing collector will pin threadObj for us since it was an argument */
37 dvmCreateInterpThread(threadObj, (int) stackSize);
38 RETURN_VOID();
39 }
40
41 /*
42 * static Thread currentThread()
43 */
44 static void Dalvik_java_lang_VMThread_currentThread(const u4* args,
45 JValue* pResult)
46 {
47 UNUSED_PARAMETER(args);
48
49 RETURN_PTR(dvmThreadSelf()->threadObj);
50 }
51

......
237
238 const DalvikNativeMethod dvm_java_lang_VMThread[] = {
239 { "create", "(Ljava/lang/Thread;J)V",
240 Dalvik_java_lang_VMThread_create },
241 { "currentThread", "()Ljava/lang/Thread;",
242 Dalvik_java_lang_VMThread_currentThread },
243 { "getStatus", "()I",
244 Dalvik_java_lang_VMThread_getStatus },
245 { "holdsLock", "(Ljava/lang/Object;)Z",
246 Dalvik_java_lang_VMThread_holdsLock },
247 { "interrupt", "()V",
248 Dalvik_java_lang_VMThread_interrupt },
249 { "interrupted", "()Z",
250 Dalvik_java_lang_VMThread_interrupted },
251 { "isInterrupted", "()Z",
252 Dalvik_java_lang_VMThread_isInterrupted },
253 { "nameChanged", "(Ljava/lang/String;)V",
254 Dalvik_java_lang_VMThread_nameChanged },
255 { "setPriority", "(I)V",
256 Dalvik_java_lang_VMThread_setPriority },
257 { "sleep", "(JI)V",
258 Dalvik_java_lang_VMThread_sleep },
259 { "yield", "()V",
260 Dalvik_java_lang_VMThread_yield },
261 { NULL, NULL, NULL },
262 };

源码中第242行找到对应的名字,用红色标出,其实现就在第44行。
这个方法不是很准确,要靠经验来判断搜出来的代码是否是自己要找的,下一个方法可以较准确的查找。
方法二:
还是找VMThread.java的currentThread函数,找多了会发现,C++的名字一般都是包名+类名+方法名,比如currentThread的C++名字就肯定包含“java_lang_VMThread_currentThread”,所以直接搜索即可。
如何在Android源码里查找Java中native方法对应的C++参考:http://e.51cto.com/course/course_id-4377.html

‘陆’ 如何在Android源码中加入Java层系统服务

1. 在android/app/目录下创建接口文件IServiceTest.aidl
package android.app;
oneway interface IServiceTest
{
void show();
}
2. 在Android.mk文件中的变量LOCAL_SRC_FILES中加入core/java/android/app/IServiceTest.aidl
如果要在sdk中发布这个服务就在变量aidl_files中加入一样的路径。
3. 通过aidl编译器编译IServiceTest.aidl,会生成一个IServiceTest.java文件。
4. 创建服务类ServiceTestSerice
class ServiceTestSerice extends IServiceTest.Stub{
private static final String TAG = “ServiceTestSerice”;
Context mContext;
public ServiceTestSerice(Context context){
mContext = context;
}
public void show() throws RemoteException {
System.out.println(“My ServiceTestSerice”);
}
}
.5. 注册服务
Java系统服务在ServerThread类的run()方法中生成并注册到android平台,生成ServiceTestSerice实例对象,通过ServiceManager的addService方法将服务注册到系统中。
try{
serviceTestSerice = new ServiceTestSerice(context);
ServiceManager.addService(Context.SERVICE_TEST, serviceTestSerice);
} catch (Throwable t) {

}

ServiceTestSerice serviceTestSerice;
以上代码在ServerThread类的run()方法中。
在Context类中加入:
public static final StringSERVICE_TEST = “servicetest”
ServiceTestManager sServiceTestManager;
6. 使用系统服务
编写一个ServiceTestManager类,为包装类。
public class ServiceTestManager{
private final IServiceTest mService;

ServiceTestManager(IServiceTest service){
mService = service;
}

public void test(){
try{
mService. show()
} catch (RemoteException ex){

}
}
}
7 提供应用层开发接口
在ContextImpl类中的getSystemService()方法中加入如下代码:
else if (SERVICE_TEST.equals(name)){
return getServiceTestManager();
}
private ServiceTestManager getServiceTestManager(){
synchronized(sSync) {
if (sServiceTestManager == null){
IBinder b = ServiceManager.getService(SERVICE_TEST);
IServiceTest service = IServiceTest.Stub.asInterface(b);
sServiceTestManager = new ServiceTestManager(service);
}
}
调用过程如下:
ServiceTestManager manager= (ServiceTestManager) getSystemService(Context. SERVICE_TEST);
manager.show();
8. 测试
make
make update-api 更新current.xml文件
生成system.imz文件,放到<ANDROID_SDK>/platform/android-20/images/目录下,
adb shell
service list

‘柒’ 如何编译android源码中的signapk.java

签名是要用 signapk.jar 可以直接网上搜索一个,或者源码编译后 在platform/build/target/proct/security/

‘捌’ 谁能告诉我,java和安卓的apk的关系源代码又是什么,安卓的应用安装包都是制作步骤是哪样的

APK是安卓应用的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。http://ke..com/view/1351499.htm

‘玖’ java的安卓源代码怎么做成apk

编译而且成功在安卓模拟器上运行之后,项目目录下会自动生成

阅读全文

与java安卓源码相关的资料

热点内容
app订单怎么取消 浏览:465
程序员用双显示器有什么作用 浏览:609
网约车算法杀熟 浏览:4
卡萨帝用的什么压缩机 浏览:153
350乘20算法 浏览:90
自助编程软件app 浏览:436
服务器如何看日活数 浏览:684
数控车床原理图及编程 浏览:287
java文件流下载 浏览:336
编程工作工资多少 浏览:437
专业安全文件夹 浏览:777
表格里的根号算法怎么打 浏览:193
javacorepdf 浏览:573
pdf转换word编辑 浏览:446
35岁程序员实习期恐慌 浏览:701
如何做一个系统u盘文件夹名字 浏览:970
如何确认哪个ip重启了服务器 浏览:132
照片压缩软件绿色版 浏览:109
pgp基于什么体系加密 浏览:637
python合法赋值语句格式 浏览:715