我一直在寻找一周左右的时间来实现我想到的方法.我已经看过很多关于所有这些不同方法的文章,但我仍然感到困惑,所以我希望有人可以传播他们对这些主题的知识,这样我就可以更轻松地创建我追捧的方法和在Android中实现它.
我的"追捧"方法:
显然你可以用四种方式去做:
由于我对安全性和Java整体都很陌生,所以我想知道是否有人能够最终对所有这些做出明确的解释.
以下是我尝试在4种不同的编程方法中实现我所追求的方法(如上所述)的方法.如果我不知道它是什么,因为我无法弄清楚各自的文件.请随时纠正我.
public byte[] returnPublicKeyInBytes() throws NoSuchAlgorithmException {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048);
KeyPair keyPair = kpg.genKeyPair();
byte[] pri = keyPair.getPrivate().getEncoded();
byte[] pub = keyPair.getPublic().getEncoded();
return pub;
}
Run Code Online (Sandbox Code Playgroud)
public byte[] returnPublicKeyInBytes() throws NoSuchAlgorithmException {
RSAKeyPairGenerator r = new RSAKeyPairGenerator();
r.init(new KeyGenerationParameters(new SecureRandom(),4096));
AsymmetricCipherKeyPair keys = r.generateKeyPair();
CipherParameters pri = keys.getPrivate();
CipherParameters pub = keys.getPublic();
byte[] pubbyte = pub.toString().getBytes();
return pubbyte; //NOT WORKING …Run Code Online (Sandbox Code Playgroud) 我有一个显示"Hello World"的Android项目.它是从Android Studio的"空白活动"模板创建的.
然后我在我的应用程序包中添加/创建一个新的java类(与我的活动相同的包).我称之为Shape并添加一个简单的构造函数
public class Shape {
public Shape(int i){
if (i==0){
throw new IllegalArgumentException("Cant have 0");
}
}
}
Run Code Online (Sandbox Code Playgroud)
大.现在我有一个完全没有触及Android的课程,我想对它进行单元测试.接下来我该怎么办?
这是我的问题停止的地方.下面我将介绍我尝试过的内容.


我写了我的考试
package com.eghdk.getjunit4towork;
import org.junit.Test;
import static org.junit.Assert.*;
public class ShapeTest {
@Test(expected = IllegalArgumentException.class)
public void testShapeWithInvalidArg() {
new Shape(0);
}
}
Run Code Online (Sandbox Code Playgroud)此时,我不确定如何运行我的测试,但尝试这样做:

我跑步时遇到这些错误
错误:(3,17)Gradle:错误:包org.junit不存在
错误:(5,24)Gradle:错误:包org.junit不存在
错误:(8,6)Gradle:错误:找不到符号课堂考试
我基本上是有一个自定义IdlingResource,需要一个View构造函数的参数.我找不到真正谈论如何实现它的任何地方.
我正在尝试使用这个答案:https://stackoverflow.com/a/32763454/1193321
正如你所看到的,它需要一个ViewPager,但是当我IdlingResource在我的测试课程中注册时,我不确定如何获得我的观点.
我已经尝试了findViewById(),我已经尝试了当前正在运行的活动然后调用findViewById()它,没有运气.
任何人都知道在这种情况下该怎么做?
我花了一些时间把头包裹在碎片上,但这应该是我关于碎片的最后一个问题,因为我认为我只是让它们失效了.我知道这是一堆乱七八糟的代码.但我很感激帮助,以确保我没有破坏任何碎片的基本规则.
我将发布我的所有代码,看看是否有人可以"查看它",看看我是否犯了重大错误,或者我是否应该采用更简单的方法.最后,正如标题中所述,我的片段没有被替换......它被添加到顶部.
文件树:

MainActivity.java:
package com.example.learn.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
public class MainActivity extends FragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/* Add a class to handle fragment */
public static class SSFFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout …Run Code Online (Sandbox Code Playgroud) 我被困在这几天了.我的布局中有一个autoCompleteTextView和一个50/50的按钮.自动完成功能正常,但建议只占屏幕的一半(相当于我的textView占用的大小).我怎么能改变它来占据整个宽度?
原谅我糟糕的油漆技巧:
Blue = AutoCompleteTextView Red =所需的自动填充建议
这似乎是一个微不足道的问题,但只是将宽度更改为fill_parent不起作用.任何想法xml或编程?

编辑: 我的第一个问题似乎已经解决,但现在如果我切换我的按钮和我的autoCompleteTextView我得到另一个奇怪的问题.宽度从textView开始的位置开始.让我有一个不可取的结果.

我想创建一个缩放的位图,但我似乎得到了一个不成比例的图像.它看起来像一个正方形,而我想成为矩形.
我的代码:
Bitmap resizedBitmap = Bitmap.createScaledBitmap(myBitmap, 960, 960, false);
Run Code Online (Sandbox Code Playgroud)
我希望图像的最大值为960.我该怎么做?设置宽度null不编译.它可能很简单,但我无法绕过它.谢谢
我曾经有过以下项目风味:
最初唯一的区别是applicationId/packageName.现在有一个不同的java文件.准确地说是自定义ArrayAdapter.解决方案是创建src/Apple和src/Orange继承src/main.我删除从Java文件src/main并把拷贝到src/Apple和src/Orange和适当修改它.世界上一切都很好.
快进几周,现在大约有10个不同的Apple和Orange之间的java文件.再说......没什么大不了的.易于操作.在src/Apple和中分隔java文件src/Orange.
快进到今天.我需要稍微修改一下,因为我希望每个都有免费的高级版本.免费版和高级版仅因URL而异.我打算简单地创建一个名为的新类型:
我有一个困境.从现在起src/Apple,src/Orange有10个不同的文件已被更改...如果我更改任何java文件,AppleFree我必须确保我做同样的事情ApplePremium.我有点处于十字路口,希望我的问题在这一点上有意义.我提出了三种可能的解决方案,但我不确定如何实现它们/什么是正确的方法/解决方案不是我想要的.
使用if语句
if (BuildConfig.FLAVOR==appleFree) {//use free Url} else {// use premium url}
问题:两个Urls在技术上都编译成了apk.我不想要这个.
让src/AppleFree和src/ApplePremium以某种方式从src/Apple父目录继承.
问题:不知道我会怎么做.
在build.gradle中添加免费和高级网址是这样的吗?
productFlavors {
appleFree {
applicationId "com.example.apple.free"
versionName "1.0"
url "http://freeurl.com"
versionCode 1
}
applePremium {
applicationId "com.example.apple.premium"
versionName "1.0"
url "http://premiumurl.com"
versionCode 1 …Run Code Online (Sandbox Code Playgroud) android gradle android-studio build.gradle android-gradle-plugin
我一直试图在Android中设置一个全息主题,但我无法让它识别它.有任何想法吗?
张贴是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:theme="@android:style/Theme.Holo">
<activity
android:name=".TestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
@android:style/Theme.Holo即使我将minSdkVersion更改为11,它也会给我一条红线.任何想法?
我改了行<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>,以<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>我仍然得到同样的错误.
这最终导致我的目标api在清单中正确指定,但在项目属性中没有.很奇怪,但现在还好.
我正在尝试更改Android中交换机的颜色.我意识到我需要新的9件.我去了http://android-holo-colors.com/并选择了我的颜色并选择了(Switch Jelly Bean).要使用Switch Jelly Bean,我必须使用:https://github.com/BoD/android-switch-backport.要将它导入我的项目,我必须添加:
<item name="switchStyle">@style/Widget.Holo.CompoundButton.Switch</item>
到我的样式,然后在xml我必须像这样使用开关:
<org.jraf.android.backport.switchwidget.Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
现在用开关的一切工作正常.接下来,我从android全息颜色生成器输出所有内容并将其放入正确的文件中:
然后我添加到我的xml:
<org.jraf.android.backport.switchwidget.Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/apptheme_switch_inner_holo_light"
android:track="@drawable/apptheme_switch_track_holo_light" />
但它仍然是原始的蓝色.我相信我正在做的一切正确.一切都编译(xml,java).注意:我org.jraf.android.backport.switchwidget.Switch也在我的java中导入.有任何想法吗?
我尝试./gradlew从Android项目目录运行,但是我得到一个错误:
错误:JAVA_HOME设置为无效目录:/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
请在您的环境中设置JAVA_HOME变量以匹配Java安装的位置.
导航到/Library/Java/JavaVirtualMachines.jdk1.8.0_11.jdk存在,但也存在jdk1.7.0_79.jdk
which java 打印出来 /usr/bin/java
printenv 版画
...
JAVA_HOME =/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home JDK_HOME =/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
...
javac -version 版画 javac 1.8.0_11
which javac 版画 /usr/bin/javac
android ×10
java ×9
gradle ×2
xml ×2
bitmap ×1
bouncycastle ×1
build.gradle ×1
junit ×1
macos ×1
rsa ×1
security ×1
unit-testing ×1