一般的情況下,package之後帶著包的路徑跟源碼的位置一致。例如:package com.hello.world 那對應的源代碼的路徑為:src/com/hello/world。但是有時候我們也可以將package 所帶的xxx.xxx.xxx 跟文件的路徑不一致。例如:package com.hello.worldtest , 在這種情況下,為了使apk能順利編譯通過,還得更改對應apk的AndroidManifest.xml文件中的 package="xxx.xxx.xxx"。
如下是具體的一個實例:
1.工程的具體目錄
[java]
- |-- AndroidManifest.xml
- |-- assets
- |-- bin
- | |-- classes
- | | `-- com
- | | `-- hello
- | | `-- world
- | | |-- QrdhelloworldActivity.class
- | | |-- R$attr.class
- | | |-- R.class
- | | |-- R$drawable.class
- | | |-- R$layout.class
- | | `-- R$string.class
- | `-- res
- |-- gen
- | `-- com
- | `-- hello
- | `-- world
- | `-- R.java
- |-- proguard.cfg
- |-- project.properties
- |-- res
- | |-- drawable-hdpi
- | | `-- ic_launcher.png
- | |-- drawable-ldpi
- | | `-- ic_launcher.png
- | |-- drawable-mdpi
- | | `-- ic_launcher.png
- | |-- layout
- | | `-- main.xml
- | `-- values
- | `-- strings.xml
- `-- src
- `-- com
- `-- hello
- `-- world
- `-- QrdhelloworldActivity.java
2. QrdhelloworldActivity.java 的內容 (注意:這裡的package com.hello.worldtest;)
[java]
- package com.hello.worldtest;
-
- import android.app.Activity;
- import android.os.Bundle;
-
- public class QrdhelloworldActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- };
-
- import android.app.Activity;
- import android.os.Bundle;
-
- public class QrdhelloworldActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- }
3.AndroidManifest.xml的內容(注意:package="com.hello.worldtest")
[java]
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.hello.world"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="10" />
-
- <application
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name" >
- <activity
- android:label="@string/app_name"
- android:name=".QrdhelloworldActivity" >
- <intent-filter >
- <action android:name="android.intent.action.MAIN" />
-
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
- </manifest>
4.總結
package 之後的xxx.xxx.xxx 可以任意取,package 關鍵真正的作用是將編譯出來.class 二進制文件指定到具體的xxx.xxx.xxx目錄中,如果別的java源程序需要引用這些.class的時候,必須指定正確。例如:我們在應用上面的.class 的時候就不能package com.hello.world 而應該使用package com.hello.worldtest