我正在体验 Android 开发的初体验。我花了一些时间来设置环境并加载当前项目。我正在审查该项目,但我缺乏认识基础知识的知识。
我实际上引用了自动生成的 AndroidManifest.xml 来确定哪个类启动应用程序以及哪个类最初启动。我查看了各自包中的文件,并试图确定是哪些导入的库决定了这一点。
对于应用程序,我认为这是很明显的:
import android.app.Application;
这是 AndroidManifest.xml 的一个 fragment :
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nlrt.sanome"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--
TODO: I should look into this warning about allowing backup:
Should explicitly set android:allowBackup to true or false (it's true by default, and that can have some security
implications for the application's data)
-->
<application
android:theme="@style/sanome_theme"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="com.menus.SanoApplication" >
<!-- LOGIN -->
<activity
android:name="com.login.LoginActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysVisible|adjustResize"
android:label="@string/title_activity_main_login" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- MENUS -->
<activity
android:name="com.nlrt.sanome.menus.MainMenuActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.nlrt.sanome.menus.SubMenuScreeningToolsActivity"
android:screenOrientation="portrait" />
现在,由于这是我第一次查看此代码,我实际上不得不引用 AndroidManifest.xml 以了解哪个文件启动了应用程序。这个文件是自动生成的,所以这个库让它意识到这是com.menu.SanoApplication的应用程序入口点,就是前面提到的android.app.Application的库。它是否正确?如果不是,为什么?
启动实际上从不同的包中启动了另一个文件,我也在 list 中注意到了这一点。是什么使这个 (com.login.LoginActivity) 被识别为启动文件?那是 MAIN 和 LAUNCHER?
我正在审查这些文件,但我缺乏了解它们在没有自动生成文件的情况下如何连接的知识。
非常感谢您提供的任何帮助。
我也在寻找有关处理简单 android 应用程序的优秀初学者教程的建议。没有一个详细说明安装步骤,因为我已经完成了。也没有一个是 helloworld - 也完成了。有没有人有更好的建议?还有一个引用 Netbeans IDE 的人将不胜感激。
再次感谢您提供的任何帮助。
编辑//解决方案
AndoridManifest.xml 不是自动生成的。下面 Lunchbox 提供的链接非常清楚地说明了这一点。我的印象是每次执行构建操作时都会创建此文件。
最佳答案
看看这些行:
<activity
android:name="com.login.LoginActivity" ...>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
您使用 intent-filter 告诉 Android 您的 LoginActivity 应该在应用程序启动时向用户显示:MAIN 操作将 LoginActivity 指定为您应用程序的入口点,LAUNCHER 类别告诉 android 该入口点应该被列出在启动器的顶级应用程序列表中。
至于推荐,我强烈推荐The Busy Coder's Guide to Android Development .这是不朽的。
关于java - 哪个 Android 库决定最初启动的应用程序和 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990102/