AndroidManifest.xml中是否可以使用相对包名?

时间:2011-10-10 22:20:06

标签: android android-manifest

我有以下清单(摘录):

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1"
    android:versionName="1.0"
    package="com.uniquename.appname">

    <application
        android:icon="@drawable/ic_launcher_icon"
        android:label="@string/app_name"
        android:name=".activity.MainApplication">
    ....

其中MainApplication.java位于com.uniquename.appname.activity

然而,当我启动它时,我收到以下错误:

  

10-10 23:12:33.327:ERROR / AndroidRuntime(7783):java.lang.RuntimeException:无法实例化应用程序com.uniquename.appname.MainApplication:java.lang.ClassNotFoundException:com.uniquename.appname.MainApplication在loader dalvik.system.PathClassLoader [/system/framework/android.test.runner.jar:/data/app/com.uniquename.appname-1.apk]

这让我觉得很奇怪,因为我明确要求它查看activity子包。我见过其他人使用这种相关技术的例子,但它对我不起作用。我的宣言有什么问题?谢谢!

1 个答案:

答案 0 :(得分:5)

Dang,总是你花费数小时试图解决它的情况,最后放弃并询问社区,然后2秒后发现答案。就我而言,答案是,是的,可以在manifest.xml文件中使用相对路径。我的问题源于一个很好的重构练习,除了我忘记更新我的xml文件中的一些自定义包名称(勾选'在非java文件中更新完全限定的包名称'会有所帮助!)之外,它工作正常。

无论如何,这些现已过时的包引用导致运行时失败。不幸的是,你得到的错误信息具有误导性,而且对我来说与我的清单声明毫无关系。修复我的xml文件中的包名称(不触及我的清单)解决了我的问题。希望有一天能帮到别人。