Android应用程序可在模拟器上运行,但无法安装在我的手机上

约翰

我在教自己编写Android应用程序,我写了一个简单的小费计算器作为入门项目。该程序可以在模拟器上正常运行,但是当我导出apk文件时,它不会安装在我的手机上。我用adb传输了文件,因为adb不会检测到该设备。我在ubuntu 12.04上,我在udev规则中有供应商代码,设备是Huawei Ascend(M860),我如何才能找到发生问题的日志。或我做错了什么的想法。

这是主要的Java文件:

package com.groundscore.gstipcalc;

import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class MainActivity extends Activity {

// Constants used when saving and restoring

private static final String TOTAL_BILL = "TOTAL_BILL";
private static final String CURRENT_TIP = "CURRENT_TIP";
private static final String BILL_WITHOUT_TIP = "BILL_WITHOUT_TIP";

private double billBeforeTip;   // Users bill before tip
private double tipAmount;   // Tip amount
private double finalBill;   // Bill plus Tip

EditText billBeforeTipET;
EditText tipAmountET;
EditText finalBillET;

SeekBar tipSeekBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);// Inflate the GUI

    // Check if app just started, or if it is being restored        
    if(savedInstanceState == null){

        billBeforeTip = 0.0;
        tipAmount = .15;
        finalBill = 0.0;

    } else {
        // App is being restored

        billBeforeTip = savedInstanceState.getDouble(BILL_WITHOUT_TIP);
        tipAmount = savedInstanceState.getDouble(CURRENT_TIP);
        finalBill = savedInstanceState.getDouble(TOTAL_BILL);

    }

    // Initialize the EditTexts

    billBeforeTipET = (EditText) findViewById(R.id.billEditText);
    tipAmountET = (EditText) findViewById(R.id.tipEditText);
    finalBillET = (EditText) findViewById(R.id.finalEditText);

    tipSeekBar = (SeekBar) findViewById(R.id.changeTipSeekBar);

    tipSeekBar.setOnSeekBarChangeListener(tipSeekBarChangeListener);

    billBeforeTipET.addTextChangedListener(billBeforeTipListener);

}

private OnSeekBarChangeListener tipSeekBarChangeListener = new OnSeekBarChangeListener(){

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {

        tipAmount = (tipSeekBar.getProgress()) * .01;

        tipAmountET.setText(String.format("%.02f", tipAmount));

        updateTipAndFinalBill();

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }


};

private TextWatcher billBeforeTipListener = new TextWatcher(){

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }


    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        try{

            billBeforeTip = Double.parseDouble(s.toString());
        }catch(NumberFormatException e){

            billBeforeTip = 0.0;
        }

        updateTipAndFinalBill();

    }


};



private void updateTipAndFinalBill() {

    double tipAmount = Double.parseDouble(tipAmountET.getText().toString());

    double finalBill = billBeforeTip + (billBeforeTip * tipAmount);

    finalBillET.setText(String.format("%.02f", finalBill));
}

protected void onSaveInstanceState(Bundle outState){

    super.onSaveInstanceState(outState);

    outState.putDouble(TOTAL_BILL, finalBill);
    outState.putDouble(CURRENT_TIP, tipAmount);
    outState.putDouble(BILL_WITHOUT_TIP, billBeforeTip);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

这是布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context=".GsTipCalc" >

<TextView
    android:id="@+id/billTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="22dp"
    android:layout_marginTop="15dp"
    android:text="@string/bill_text_view" >
</TextView>

<EditText
    android:id="@+id/billEditText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="5"
    android:hint="@string/bill_edit_text"
    android:inputType="numberDecimal"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="11dp"
    android:layout_alignParentTop="true"
    android:layout_marginTop="38dp" />

<EditText
    android:id="@+id/finalEditText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/changeTipSeekBar"
    android:layout_alignLeft="@+id/billTextView"
    android:ems="5"
    android:hint="@string/bill_edit_text"
    android:inputType="numberDecimal" />

<TextView
    android:id="@+id/finalTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/finalEditText"
    android:layout_alignLeft="@+id/finalEditText"
    android:text="@string/final_text_view" />

<TextView
    android:id="@+id/tipTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/tipEditText"
    android:layout_alignLeft="@+id/tipEditText"
    android:text="@string/tip_text_view" />

<SeekBar
    android:id="@+id/changeTipSeekBar"
    android:layout_width="89dp"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/tipEditText"
    android:layout_marginRight="37dp"
    android:layout_marginTop="84dp"
    android:progress="15" />

<EditText
    android:id="@+id/tipEditText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/billEditText"
    android:layout_alignBottom="@+id/billEditText"
    android:layout_alignLeft="@+id/changeTipSeekBar"
    android:ems="3"
    android:inputType="numberDecimal"
    android:text="@string/tip_edit_text" />

<TextView
    android:id="@+id/SlideTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/finalEditText"
    android:layout_alignLeft="@+id/changeTipSeekBar"
    android:text="@string/change_tip_text_view" />

</RelativeLayout>

这是从安装尝试中读取的Logcat:

I/ActivityManager( 7588): Starting: Intent { dat=file:///mnt/sdcard/GsTipCalc.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) } from pid 14921
I/ActivityManager( 7588): Displayed com.android.packageinstaller/.InstallAppProgress: +347ms
D/dalvikvm(14940): GC_EXPLICIT freed 4K, 50% free 2696K/5379K, external 0K/0K, paused 275ms
W/ActivityManager( 7588): No content provider found for: 
D/VoldCmdListener(  207): asec list
I/PackageHelper(14940): Size of container 2 MB 234323 bytes
D/VoldCmdListener(  207): asec create smdl2tmp1 2 fat {} 10022
W/logwrapper(14978): Unable to background process (No such file or directory)
I//system/bin/newfs_msdos(  207): /system/bin/newfs_msdos: warning, /dev/block/dm-2 is not a character device
I//system/bin/newfs_msdos(  207): /system/bin/newfs_msdos: Skipping mount checks
I//system/bin/newfs_msdos(  207): Bogus heads from kernel - setting sane value
I//system/bin/newfs_msdos(  207): Bogus sectors from kernel - setting sane value
I//system/bin/newfs_msdos(  207): /dev/block/dm-2: 4176 sectors in 522 FAT32 clusters (4096 bytes/cluster)
I//system/bin/newfs_msdos(  207): bps=512 spc=8 res=32 nft=2 sec=4221 mid=0xf0 spt=63 hds=64 hid=0 bspf=5 rdcl=2 infs=1 bkbs=2
I/Vold    (  207): Filesystem formatted OK
D/VoldCmdListener(  207): asec path smdl2tmp1
I/PackageHelper(14940): Created secure container smdl2tmp1 at /mnt/asec/smdl2tmp1
I/DefContainer(14940): Created container for smdl2tmp1 at path : /mnt/asec/smdl2tmp1
I/DefContainer(14940): Copied /mnt/sdcard/GsTipCalc.apk to /mnt/asec/smdl2tmp1/pkg.apk
D/VoldCmdListener(  207): asec finalize smdl2tmp1
I/DefContainer(14940): Finalized container smdl2tmp1
I/DefContainer(14940): Unmounting smdl2tmp1 at path /mnt/asec/smdl2tmp1
D/dalvikvm(14940): GC_EXPLICIT freed 17K, 50% free 2695K/5379K, external 0K/0K, paused 71ms
D/dalvikvm( 7588): GC_EXPLICIT freed 227K, 38% free 6615K/10631K, external 609K/1800K, paused 169ms
D/VoldCmdListener(  207): asec unmount smdl2tmp1 force
W/ActivityManager( 7588): No content provider found for: 
D/VoldCmdListener(  207): asec mount smdl2tmp1 {} 1000
D/VoldCmdListener(  207): asec path smdl2tmp1
D/PackageParser( 7588): Scanning package: /mnt/asec/smdl2tmp1/pkg.apk
E/PackageParser( 7588): Package com.groundscore.gstipcalc has no certificates at entry res/layout/activity_main.xml; ignoring!
I/PackageHelper( 7588): Forcibly destroying container smdl2tmp1
D/dalvikvm( 7588): GC_EXPLICIT freed 135K, 39% free 6530K/10631K, external 609K/1800K, paused 169ms
D/VoldCmdListener(  207): asec destroy smdl2tmp1 force
D/dalvikvm( 7588): GC_EXPLICIT freed 14K, 39% free 6528K/10631K, external 609K/1800K, paused 245ms

我认为您可能使用了“项目右键单击-> Android工具->导出未签名的应用程序包”,并且无意间创建了未签名的APK。未签名的APK将不会在模拟器或实际设备上运行。当您从Eclipse到模拟器运行应用程序时,APK会用调试证书签名,因此,APK仍会被签名。

将APK传输到设备的最快方法是转到dir / bin,那里应该有一个APK,可以刷新您所做的所有更改并在模拟器上运行更改。

参考1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:应用程序在模拟器上运行,但在我的手机上崩溃

来自分类Dev

应用程序可在模拟器上运行,但无法在我的设备上运行

来自分类Dev

应用程序在手机上崩溃,但在模拟器上运行平稳

来自分类Dev

应用程序可在模拟器上运行,但不能在真实手机上运行,同时从存储设置位图图像(专辑艺术)

来自分类Dev

Android应用程序可以在真实手机上运行,但不能在模拟器上运行-Android开发吗?

来自分类Dev

Ionic应用程序可在浏览器上正常运行,但无法在手机中打开

来自分类Dev

引导接收器可在模拟器上运行,但不能在Android实际手机上

来自分类Dev

科尔多瓦 - XHR在模拟器Android的工作请求,但无法在手机上

来自分类Dev

iOS(Swift)-投射应用程序委托窗口的根视图控制器可在模拟器中运行,但在手机上加载应用程序时失败

来自分类Dev

应用程序已安装在Android Lollipop上,但无法运行

来自分类Dev

为什么我的应用程序在手机上崩溃,但在AVD模拟器上却没有崩溃?

来自分类Dev

Android DatePicker:安装后,以前的日期不会在我的手机上禁用,但可以在模拟器上正常运行

来自分类Dev

我的客户端服务器应用程序在eclipse模拟器中运行,但不在真正的android手机中运行

来自分类Dev

XCode:应用程序无法在模拟器上运行

来自分类Dev

XCode 5.1.1在设备上运行应用程序时冻结,可在模拟器上运行

来自分类Dev

SQLite和代号可在模拟器上使用,但不能在我的手机上使用

来自分类Dev

ApI AI 应用程序在网络模拟器上运行良好,但不适用于 Android 手机

来自分类Dev

无法在 Android 模拟器上运行应用程序:运行 AVD 需要 kvm 错误消息

来自分类Dev

当我在模拟器上运行时,我的Android应用程序意外停止

来自分类Dev

无法使用beeware(newbie)为我的Android应用程序运行模拟器

来自分类Dev

Android Studio 无法在模拟器上运行应用程序

来自分类Dev

应用程序在我的真机中崩溃,但在 Android 模拟器上运行良好

来自分类Dev

如果手机上安装了数据包捕获或任何嗅探器,则阻止 android 应用程序运行

来自分类Dev

是否有可能使移动应用程序在网络上运行?并且可以安装在手机上吗?

来自分类Dev

在运行 Android 7.0 (API 24) 的模拟器中运行的 Android 应用程序在运行 Android 4.4 (API 19) 的手机中崩溃

来自分类Dev

上传图片文件可在模拟器上运行,但无法在设备上运行

来自分类Dev

在手机上安装后无法运行应用程序

来自分类Dev

Android Studio:在手机上调试应用程序时图像不会显示,但在模拟器上会显示

来自分类Dev

未在Android手机上安装应用程序

Related 相关文章

  1. 1

    Android:应用程序在模拟器上运行,但在我的手机上崩溃

  2. 2

    应用程序可在模拟器上运行,但无法在我的设备上运行

  3. 3

    应用程序在手机上崩溃,但在模拟器上运行平稳

  4. 4

    应用程序可在模拟器上运行,但不能在真实手机上运行,同时从存储设置位图图像(专辑艺术)

  5. 5

    Android应用程序可以在真实手机上运行,但不能在模拟器上运行-Android开发吗?

  6. 6

    Ionic应用程序可在浏览器上正常运行,但无法在手机中打开

  7. 7

    引导接收器可在模拟器上运行,但不能在Android实际手机上

  8. 8

    科尔多瓦 - XHR在模拟器Android的工作请求,但无法在手机上

  9. 9

    iOS(Swift)-投射应用程序委托窗口的根视图控制器可在模拟器中运行,但在手机上加载应用程序时失败

  10. 10

    应用程序已安装在Android Lollipop上,但无法运行

  11. 11

    为什么我的应用程序在手机上崩溃,但在AVD模拟器上却没有崩溃?

  12. 12

    Android DatePicker:安装后,以前的日期不会在我的手机上禁用,但可以在模拟器上正常运行

  13. 13

    我的客户端服务器应用程序在eclipse模拟器中运行,但不在真正的android手机中运行

  14. 14

    XCode:应用程序无法在模拟器上运行

  15. 15

    XCode 5.1.1在设备上运行应用程序时冻结,可在模拟器上运行

  16. 16

    SQLite和代号可在模拟器上使用,但不能在我的手机上使用

  17. 17

    ApI AI 应用程序在网络模拟器上运行良好,但不适用于 Android 手机

  18. 18

    无法在 Android 模拟器上运行应用程序:运行 AVD 需要 kvm 错误消息

  19. 19

    当我在模拟器上运行时,我的Android应用程序意外停止

  20. 20

    无法使用beeware(newbie)为我的Android应用程序运行模拟器

  21. 21

    Android Studio 无法在模拟器上运行应用程序

  22. 22

    应用程序在我的真机中崩溃,但在 Android 模拟器上运行良好

  23. 23

    如果手机上安装了数据包捕获或任何嗅探器,则阻止 android 应用程序运行

  24. 24

    是否有可能使移动应用程序在网络上运行?并且可以安装在手机上吗?

  25. 25

    在运行 Android 7.0 (API 24) 的模拟器中运行的 Android 应用程序在运行 Android 4.4 (API 19) 的手机中崩溃

  26. 26

    上传图片文件可在模拟器上运行,但无法在设备上运行

  27. 27

    在手机上安装后无法运行应用程序

  28. 28

    Android Studio:在手机上调试应用程序时图像不会显示,但在模拟器上会显示

  29. 29

    未在Android手机上安装应用程序

热门标签

归档