2016-10-02 59 views
0

是否有可能創建一個純粹的控制檯android應用程序,將在android模擬器中運行?純控臺Android應用程序?

我的意思是我們可以運行經典桌面Java應用程序,利用System.out.println進行控制檯輸出,所以我不明白爲什麼我們無法通過android.util.Log類爲Android做同樣的事情。

在模擬器上執行它的優點是可以訪問由Android Java類實現的所需功能。

也許沒有一個DEX文件ApplicationActivity類和AndroidManifest.xml

如何最好地做到這一點?

+0

您的應用程序必須有一個清單,而據我所知,如果它沒有指定啓動器活動,它將不會編譯或不做任何事情。無論如何,在運行這樣的應用程序時,你期望會發生什麼?沒有內置的控制檯應用程序,它可以像桌面操作系統一樣運行。 Android系統旨在運行使用活動的應用程序,以及不使用UI的服務,而不是命令行程序。 – nasch

+0

也許類似於AndroidMain()方法來處理Log語句以將輸出寫入logcat,然後終止。如果沒有窗戶,無所謂。 – Nederealm

回答

0

沒有「AndroidMain」方法。 您可以使用沒有UI的主活動或啓動服務來完成此操作。

E.g.

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!"); 
    } 
} 
相關問題