導航:首頁 > 編程語言 > 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安卓源碼相關的資料

熱點內容
華為伺服器如何進陣列卡配置 瀏覽:433
apache伺服器ip地址訪問 瀏覽:716
如何買到安卓手機預裝軟體 瀏覽:535
冤罪百度雲不要壓縮 瀏覽:83
蘇州雲存儲伺服器 瀏覽:173
解壓收納原聲 瀏覽:384
java注冊驗證 瀏覽:372
火花app怎麼上推薦 瀏覽:980
什麼app能游戲投屏到電視上 瀏覽:455
伺服器託管到雲端是什麼意思 瀏覽:835
app保存草稿怎麼用 瀏覽:808
安卓如何進入proumb 瀏覽:144
主機虛擬雲伺服器 瀏覽:619
刪除分區加密的空間會不會恢復 瀏覽:706
京東app客戶上門怎麼看搜索量 瀏覽:741
怎麼在農行app購買黃金 瀏覽:46
c型開發板和單片機 瀏覽:146
虛擬機建立用戶的模板文件夾 瀏覽:904
無錫代碼編程培訓班 瀏覽:632
eps圖形數據加密 瀏覽:933