3

私はたくさんの apk ファイルを持っていて、それらのために robotium で簡単なテストを書きたいと思っています。例としてDropboxアプリでメインアクティビティを見つけようとしたときに、いくつかの問題があります。AndroidManifest.xml で私はこれを見つけました:

</activity> <provider android:name=".provider.ZipperedMediaProvider" android:exported="false" android:authorities="com.dropbox.android.ZipperedMediaProvider"></provider> <provider android:name=".provider.CameraUploadsProvider" android:exported="false" android:authorities="com.dropbox.android.CameraUploadsProvider"></provider> <activity android:theme="@android:01030055" android:name=".activity.DropboxBrowser"> <intent-filter > <action android:name="android.intent.action.MAIN"></action> <category android:name="android.intent.category.LAUNCHER"></category> </intent-filter> <intent-filter android:label="Dropbox File Browser"> <action android:name="com.dropbox.BROWSE"></action> <action android:name="android.intent.action.VIEW"></action> <action android:name="android.intent.action.EDIT"></action> <category android:name="android.intent.category.DEFAULT"></category> <data android:mimeType="vnd.android.cursor.dir/vnd.dropbox.entry"></data> <data android:mimeType="vnd.android.cursor.item/vnd.dropbox.entry"></data> </intent-filter> </activity>

メインアクティビティがどのように呼び出されるかを理解する方法は? 私は ApkAnalyser を使用しており、さまざまなクラス名やその他の文字列を試しましたが、robotium テストでアプリを起動できず、プロジェクトにテストがないと書き込めません:/ (apk は PC で再署名されています) 理解したいのですが、どのようにapk ファイルから MainActivity を識別するには? どうも

4

6 に答える 6

2

Android アプリケーションには常にメイン アクティビティがありますが、このアクティビティだけが起動されるわけではありません。1 つのアプリケーションに複数のアクティビティが含まれる場合があり、それらは個別に起動できます。メイン アクティビティには android:name="android.intent.category.LAUNCHER." が必要です。あなたの例では、唯一の主なアクティビティは次のとおりです

于 2013-03-19T16:21:09.373 に答える
1

apk ファイルを逆コンパイルします。ファイルを見つけてAndroidManifest.xml...ファイルを開き、intent-filter で構成されるアクティビティで始まる最初の行を見つけます....このアクティビティには通常のメイン アクティビティ名が含まれています...このコードでは、メイン アクティビティ名は MainActivity です

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lenovo.speech2sms">
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS"/>


<application
    android:allowBackup="true"
    android:icon="@mipmap/app_icon_256"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Main2Activity"
        android:screenOrientation="portrait" />
    <activity
        android:name=".Main3Activity"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".Main4Activity"
        android:screenOrientation="portrait">
    </activity>
</application> 

于 2017-06-02T09:09:56.843 に答える
1

このリンクは、それを行うための完璧な方法を提供します

http://code.google.com/p/robotium/wiki/RobotiumForAPKFiles

この場合、re-sign.jar ファイルで apk に再署名すると、apk ファイルの名前とアクティビティが表示されます。

于 2013-04-16T12:07:20.287 に答える
0

メインアクティビティは上記のXM1で定義されており、メインのインテントフィルターにリンクされます。

上記のコードの場合、それは以下に含まれます:

これは、アクティビティが「.activity.DropboxBrowser」であることを示しています。

「。」最初は、アプリケーションのパッケージ名を前に追加する必要があることを意味します。そのため、「xxx.xxx.activity.DropboxBrowser」のようになります。ここで、xxx.xxxは、Androidマニフェスト(またはpacakagemanagerで検索できます)

于 2013-03-19T16:10:32.093 に答える