#java #android #logging #android-emulator #console-application
#java #Android #ведение журнала #android-эмулятор #консольное приложение
Вопрос:
Возможно ли создать чистое консольное приложение для Android, которое будет запускаться в эмуляторе Android?
Я имею в виду, что мы можем запускать классические настольные Java-приложения, которые используют System.out.println
для вывода на консоль, поэтому я не понимаю, почему мы не можем сделать то же самое для Android через android.util.Log
классы.
Преимущества выполнения этого на эмуляторе будут заключаться в том, что это дает доступ к желаемой функциональности, реализуемой классами Android Java.
Возможно, файл dex без Application
, Activity
класса и AndroidManifest.xml
Как лучше всего это сделать?
Комментарии:
1. Ваше приложение должно иметь манифест, и, насколько мне известно, если в нем не указано действие запуска, оно либо не будет компилироваться, либо ничего не будет делать. Что, по-вашему, произойдет при запуске такого приложения в любом случае? В нем нет встроенного консольного приложения для его запуска, как в настольных ОС. Система Android предназначена для запуска приложений, которые используют действия и службы без пользовательского интерфейса, а не программы командной строки.
2. Может быть, что-то вроде метода AndroidMain() для выполнения некоторой обработки с помощью операторов Log для записи выходных данных в logcat, а затем завершения. Не имеет значения, если оно без окон.
Ответ №1:
Нет метода «AndroidMain». Вы можете выполнить это с помощью основного действия без пользовательского интерфейса или запуска службы.
Например.
AndroidManifest.xml
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MyService" />
</application>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = new Intent(this, MyService.class);
startService(i);
finish();
}
}
MyService.java
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.i("MyService", "Hello world!");
}
}
Комментарии:
1. Тоже спасибо, но как насчет ЧИСТЫХ консольных приложений, таких как установщик консольных пакетов через PackageManager, Который можно запустить с консоли Android с помощью
pm install <appfile>
команды и т. Д.?