Jacky0319
Jacky0319
采纳率0%
2016-04-09 09:48 阅读 1.3k

Android Studion (AS)相关版本对Project影响测试结论,亟盼大牛相助

5

这个问题我在一周内测试和各种网站查找资料,至少累计16小时,非常苦闷!

这个Project简单,来源于陈老师的一本书。
App启动后,点击{登陆} (pic 1), 应该显示 Pic3, 但我这里显示 Pic2 。
我开始是 一行行自己手动输入的, 恐怕有错, 找陈老师给了源代码Copy各个 .xml, .java,
但是结果都相同。

我 在 AS里 New>import 陈老师的Project, 提示 " Failed to sync Gradle projec ...." ,
按提示Download Gradel 和SDK 等后,运行App, 结果正常(Pic 3);
于是对比 Proect Structrue, 如图 (陈老师的AS1.3 吧?  pic 456 ) 我的 AS1.5.1 (pic 789, Gemotion version 5.0)
陈老师 我的AS1.5.1
project : Gradle Version 2.2.1 2.8
Properties: Complier sdk Verison API 21: Android 5.0 API 23:Android 6.0

Build Tools Version 21.1.2 23.0.2
Flavors: Min Sdk Version API 21:Android 5.0 19
Target Sdk Version API 21:Android 5.0 API 23:Android 6.0

 于是我进行了系列修改Project Structure 的测试,
1) 单独改变 Min SDK verion, 如API 21, API 23, 结果同样错误;
2) 同时改变 Min SDK verion 和 Target 如API 21 和21, API 23和23, 结果同样错误;
(注改变后Clern project, 否则不运行)
3) 单独改变 Properties: Complier sdk Verison, 如API 21,项目无法运行; 

4) 新建Project, 单独改变 Gradle Version, 如2.2 结果同样错误;
5) 尝试改变AndroidMainfest.xml的Application ,结果同样错误

结论: AS的兼容性极差。有许多不成熟!大力向微软的VS 学习。 
另外,发现运行什么都非常慢(包括Genymotion, Add 虚拟机30分钟才10%,干脆停了);用Eclips的转换要谨慎。
作了多年的VB/VS 开发,如风流畅。手机 开发都是这样慢吗?

 
 请教大牛:
1)上述 各种“version”有哪些区别?哪里可找到这个资料? 
2)如何修改才能运行正确?

问题3: 我 在下述第1行下断点, F8到第2行,再F8,F8,F8...不断冒出 “View.java, handler.java, looper.java 的各行, 这些都不是我写的,冒出来有什么用? (
显示Debuger 多复杂吗? 我根本不想见! }
F8 了半天,最后F9 ,才出来。 也没有错误提示,无法定位错误结果的原因!

// 跳转到首页
Intent intent = new Intent(MainActivity.this,SuccessActivity.class);
startActivity(intent);

附源代码。 多谢!! 
图片说明

[ 阿? 没有上传 rar 文件功能。 需要者,请联系我]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • android_freshman android_小路 2016-04-12 02:03

    1.首先你对
    Build Tools Version ,Min Sdk Version ,Target Sdk Version
    这3个概念不熟悉,各种尝试,为什么不先了解呢,http://stackoverflow.com/questions/24521017/android-gradle-buildtoolsversion-vs-compilesdkversion,你可以百度或者google 了解下,关键字吗,就上面的就可以。
    2.关于如何正确运行,你代码贴出来。。。详细点。还有错误提示。
    3.如果as 没有提示,可以手动用gradle 编译下,看看有没有错误提示,

    点赞 1 评论 复制链接分享
  • android_freshman android_小路 2016-04-12 02:03

    1.首先你对
    Build Tools Version ,Min Sdk Version ,Target Sdk Version
    这3个概念不熟悉,各种尝试,为什么不先了解呢,http://stackoverflow.com/questions/24521017/android-gradle-buildtoolsversion-vs-compilesdkversion,你可以百度或者google 了解下,关键字吗,就上面的就可以。
    2.关于如何正确运行,你代码贴出来。。。详细点。还有错误提示。
    3.如果as 没有提示,可以手动用gradle 编译下,看看有没有错误提示,

    点赞 评论 复制链接分享
  • Jacky0319 Jacky0319 2016-04-15 07:23

    谢谢这个Freshman, 这个代码Copy来的。在AS 1.5.1 下 import 老师的Project, 点Sync grdle 后, 项目就打开正常运行了。 我 New 个 Empty project ,
    然后 copy 老师的代码,就出现上述错误。 现 贴出 MainActivity.java,

    package com.example.app0501_5021p23;

    import android.app.Activity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.Toast;
    public class MainActivity extends Activity {
    private EditText userName; // 用户名
    private EditText password; // 密码
    private CheckBox autologin; // 是否自动登录复选框
    private Button btnLogin; // 登录按钮

    // 声明一个SharedPreferences用于保存数据
    private SharedPreferences spSettings = null;
    
    private static final String PREFS_NAME = "NamePwd";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        userName = (EditText)findViewById(R.id.et_username);
        password = (EditText)findViewById(R.id.et_password);
        autologin = (CheckBox)findViewById(R.id.cb_autologin);
        btnLogin = (Button) findViewById(R.id.btn_login);
        // 绑定组件事件
        setListener();
        // 获取数据
        getData();
    }
    
    /**
     * 为组件添加事件
     */
    private void setListener() {
        // 为登录按钮绑定事件
        btnLogin.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // 判断用户名和密码
                if ("admin".equals(userName.getText().toString())
                        && "123456".equals(password.getText().toString())) {
                    // 判断复选框是否选中
                    if (autologin.isChecked()) {
                        spSettings = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
                        // 得到Editor对象
                        Editor edit = spSettings.edit();
                        // 记录保存标记
                        edit.putBoolean("isKeep", true);
                        // 记录用户名
                        edit.putString("username", userName.getText().toString());
                        // 记录密码
                        edit.putString("password", password.getText().toString());
    

    // edit.commit(); // 提交
    edit.apply();
    } else {
    spSettings = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
    // 得到Editor对象
    Editor edit = spSettings.edit();
    // 记录保存标记
    edit.putBoolean("isKeep", false);
    // 记录用户名
    edit.putString("username", "");
    // 记录密码
    edit.putString("password", "");
    // edit.commit(); // 提交
    edit.apply();
    }
    // 跳转到首页
    Intent intent = new Intent(MainActivity.this,SuccessActivity.class);
    startActivity(intent);
    } else {
    // 显示错误提示
    Toast.makeText(getApplicationContext(), "用户名或密码错误",
    Toast.LENGTH_SHORT).show();
    }
    }
    });
    }

    @Override
    protected void onResume() {
        // 在界面显示数据之前得到之前存储的数据
        super.onResume();
        getData();
    }
    
    /**
     * 获取存储的数据
     */
    private void getData() {
        // 得到sharedpreferences对象
        spSettings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
        // 判断是否之前存储过用户名密码
        if (spSettings.getBoolean("isKeep", false)) {
            // 如果之前存储过,则显示在相应文本框内
            userName.setText(spSettings.getString("username", ""));
            password.setText(spSettings.getString("password", ""));
        } else {
            // 否则显示空
            userName.setText("");
            password.setText("");
        }
    }
    

    }

    
    
    点赞 评论 复制链接分享
  • Jacky0319 Jacky0319 2016-04-15 07:27

    我 Build>make project, 没有错误提示。

    程序运行 打开了 SuccessActiviy, 只是 没有 Toast " 登陆成功“,而是显示了空白的 "New text"

    点赞 评论 复制链接分享

相关推荐