一般的情况下,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.工程的具体目录
|-- 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;)
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")
<?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